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