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