Расшифровка отчета в 1С 8.3 на СКД
Меню

Расшифровка отчета в 1С 8.3 на СКД

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

Типовой функционал позволяет открыть из отчета соответствующие справочники, документы-регистраторы и другую информацию. Наведя на ячейку курсором мышки, можно увидеть, возможна ли для не расшифровка. Если дополнительные действия по расшифровке доступны, то иконка курсора изменит свой вид.

Изменение курсора мыши при наведении на выбранную ячейку отчета
Изменение курсора мыши при наведении на выбранную ячейку отчета

Для того чтобы посмотреть какая расшифровка возможна для нужной ячейки отчета, необходимо щелкнуть по ячейке два раза мышкой.

Список возможных действий при нажатии на ячейку с данными
Список возможных действий при нажатии на ячейку с данными

По умолчанию открывается стандартная расшифровка, которая является общей для большинства отчетов конфигурации. Например, если щелкнуть на номенклатуру и в открывшемся окне навести курсор на «Открыть», то можно открыть необходимый элемент справочника номенклатуры, серии или характеристики.

Открытие справочников из отчета на СКД
Открытие справочников из отчета на СКД

Также можно отфильтровать, упорядочить, сгруппировать данные или оформить их.

Дополнительные механизмы работы с данными в отчете, фильтрация
Дополнительные механизмы работы с данными в отчете, фильтрация

Наряду со стандартными действиями есть возможность добавить собственные, а можно и полностью переоопределить стандартную расшифровку.

Расшифровка другим отчетом

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

Для начала создадим через Конфигуратор отчет, в котором с помощью конструктора построим основную схему компоновки данных.

Создание схемы компоновки данных из конфигуратора с помощью конструктора макета
Создание схемы компоновки данных из конфигуратора с помощью конструктора макета
 

Схема будет храниться в макете. Создаем выборку данных, настраиваем наборы данных и задаем другие настройки, необходимые для корректной работы отчета.

Создание отчета на СКД и настройка получения данных
Создание отчета на СКД и настройка получения данных

После добавления макета нужно добавить основную форму отчета.

Добавление основной формы отчета
Добавление основной формы отчета

Для реквизита формы «Результат» необходимо заполнить действие «Обработка Расшифровки».

Добавление обработки расшифровки для результата
Добавление обработки расшифровки для результата

В модуле формы мы и будем прописывать открытие нашего меню расшифровки.

Модуль формы отчета для задания дополнительных действий с отчетом и его расшифровки
Модуль формы отчета для задания дополнительных действий с отчетом и его расшифровки

Для начала в модуле формы отчета в процедуре РезультатОбработкаРасшифровки описываем получение полей, для которых будет выводиться расшифровка:


	 МассивДляРасшифровки = Новый Массив();
	      МассивДляРасшифровки.Добавить("Организация");
	      МассивДляРасшифровки.Добавить("Номенклатура");

	      РасшифрЗначение = ПолучитьРасшифровкуНаСервере(Расшифровка, МассивДляРасшифровки);
	            Если РасшифрЗначение = Неопределено
	                           Тогда Возврат;
	            КонецЕсли;

В коде запрещаем открытие стандартной расшифровки:


	 СтандартнаяОбработка = Ложь;

Выводим в расшифровку собственные действия:


	 ОбработРасшифр = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки,
     Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));

         ВыпДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать;
         ПараметрВыполненногоДействия = Неопределено;
         ДоступныеДействия = Новый Массив;

    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
              НашиПункты = Новый СписокЗначений;
         ОбщСтрока = "Открыть обороты партий товаров по " + РасшифрЗначение;
         НашиПункты.Добавить( 1, ОбщСтрока + " за один месяц.");
         НашиПункты.Добавить( 6, ОбщСтрока + " за шесть месяцев.");

Добавление своих пунктов в отчет на СКД и расшифровка их, открытие дополнительного меню
Добавление своих пунктов в отчет на СКД и расшифровка их, открытие дополнительного меню

После описания собственного меню расшифровки, определения полей, для которых будет действовать расшифровка, необходимо передать параметры в новый открываемый отчет для его формирования.


	 ОбработРасшифр.ВыбратьДействие(Расшифровка, ВыпДействие, ПараметрВыполненногоДействия, ДоступныеДействия, НашиПункты);

	        Если ВыпДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет Тогда
	        ИначеЕсли ВыпДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
	                ОткрытьЗначение(ПараметрВыполненногоДействия);
	        ИначеЕсли ТипЗнч(ВыпДействие) = Тип("Число") Тогда

	                            Парам = новый Структура();
	                            Парам.Вставить("Нач",ДобавитьМесяц(ТекущаяДата(),-ВыпДействие));
                                Парам.Вставить("Кон",ТекущаяДата());

	                            Парам.Вставить("СформироватьПриОткрытии",истина);
	                            Парам.Вставить("Номенклатура",РасшифрЗначение);
	                            ОткрытьФорму("Отчет.ПартииТоваров.Форма.ФормаОтчета",Новый Структура("Параметры",Парам));
	        КонецЕсли;

Расшифровка отчета другим отчетом на СКД
Расшифровка отчета другим отчетом на СКД

Для расшифровки на сервере используем следующую функцию:


	 &НаСервере
	 Функция ПолучитьРасшифровкуНаСервере(Расшифровка, МассивИменРасшифровки, ЭтоГруппа = Ложь)
	       Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
	       Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля();
	       Для Каждого ИмяРасшифровки Из МассивИменРасшифровки Цикл
	               ПолеНоменкл = Поля.Найти(ИмяРасшифровки);
	                             Если Не ПолеНоменкл = Неопределено
	                                    Тогда Прервать;
	                             КонецЕсли;
	       КонецЦикла;
	       Возврат ПолеНоменкл.Значение;
	 КонецФункции

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

Рассказать друзьям
Предыдущая статья статья
Контролируемые сделки в 1С 8.3 Бухгалтерия
Следующая статья статья
Внешняя обработка 1С: запуск, параметры, вызов
Комментарии