Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Смена Схемы СКД обновление полей настроек. Глюк или отсутствие метода?

Смена Схемы СКД обновление полей настроек. Глюк или отсутствие метода?
Я
   ejiki
 
04.10.16 - 10:57
При смене схемы СКД пишу

[1c] ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
    
    //Копируем пользовательские настройки и последние настройки варианта по которым будем искать
    ПрошлыеНастройки = ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки;
    ПоследниеНастройкиВарианта = ОтчетОбъект.КомпоновщикНастроек.Настройки;
        
    Если ВариантОтчета="0" Тогда
        СхемаКД = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    ИначеЕсли ВариантОтчета="1" Тогда
        СхемаКД = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных0");
    ИначеЕсли ВариантОтчета="2" Тогда
        СхемаКД = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    ИначеЕсли ВариантОтчета="3" Тогда
        СхемаКД = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных0");    
    КонецЕсли;
    
    ОтчетОбъект.СхемаКомпоновкиДанных = СхемаКД;
        
    АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКД,УникальныйИдентификатор);
    ОтчетОбъект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
    
    ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКД.НастройкиПоУмолчанию);
    
// тут я копирую пользовательские настройки из одной схемы в другую
    ЗапихнутьВПользовательскиеНастройки(ОтчетОбъект,ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки,ПрошлыеНастройки,ОтчетОбъект.КомпоновщикНастроек.Настройки);
    
    ЗначениеВРеквизитФормы(ОтчетОбъект,"Отчет");

[/1c]

В случае если копирую и заполняю пользовательские настройки то на форме отчета после выбора схемы не обновляются поля параметров и отборов. Если закомментировать копирование настроек, а именно процедуру "ЗапихнутьВПользовательскиеНастройки" то поля обновляются на форме.

Зато если щелкнуть по флажку активности отбора или параметра то поля автоматически обновляются.

ЧЯДНТ?!
 
 
   ejiki
 
1 - 04.10.16 - 12:51
Апну ка я тему
   Cyberhawk
 
2 - 04.10.16 - 12:53
ЗапихнутьВПользовательскиеНастройки где лежит?
   ejiki
 
3 - 04.10.16 - 12:56
&НаСервере
Процедура ЗапихнутьВПользовательскиеНастройки(Отчет,ТекущиеНастройки,ПрошлыеНастройки,ПоследниеНастройкиВарианта)
    
    Если  ПрошлыеНастройки=неопределено тогда
        Возврат;
    КонецЕсли;    
    
    Для каждого ЭлементНастройки из ПрошлыеНастройки.Элементы цикл
        
        Если ТипЗнч(ЭлементНастройки)=Тип("ЗначениеПараметраНастроекКомпоновкиДанных") тогда
            Для каждого ЭлементТекущейНастройки из ТекущиеНастройки.Элементы цикл
                Если ТипЗнч(ЭлементТекущейНастройки)=Тип("ЗначениеПараметраНастроекКомпоновкиДанных") тогда
                    
                    Если СокрЛП(ЭлементНастройки.Параметр)=СокрЛП(ЭлементТекущейНастройки.Параметр) тогда
                        ЭлементТекущейНастройки.Использование = ЭлементНастройки.Использование;
                        ЭлементТекущейНастройки.Значение      = ЭлементНастройки.Значение;
                    КонецЕсли;
                    
                КонецЕсли;
            КонецЦикла;    
        КонецЕсли;    
        
        Если  ПоследниеНастройкиВарианта=неопределено тогда
            Возврат;
        КонецЕсли;    
        
        Если ТипЗнч(ЭлементНастройки)=Тип("ЭлементОтбораКомпоновкиДанных") тогда
            
             ИмяПараметра  = НайтиИмяПараметраОтбора(ПоследниеНастройкиВарианта,ЭлементНастройки.ИдентификаторПользовательскойНастройки);
             ПользовательскийОтбор = ПолучитьПользовательскуюНастройкуОтбора(Отчет,ИмяПараметра);
             
             Если ПользовательскийОтбор=неопределено тогда
                 продолжить;
             КонецЕсли;     
             
            ПользовательскийОтбор.Использование  = ЭлементНастройки.Использование;
            ПользовательскийОтбор.ВидСравнения   = ЭлементНастройки.ВидСравнения;
            ПользовательскийОтбор.ПравоеЗначение = ЭлементНастройки.ПравоеЗначение;
             
        КонецЕсли;    
        
    КонецЦикла;    
    
КонецПроцедуры

   ejiki
 
4 - 04.10.16 - 12:57
(2) вот примерно так выполняю. Это все на форме отчета.
   Cyberhawk
 
5 - 04.10.16 - 14:00
Передавай в эту процедуру Отчет через Знач
   aleks_default
 
6 - 04.10.16 - 14:03
Есть же вроде метод ЗагрузитьПользовательскиеНастройки()
   ejiki
 
7 - 05.10.16 - 04:01
(6) Это только в том случае пройдет если состав настройки соответствует. А у меня схемы различаются на один параметр и ЗагрузитьПользовательскиеНастройки() выдает ошибку.

(5) Сейчас попробую, спасибо!
   ejiki
 
8 - 05.10.16 - 04:39
(5) нет) увы не получилось) пробовал всё: Знач в процедуре, само копирование засунуть в эту процедуру.

Как итог все так же, на форме чтобы увидеть обновленный список настроек нужно нажать "галочку" любого из параметров/отборов.
   ejiki
 
9 - 05.10.16 - 08:02
КАК же обновить измененные параметры и отборы в окне пользовательских настроек?)

Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.