Как подключить свой отчет к механизму «Рассылка отчетов» в 1С?

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

Типовой механизм «Рассылка отчетов» в Библиотеке стандартных подсистем (БСП) — это мощный инструмент, который позволяет автоматизировать доставку аналитики пользователям по расписанию. Однако разработчики часто сталкиваются с тем, что созданный ими отчет (будь то внешний файл, отчет в расширении или встроенный в основную конфигурацию объект) просто не отображается в списке выбора при настройке рассылки.

В этой статье мы подробно разберем, как устроен механизм подбора отчетов для рассылки, выясним технические причины, по которым отчеты могут «пропадать» из списка, и рассмотрим пошаговые инструкции по их правильной интеграции.

Часть 1. Почему отчет не виден в списке и как его найти?

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

  1. Внешний отчет (файл .erf), подключенный через справочник «Дополнительные отчеты и обработки».
  2. Встроенный отчет (созданный непосредственно в конфигураторе) или отчет, добавленный через расширение конфигурации.

Рассмотрим особенности работы с каждым из этих вариантов.

Часть 2. Как подключить внешний отчет (через «Дополнительные отчеты и обработки»)

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

Для выбора внешних отчетов разработчики БСП предусмотрели отдельный интерфейс. Чтобы добавить такой отчет в рассылку, выполните следующие шаги:

  1. Убедитесь, что ваш внешний отчет успешно зарегистрирован в системе через раздел Администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчеты и обработки. При регистрации обязательно должна быть определена экспортная функция СведенияОВнешнейОбработке в модуле объекта отчета.
  2. Перейдите в раздел создания или редактирования настройки рассылки отчетов.
  3. В табличной части «Отчеты» обратите внимание на командную панель. Вместо стандартной кнопки добавления нажмите кнопку «Еще» (которая относится именно к командной панели табличной части подбора отчетов, а не к шапке всей формы).
  4. В выпадающем меню выберите пункт «Подобрать дополнительный отчет».
  5. В открывшемся окне выберите ваш зарегистрированный внешний отчет.

Пример реализации обязательной экспортной функции СведенияОВнешнейОбработке в модуле объекта внешнего отчета:


Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОРегистрацииАвтономногоИспользования();
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйReport(); // Указываем, что это отчет
    ПараметрыРегистрации.Наименование = "Мой внешний отчет по продажам";
    ПараметрыРегистрации.Версия = "1.1";
    ПараметрыРегистрации.БезопасныйРежим = Истина;
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = "Открыть отчет...";
    НоваяКоманда.Идентификатор = "ОткрытьОтчет";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

Важное примечание: Чтобы механизм рассылки мог корректно оперировать параметрами внешнего отчета, в системе должен быть сохранен хотя бы один его вариант настроек в стандартном ХранилищеВариантовОтчетов. Если отчет абсолютно новый и пользователи еще ни разу не сохраняли его варианты, БСП может работать с ним некорректно.

Часть 3. Подключение встроенных отчетов и отчетов из расширений

Если вы добавили новый отчет непосредственно в основную конфигурацию или внедрили его через расширение метаданных, механизм подбора рассылок ищет его в справочнике «Варианты отчетов». Если карточки отчета там нет, он не отобразится в основном списке подбора.

Выясним по шагам, что необходимо сделать программисту, чтобы отчет прошел автоматическую регистрацию в БСП:

  1. Установка хранилища вариантов: В конфигураторе откройте палитру свойств вашего отчета. Найдите свойство «Хранилище вариантов» и выберите из списка предопределенное стандартное значение ХранилищеВариантовОтчетов.
  2. Настройка модуля менеджера: Чтобы система поняла, в какие разделы интерфейса поместить отчет, добавьте в модуль менеджера отчета специальную экспортную процедуру НастроитьВариантыОтчета.

Пример кода в модуле менеджера отчета:


Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
    
    НастройкиОтчета.ОпределитьНастройкиПервичногоРазмещения = Истина;
    
    // Указываем вариант отчета по умолчанию
    ВариантНастройки = Настройки.Варианты.Добавить();
    ВариантНастройки.КлючВарианта = "ОсновнойВариант";
    // Указываем подсистему, в которой будет отображаться отчет
    ВариантНастройки.НастройкиПоУмолчанию.Размещение.Добавить(Метаданные.Подсистемы.Продажи);
    
КонецПроцедуры

После внесения изменений в конфигурацию или активации расширения система не всегда мгновенно обновляет справочник вариантов отчетов. Чтобы запустить принудительную регистрацию новых метаданных БСП, выполните одно из следующих действий:

После выполнения обновления метаданных БСП автоматически добавит записи в справочник «Варианты отчетов», и ваш отчет станет доступен для выбора в стандартной рассылке.

Часть 4. Критические технические требования к коду отчета для работы в рассылке

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

1. Полная независимость от клиентского контекста (выполнение на сервере)
Рассылка выполняется на сервере в фоновом режиме под управлением регламентного задания. В этот момент у сеанса нет активного клиента (интерфейса пользователя).
Категорически запрещено использовать в модуле объекта отчета, в модуле формы или в событии ПриКомпоновкеРезультата методы, которые пытаются взаимодействовать с пользователем или файловой системой его компьютера. К ним относятся: Предупреждение(), Вопрос(), ПоказатьПредупреждение(), вызовы диалогов выбора файлов и обращение к общим модулям с пометкой Клиент.

2. Использование СКД и метода СкомпоноватьРезультат
Отчет должен быть построен строго с использованием Системы компоновки данных (СКД). Вывод данных должен происходить стандартными механизмами платформы. Если в модуле объекта вы переопределяете процедуру ПриКомпоновкеРезультата, внутри нее обязательно должен вызываться метод стандартного вывода:


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

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

4. Ограничения безопасного режима
Если ваш внешний отчет подключен в безопасном режиме (что рекомендуется правилами безопасности 1С), платформа накладывает жесткие ограничения на выполнение кода на сервере. В безопасном режиме запрещено:

Если для работы отчета требуются эти действия, необходимо регистрировать его с отключенным безопасным режимом либо запрашивать у администратора соответствующие разрешения (программные разрешения БСП).

Часть 5. Настройка индивидуальной персонализации рассылки

Очень часто перед разработчиком стоит задача настроить индивидуальную рассылку данных. Например, чтобы каждый менеджер получал по почте исключительно свои продажи, а каждый контрагент — только акт сверки по своей организации.

Для реализации этого сценария выполните следующие действия в схеме компоновки данных (СКД):

  1. Добавьте в СКД параметр отбора (например, Менеджер или Контрагент).
  2. Обязательно вынесите этот отбор в пользовательские настройки (быстрый доступ).
  3. В интерфейсе настройки рассылки отчетов выберите данный отчет. В поле сопоставления параметров у вас появится возможность сопоставить добавленный параметр отбора со специальным маркером подстановки — [Получатель].

При запуске рассылки система автоматически определит получателя письма (например, конкретного пользователя или контрагента), подставит его значение в параметр отбора СКД, сформирует индивидуальный отчет и отправит его на email этого получателя. Для удобного администрирования списка адресатов в таких сценариях подойдёт инструмент для управления получателями рассылок отчетов.

Часть 6. Массив «ИсключаемыеОтчеты» — для чего он нужен?

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

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

Проанализировав эти требования и настроив структуру вашего отчета в соответствии с правилами БСП, вы без труда добьетесь его стабильной работы в автоматических рассылках по расписанию.

← На главную