1С 8.x Управляемое приложение 1С 7.7. Бухучет Статьи Ссылки
1С 8.x arrow 1С 8.x arrow СКД arrow Расшифровка в СКД
Расшифровка в СКД Печать

Через структуру «ВнешниеНаборыДанных»  в СКД можно добавить несколько источников данных

ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ОбъектСДанными ", ТаблицаЗначенийОтчета);

 

При формировании отчета СКД формирует таблицу специального формата, в которой хранит связь между полями результирующей формы и данными отчета. Именно благодаря этой таблице мы можем сформировать расшифровку ячейки отчета. В нашем примере расшифровка выгружается в переменную ДанныеРасшифровкиОтчета.

 

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