Система компоновки данных предоставляет возможность расшифровать информацию, содержащуюся в отчете. То есть выполнив отчет и выделив одну из его ячеек, пользователь может получить другой отчет, связанный со значением, находящимся в этой ячейке. Например, более подробный отчет, показывающий, из каких именно показателей получилась эта сумма в ячейке. Или пользователь может открыть и посмотреть тот документ, который указан в этой ячейке. Или отобрать, или отсортировать данные этого отчета по значению в этой ячейке и т. п.
Например, получив отчет по продажам номенклатуры, можно двойным щелчком мыши на поле ресурса вызвать диалог выбора поля для расшифровки (рис. 3.70).
Рис. 3.70. Диалог выбора поля для расшифровки
Далее выбрать поле, по которому нужно расшифровать данные. В результате будет получен отчет, содержащий более конкретную информацию по выделенной ячейке и расшифровывающий ее по выбранному полю. В данном случае Период (рис. 3.71).
Рис. 3.71. Результат отчета с расшифровкой
Если дважды щелкнуть на поле не ресурса, то будет открыто значение поля (рис. 3.72).
Рис. 3.72. Открытие значения поля расшифровки
При нажатии правой кнопки мыши на поле отчета вызывается выпадающее меню расшифровки, которое состоит из возможных действий над расшифровкой: Расшифровать, Открыть, Отфильтровать, Упорядочить, Сгруппировать, Оформить (рис. 3.73).
Рис. 3.73. Вызов меню расшифровки
Действие Расшифровать недоступно, если элемент расшифровки – Детальные записи, кроме случая, когда он содержит поля-ресурсы.
Для реализации расшифровки отчетов, выполненных при помощи системы компоновки данных, в платформе реализован объект ОбработкаРасшифровкиКомпоновкиДанных. Он позволяет сформировать настройки компоновки данных, которые можно использовать для формирования отчета-расшифровки.
При формировании табличного документа с помощью системы компоновки данных в расшифровку ячейки помещаются специальные объекты типа ИдентификаторРасшифровки. При этом самих значений полей и полей группировок в табличном документе нет. Получить значения полей можно из объекта ДанныеРасшифровки, который был заполнен при выводе отчета.
Для того чтобы при выводе отчета объект ДанныеРасшифровки был заполнен, следует его создать при компоновке макета и передать в процессор компоновки данных. Для этого при вызове метода Выполнить компоновщика макета следует передать переменную, в которую требуется поместить созданный объект.
Для того чтобы данные расшифровки заполнились при формировании результата, необходимо передать объект ДанныеРасшифровки в метод Инициализировать процессора компоновки данных.
Если отчет формируется при помощи стандартной команды отчета Сформировать, то данные расшифровки помещаются в свойство расширения формы отчета ДанныеРасшифровки.
Однако в отчетах, где используется собственная процедура программной компоновки данных, нужно явно указывать объект Данные расшифровки для заполнения информации о расшифровке при формировании отчета (листинг 3.10).
Листинг 3.10. Фрагмент процедуры программного формирования отчета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,
ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных,
ДанныеРасшифровки);