Почему во внешнем отчете на СКД не сохраняются варианты для всех пользователей и как это настроить?

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

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

Суть проблемы: почему поведение отчетов отличается?

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

Если этот реквизит принимает значение Ложь, отчет работает в ограниченном режиме: его варианты сохраняются только локально в системное представление СУБД для конкретного текущего пользователя. Если же реквизит принимает значение Истина, отчет полноценно подключается к панели отчетов БСП, а пользователи получают возможность делиться своими настройками. Попытка вручную изменить этот флаг в режиме «1С:Предприятие» через групповую обработку реквизитов помогает лишь временно — при первой же перезагрузке файла отчета БСП перезаписывает значение обратно на Ложь.

Причина №1. Настройка свойства «Хранилище вариантов» в метаданных

Выясним причину автоматического сброса флага. При импорте или обновлении файла отчета БСП считывает свойства корневого объекта конфигурации программным путем. Логика проверки выглядит следующим образом:


// Упрощенный пример логики БСП при регистрации внешнего отчета
Если МетаданныеОбъекта.ХранилищеВариантов = Метаданные.ХранилищаНастроек.ХранилищеВариантовОтчетов Тогда
    ПараметрыРегистрации.ИспользуетХранилищеВариантов = Истина;
Иначе
    ПараметрыРегистрации.ИспользуетХранилищеВариантов = Ложь;
КонецЕсли;

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

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

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

  1. Запустим Конфигуратор и откроем файл вашего внешнего отчета (с расширением .erf).
  2. В дереве конфигурации внешнего отчета дважды кликнем по корневому элементу (самому верхнему узлу с именем отчета), чтобы открыть палитру его свойств.
  3. Прокрутим список свойств вниз до раздела Представление.
  4. Найдем свойство Хранилище вариантов. По умолчанию оно, скорее всего, пустое.
  5. Нажмем на кнопку выбора и укажем стандартное системное хранилище вашей конфигурации — ХранилищеВариантовОтчетов. Это хранилище входит в состав БСП и присутствует во всех современных типовых конфигурациях (ERP, КА, УТ, БП, ЗУП).
  6. Сохраним файл отчета.
  7. Перейдем в режим «1С:Предприятие», откроем справочник ДополнительныеОтчетыИОбработки и обновим файл нашего отчета.

После этого система автоматически установит признак ИспользуетХранилищеВариантов в значение Истина, и этот флаг больше не будет сбрасываться при последующих обновлениях.

Причина №2. Наличие собственной формы в отчете

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

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

Если же вы создали свою форму, то стандартные обработчики БСП перестают вызываться автоматически. Варианты отчета начинают сохраняться локально. Рекомендация: старайтесь не создавать собственные формы для отчетов на СКД без крайней необходимости. Практически любые задачи по настройке интерфейса, отборов и параметров можно решить стандартными средствами компоновки данных и настроек СКД.

Причина №3. Права доступа и особенности различных версий БСП

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

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

Также важно учитывать версию БСП в вашей системе:

Резюме и чеклист для разработчика

Для того чтобы ваши внешние отчеты на СКД всегда корректно работали с вариантами отчетов и позволяли пользователям делиться своими настройками, придерживайтесь простого правила-чеклиста при создании отчета:

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