Имя: Пароль:
1C
1С v8
СКД Программно сформовать вариант отчета
0 kislitsin
 
15.10.18
09:12
Доброго дня коллеги, помогите кто знает.
У меня  отчет по внешним источникам данных с универсальной структурой которая формируется в зависимости от выбранной атблицы источника. Настройки СКД формирую кодом, как дать возможность пользователю редактировать созданные программно настройки ? т.е нужно сформировать вариант отчета который пользователь сможет отредактировать как это сделать ?
1 aleks_default
 
15.10.18
09:15
Сделать форму отчета и вывести туда настройки?
2 kislitsin
 
15.10.18
09:21
нужно программно сформировать полностью вариант отчета, добавить выбранные поля, отборы и прочее, этот вариант должен быть доступен пользователю для редактирования.
3 aleks_default
 
15.10.18
09:33
Ну и что? Сформировал настройки. Загрузил их в компоновщик настроек компоновки данных и вывел его на форму. Что еще нужно? Или имеется ввиду что нет определенной схемы компоновки данных?
4 kislitsin
 
15.10.18
09:42
Дело в том что я видимо делаю это не правильно, отчет формируется по настройкам, однако при нажатии изменить вариант я не вижу сформированных настроек. Т.к похоже программно сформировал не пользовательский вариант отчета, а какой то "динамический", который пользователю недоступен
5 hhhh
 
15.10.18
09:44
(4) сформовал
6 aleks_default
 
15.10.18
09:49
Возвращай схему и сформированные настройки на клиент и загружай в компоновщик перед формированием отчета.
7 aleks_default
 
15.10.18
09:51
вернее не на клиент а в модуль формы
8 kislitsin
 
15.10.18
09:57
Можно маленький примерчик как загрузить настройки в модуле формы  так чтобы их можно было отредактировать через изменить вариант ?
9 aleks_default
 
15.10.18
10:00
&НаСервере
Процедура ИнициализироватьКомпоновщикСервер()
    
    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");     
    
    Схема1 = ОтчетОбъект.ПолучитьСхемуКомпоновкиДанных("ОсновнаяСхемаКомпоновкиДанных");    
    АдресСхемы1 = ПоместитьВоВременноеХранилище(Схема1, УникальныйИдентификатор);    
    Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы1));     
    
    // пытаемся загрузить настройки отбора сохраненные в реквизит при последнем закрытии обработки  
    ПользовательскиеНастройкиЗагружены = Ложь;    
    Если ЗначениеЗаполнено(Отчет.СохраненныеНастройкиКомпоновщика) тогда        
        Попытка
            ХрНастроек = XMLЗначение(Тип("ХранилищеЗначения"),Отчет.СохраненныеНастройкиКомпоновщика);
            ПользовательскиеНастройкиКомпоновщика = ХрНастроек.Получить();                
            Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ПользовательскиеНастройкиКомпоновщика);
            ПользовательскиеНастройкиЗагружены = Истина;
        Исключение    
            Сообщить("Не удалось загрузить последние сохраненные настройки отбора. Загружены настройки по умолчанию!");            
        КонецПопытки;                                           
    КонецЕсли;
    
    Если Не ПользовательскиеНастройкиЗагружены тогда                  
        УстановитьНастройкиПоУмолчаниюНаСервере(ОтчетОбъект);
    КонецЕсли;          
    
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
        
    ИнициализироватьКомпоновщикСервер();
    
КонецПроцедуры
10 kislitsin
 
15.10.18
10:06
Спасибо попробую