Механизм Рассылки отчетов в типовых конфигурациях 1С (на базе БСП) — это мощный инструмент для автоматизации отчетности. Однако пользователи и разработчики часто сталкиваются с ситуацией, когда в самом отчете нужные поля (например, «Период» или «Физическое лицо») присутствуют, а при попытке настроить рассылку эти параметры магическим образом исчезают из списка доступных. Рассмотрим, почему это происходит, и разберем пошагово, как заставить систему видеть все необходимые настройки.
Проанализируем ситуацию: механизм рассылки отчетов спроектирован таким образом, что он взаимодействует не со всей Схемой компоновки данных (СКД) напрямую, а только с теми элементами, которые вынесены в Пользовательские настройки. Если параметр или отбор определен в схеме, но не отмечен как пользовательский, он будет доступен программисту в конфигураторе или опытному пользователю через «Изменить вариант», но «Рассылка отчетов» его проигнорирует.
Выясним причину на техническом уровне: система БСП при формировании настроек рассылки анализирует коллекцию ПользовательскиеНастройки варианта отчета. Если флаг включения в пользовательские настройки не установлен, поле считается техническим и скрывается от интерфейса рассылки, чтобы не перегружать его лишними данными.
Это основной способ решения проблемы, который помогает в 99% случаев. Рассмотрим процесс настройки через конфигуратор (или через редактирование внешней схемы отчета):
Проанализируем важный нюанс: если вы работаете с Дополнительным отчетом (внешним файлом .erf), после внесения изменений в файл его необходимо заново загрузить в информационную базу через справочник ДополнительныеОтчетыИОбработки. Просто сохранить файл недостаточно — система должна обновить кэшированную структуру настроек в базе данных.
Часто задача стоит не просто отправить отчет, а отправить каждому сотруднику только его данные. Для этого используется механизм подстановки. В высоконагруженных системах для этого важна оптимизация персонализированных рассылок — для этого подойдёт модуль массовой рассылки отчетов и расчетных листков. Рассмотрим, как это настроить правильно:
В настройках рассылки, на вкладке «Отборы», мы можем указать для поля «Физическое лицо» (или «Сотрудник») специальное значение [Получатель]. Посмотрим, как это работает программно: при запуске регламентного задания система перебирает список получателей, берет каждого конкретного пользователя или физлицо и подставляет его в этот отбор перед формированием отчета.
Важные требования для работы тега:
СправочникСсылка.Пользователи, а отбор в отчете идет по СправочникСсылка.ФизическиеЛица, система может не сопоставить их автоматически, если в базе не настроена связь «Пользователь — Физлицо».Если настройки в СКД верны, но поля все равно не появляются, проанализируем ситуацию с кэшированием. 1С сохраняет настройки вариантов отчетов для каждого пользователя. Попробуем выполнить следующие действия:
ИдентификаторПользовательскойНастройки заполнен уникальным значением.Разберем ситуацию, когда сотрудников тысячи, и добавлять каждого в рассылку вручную невозможно. Профессиональный подход подразумевает автоматическое формирование списка. Рассмотрим варианты:
Вариант А: Использование групп пользователей. Вместо указания конкретных лиц, добавьте в получатели Группу пользователей. Это стандартный функционал. При добавлении нового сотрудника в группу в справочнике «Пользователи», он автоматически станет участником рассылки при следующем запуске задания.
Вариант Б: Программное заполнение (для разработчиков). Если требуется сложная логика (например, рассылать только тем, у кого есть остатки по отпускам), можно использовать небольшое расширение, которое будет модифицировать список получателей перед отправкой. Посмотрим на пример логики формирования:
// Пример логики для программного перебора (условный код)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.ФизическиеЛица ГДЕ Работает = ИСТИНА";
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Результат Цикл
// Добавление в коллекцию получателей рассылки
НовыйПолучатель = РассылкаОбъект.Получатели.Добавить();
НовыйПолучатель.Получатель = Строка.Ссылка;
КонецЦикла;
Когда мы настраиваем рассылку по каждому сотруднику отдельно через [Получатель], важно понимать: сервер 1С будет формировать отчет ровно столько раз, сколько у вас получателей. Если их 500 человек, отчет будет сформирован 500 раз.
Проанализируем способы оптимизации:
Таким образом, основной секрет видимости полей в рассылке — это их правильное позиционирование в Пользовательских настройках СКД. Сочетая это с тегом [Получатель], мы получаем гибкий и мощный инструмент индивидуального информирования сотрудников.