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