Как добавить дополнительные параметры во внешний отчет в новых конфигурациях 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В обычных формах прошлых версий конфигураций 1С развертывание внешних отчетов и обработок позволяло быстро связывать пользовательские реквизиты прямо в карточке справочника ДополнительныеОтчетыИОбработки. В современных управляемых конфигурациях на базе Библиотеки Стандартных Подсистем (БСП) подходы к работе с внешними отчетами изменились. Разберем, с чем связаны эти ограничения и какими способами можно реализовать гибкую настройку параметров во внешних отчетах.

Особенности работы с параметрами в БСП

Выясним причину, почему привычный механизм из обычных форм не работает по умолчанию. В архитектуре БСП подсистема работы с внешними отчетами и обработками ориентирована на работу со Схемой компоновки данных (СКД) и подсистемой «Варианты отчетов». В карточке справочника ДополнительныеОтчетыИОбработки отсутствует универсальный встроенный интерфейс для визуального создания произвольного списка параметров пользовательского типа.

Рассмотрим основные и наиболее эффективные варианты решения этой задачи в управляемом приложении.

Способ 1. Использование вариантов отчетов СКД (рекомендуемый подход)

Для отчетов на базе СКД самым гармоничным решением является использование штатного механизма пользовательских настроек и вариантов отчетов. Разберем алгоритм настройки по шагам:

  1. В схему компоновки данных внешнего отчета добавляем все необходимые параметры (например, Валюта, Организация или Подразделение).
  2. Выводим параметры в пользовательские настройки отчета, чтобы они отображались в шапке формы.
  3. Загружаем внешний отчет в справочник ДополнительныеОтчетыИОбработки.
  4. Открываем отчет в режиме «1С:Предприятие», заполняем требуемые значения параметров и сохраняем вариант отчета (с флажком доступности для всех пользователей или отдельных ролей).

При последующих запусках отчет будет автоматически открываться с сохраненным вариантом и предустановленными значениями параметров.

Способ 2. Использование реквизита ХранилищеНастроек в справочнике

В справочнике ДополнительныеОтчетыИОбработки предусмотрен стандартный реквизит ХранилищеНастроек с типом ХранилищеЗначения. Проанализируем, как использовать его для сохранения произвольной структуры параметров:

  1. В форме внешней обработки или отчета создаем интерфейс или команду настройки параметров.
  2. Сохраняем выбранные пользователем данные (например, структуру с ключами и значениями) в реквизит ХранилищеНастроек по ссылке текущего элемента справочника.
  3. При открытии отчета или выполнении команды считываем параметры из объекта ДополнительнаяОбработкаСсылка.

Пример программной записи параметров в хранилище настроек элемента справочника:


СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Валюта", Объект.Валюта);
СтруктураПараметров.Вставить("Периодичность", Объект.Периодичность);

СправочникОбъект = СсылкаНаВнешнийОтчет.ПолучитьОбъект();
СправочникОбъект.ХранилищеНастроек = Новый ХранилищеЗначения(СтруктураПараметров);
СправочникОбъект.Записать();

Способ 3. Подсистема «Дополнительные реквизиты и сведения»

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

  1. В режиме администрирования добавляем к справочнику ДополнительныеОтчетыИОбработки необходимое Дополнительное сведение (например, сведение с типом СправочникСсылка.Валюты).
  2. Заполняем значение этого сведения прямо в карточке соответствующего внешнего отчета.
  3. При формировании отчета считываем сведение с помощью функции подсистемы БСП:
    
    ЗначениеВалюты = УправлениеКонтактнойИнформацией.ЗначениеСведения(СсылкаНаВнешнийОтчет, СведениеВалюта);
    

Способ 4. Передача параметров через колоноку Модификатор

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

Рассмотрим пример заполнения функции регистрации внешнего отчета:


Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
    ПараметрыРегистрации.Наименование = "Отчет по валютам";
    ПараметрыРегистрации.Версия = "1.0";

    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = "Отчет по USD";
    Команда.Идентификатор = "ОтчетПоUSD";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    Команда.Модификатор = "USD";

    Возврат ПараметрыРегистрации;

КонецФункции

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

← На главную