Вход | Регистрация

1С:Предприятие ::

Метки: 

Обновить поля для вывода после программного выбора макета СКД

Я
   kIR
 
21.06.18 - 15:46
Доброго дня!
СКД на обычных формах
В зависимости от выбранных галок на форме по нажатию кнопки "Сформировать" выбирается та или иная схема компоновки данных. Но, почему то, выводятся только те поля, которые есть в макете по умолчанию. Как можно обновить набор выводимых полей при выводе того или иного макета?
При этом на форме указываются параметры, которые формируют отборы в КомпоновщикНастроек.Настройки.Отбор, они тоже должны сохраняться

Спасибо
 
 
   kIR
 
1 - 21.06.18 - 16:01
Пробовал использовать код

КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);

Но при этом параметры, внесенные пользователем - затираются
   aleks_default
 
2 - 21.06.18 - 16:10
ну правильно, это ж настройки по умолчанию
вот тут пользовательские КомпоновщикНастроек.ПолучитьНастройки()
   kIR
 
3 - 21.06.18 - 16:29
(2) так там же и поля ненужные мне(
   aleks_default
 
4 - 21.06.18 - 16:49
тогда я не понял ничего. Тебе нужно чтобы для одного отчета сохранялись пользовательские настройки двух разных схем?
   kIR
 
5 - 21.06.18 - 17:14
(4) да. Там по сути галками выбираются увеличенные схемы, с большей информацией
   kIR
 
6 - 21.06.18 - 17:44
Не знаю, может кривое решение, но тогда подскажите,как оптимизировать. Пока так сделал
   kIR
 
7 - 21.06.18 - 17:44
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    
    Для Каждого Элемент из Настройки.ПараметрыДанных.Элементы Цикл
        Если Не Элемент.Использование Тогда Продолжить; КонецЕсли;
        КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(Элемент.Параметр,Элемент.Значение);
    КонецЦикла;
    
    Для каждого Элемент из Настройки.Отбор.Элементы Цикл
        Если Не Элемент.Использование Тогда Продолжить; КонецЕсли;
        
        Для Каждого ЭлементОтбора из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
            
            Если ЭлементОтбора.ЛевоеЗначение = Элемент.ЛевоеЗначение Тогда
                ЭлементОтбораДанных = Элемент.ЛевоеЗначение;
                
                ЭлементОтбора.ВидСравнения = Элемент.ВидСравнения;
                ЭлементОтбора.Использование = Истина;
                ЭлементОтбора.ПравоеЗначение = Элемент.ПравоеЗначение;
            КонецЕсли;
        КонецЦикла;
        
        Если ЭлементОтбораДанных = Неопределено Тогда
            ЭлементОтбораДанных = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбораДанных.ЛевоеЗначение = Элемент.ЛевоеЗначение;
            ЭлементОтбораДанных.ВидСравнения = Элемент.ВидСравнения;
            ЭлементОтбораДанных.ПравоеЗначение = Элемент.ПравоеЗначение;
        КонецЕсли;
    КонецЦикла;


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует