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