В управляемом приложении с внедренной Библиотекой Стандартных Подсистем (БСП) каждый отчет на Системе компоновки данных (СКД) открывается в развитой типовой форме с панелями быстрых настроек, пользовательскими отборами, вариантами отчетов и расширенными возможностями экспорта. В обычном приложении платформа по умолчанию генерирует простую минималистичную форму, в которой нет многих привычных пользователю возможностей. Разберем основные варианты решения этой задачи и выясним, как получить удобную форму отчета в режиме обычных форм.
Проанализируем классический подход, реализованный в типовых конфигурациях предыдущих поколений (таких как Управление торговлей 10.3, Управление производственным предприятием 1.3 или Комплексная автоматизация 1.1). В них присутствует готовый и полностью отлаженный механизм для работы с СКД в режиме обычного приложения.
Данный механизм базируется на общей форме отчета и общем модуле ТиповыеОтчеты. Реализация предоставляет пользователю:
Если разработка ведется в конфигурации, где уже присутствует общий модуль ТиповыеОтчеты, достаточно указать типовую форму в свойствах отчета или назначить ее основной формой отчета в метаданных.
Если требуется создать автономное решение без привязки к громоздким типовым подсистемам, рассмотрим разработку собственной формы отчета. Основная идея заключается в прямой привязке элементов управления формы к объекту КомпоновщикНастроек схемы компоновки данных.
Разберем по шагам, как связать элементы формы и настройки СКД:
ТабличноеПоле для вывода отборов и укажем в его свойстве Данные путь: КомпоновщикНастроек.Настройки.Отбор.ТабличноеПоле с путем к данным: КомпоновщикНастроек.Настройки.ПараметрыДанных.ТабличноеПоле со свойством: КомпоновщикНастроек.Настройки.Структура.КомпоновщикНастроек.ПользовательскиеНастройки.Посмотрим на пример процедуры формирования табличного документа по схеме компоновки данных при нажатии кнопки «Сформировать» на форме:
Процедура ДействияФормыСформировать(Кнопка)
ТабличныйДокумент = ЭлементыФормы.ПолеТабличногоДокумента;
ТабличныйДокумент.Очистить();
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
Для создания динамической панели быстрых отборов в шапке отчета программно обходят коллекцию КомпоновщикНастроек.Настройки.Отбор.Элементы и с помощью метода ЭлементыФормы.Добавить() динамически создают надписи и поля ввода, привязанные к значению соответствующего отбора.
Рассмотрим еще один альтернативный путь. Платформа 1С:Предприятие 8.3 позволяет открывать управляемые формы внутри обычного приложения.
Разберем необходимые условия для работы данного механизма:
Важный нюанс: Полноценная форма отчета из состава БСП тесно связана с серверным контекстом и подсистемами «Варианты отчетов», «Печать» и «Базовая функциональность». Поэтому перенос универсальной формы отчета БСП в конфигурацию на обычных формах потребует внедрения зависимых серверных модулей библиотеки.