Имя: Пароль:
1C
1С v8
v8: отчет (упр. приложение) - аналог кнопки "Установить стандартные настройки"
0 Сниф
 
15.10.12
10:19
Демонстрационная конфигурация "Библиотека стандартных подсистем".
В любом отчете - жмем кнопку "Изменить вариант", меняем вариант, завершаем редактирование. И далее, чтобы настройки из варианта попали в пользовательские настройки, надо нажать кнопку "Установить стандартные настройки". Киньте, пожалуйста, пример кода, как это действие выполнить программно.
1 GANR
 
15.10.12
10:28
(0) Шо, опять?
2 Сниф
 
15.10.12
10:39
(1) вопрос опять по СКД, но про другое.
3 Сниф
 
15.10.12
20:17
не едут лыжи.
4 БалбесВ1с
 
15.10.12
20:29
(3)Или ты ...
5 Сниф
 
15.10.12
20:50
Получился такой рабочий код изменения вариант. Осталось, думаю, перебрать элементы коллекции НовыйНастройки.Элементы и втулить их в ПользовательскиеНастройки.

&НаКлиенте
Процедура ИзменитьВариант(Команда)

   ФормаНастроек = ПолучитьФорму("Отчет.ТоварыНаСкладах.Форма.ФормаВарианта");
   ФормаНастроек.Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Отчет.КомпоновщикНастроек.Настройки);
   
   Рез = ФормаНастроек.ОткрытьМодально();
   Если Рез = Истина Тогда
       
       НовыеНастройки = ФормаНастроек.Отчет.КомпоновщикНастроек.Настройки;
       УстановитьНастройки(НовыеНастройки);        
   КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура УстановитьНастройки(НовыеНастройки)
   
   ОбъектОтчет = РеквизитФормыВЗначение("Отчет");
   ОбъектОтчет.КомпоновщикНастроек.ЗагрузитьНастройки(НовыеНастройки);
   ЗначениеВРеквизитФормы(ОбъектОтчет, "Отчет");

КонецПроцедуры // УстановитьСхемуКомпановкиНаСервере()
6 Сниф
 
15.10.12
23:19
Установка пользовательский настроек при изменении варианта в окончательном виде:

&НаКлиенте
Процедура ИзменитьВариант(Команда)
   
   ФормаНастроек = ПолучитьФорму("Отчет.ТоварыНаСкладах.Форма.ФормаВарианта");
   ФормаНастроек.Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Отчет.КомпоновщикНастроек.Настройки);
   
   Рез = ФормаНастроек.ОткрытьМодально();
   Если Рез = Истина Тогда
       
       НовыеНастройки = ФормаНастроек.Отчет.КомпоновщикНастроек.Настройки;
       УстановитьНастройки(НовыеНастройки);        
   КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура УстановитьНастройки(НовыеНастройки)
   
   ОбъектОтчет = РеквизитФормыВЗначение("Отчет");
   ОбъектОтчет.КомпоновщикНастроек.ЗагрузитьНастройки(НовыеНастройки);
   
   ПользовательскиеНастройки = ОбъектОтчет.КомпоновщикНастроек.ПользовательскиеНастройки;
   Для каждого ПользНастройка Из ПользовательскиеНастройки.Элементы Цикл
       
       ИД_ПользНастройки = ПользНастройка.ИдентификаторПользовательскойНастройки;
       
       Если ТипЗнч(ПользНастройка) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
           Для каждого Настройка Из НовыеНастройки.ПараметрыДанных.Элементы Цикл
               Если Настройка.ИдентификаторПользовательскойНастройки = ИД_ПользНастройки Тогда
                   ПользНастройка.Использование    = Настройка.Использование;
                   ПользНастройка.Значение        = Настройка.Значение;
                   Прервать;
               КонецЕсли;
           КонецЦикла;
       ИначеЕсли ТипЗнч(ПользНастройка) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
           Для каждого Настройка Из НовыеНастройки.Отбор.Элементы Цикл
               Если Настройка.ИдентификаторПользовательскойНастройки = ИД_ПользНастройки Тогда
                   ПользНастройка.Использование = Настройка.Использование;
                   ПользНастройка.ПравоеЗначение= Настройка.ПравоеЗначение;
                   Прервать;
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
   КонецЦикла;
   
   ЗначениеВРеквизитФормы(ОбъектОтчет, "Отчет");
КонецПроцедуры // УстановитьНастройки
7 GANR
 
16.10.12
18:20
О... Кстати. Так бы сразу и спросил в (0) "Как программно перенести пользовательские настройки в настройки отчета?". (6) Вот только коллекцию НовыеНастройки.Отбор.Элементы следует обходить рекурсивно, так как в отборах могут быть ещё и группы И / ИЛИ / НЕ неопределенного уровня вложенности.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс