Расшифровка в СКД |
Через структуру «ВнешниеНаборыДанных» в СКД можно добавить несколько источников данных ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ОбъектСДанными ", ТаблицаЗначенийОтчета);
При формировании отчета СКД формирует таблицу специального формата, в которой хранит связь между полями результирующей формы и данными отчета. Именно благодаря этой таблице мы можем сформировать расшифровку ячейки отчета. В нашем примере расшифровка выгружается в переменную ДанныеРасшифровкиОтчета.
Процедура ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) // Запретим стандартную обработку расшифровки СтандартнаяОбработка = Ложь; // Создадим и инициализируем обработчик расшифровки СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровкиОтчета, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); //Перечень возможных действий ДоступныеДействия = Новый Массив(); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Отфильтровать); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Оформить); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Сгруппировать); // Осуществим выбор действия расшифровки пользователем НастройкиСКД = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия); Если НастройкиСКД <> Неопределено Тогда // Пользователь выбрал действие, для которого нужно менять настройки Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить ИЛИ ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Оформить Тогда КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиСКД); Сформировать(); Иначе // При других действиях - создадим новый отчет, откроем форму, сформируем отчет в ней Отчет = ВнешниеОтчеты.Создать(ЭтаФорма.ОтчетОбъект.ИспользуемоеИмяФайла); Форма = Отчет.ПолучитьФорму("ФормаОтчета"); Форма.Открыть(); Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиСКД); Форма.Печать(); КонецЕсли; КонецЕсли; КонецПроцедуры
|