Как массово запретить использование вариантов для отключенных дополнительных отчетов в 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Понимание проблемы: где живут варианты отчетов?

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

Варианты могут храниться в:

  1. Справочнике ВариантыОтчетов — основное хранилище метаданных.
  2. Справочнике ПользовательскиеНастройкиОтчетов — здесь лежат конкретные отборы и параметры.
  3. Внутренних хранилищах ХранилищеВариантовОтчетов и ХранилищеПользовательскихНастроек.

Решение 1: Программный запрет через переопределение открытия

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


Если СсылкаНаОтчет.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена Тогда
    ВызватьИсключение("Данный отчет больше не используется. Просьба не обращаться в ИТ-отдел.");
    Возврат Неопределено;
КонецЕсли;

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

Решение 2: Анализ и поиск через справочники

Для более глубокой очистки системы необходимо найти все варианты, ссылающиеся на отключенный отчет. Не всегда это очевидно, так как отчет может быть добавлен в справочник ДополнительныеОтчетыИОбработки. Используйте следующий запрос для поиска «сиротских» вариантов:


ВЫБРАТЬ
    ВариантыОтчетов.Ссылка КАК Ссылка,
    ВариантыОтчетов.Наименование КАК Наименование,
    ВариантыОтчетов.Автор КАК Автор
ИЗ
    Справочник.ВариантыОтчетов КАК ВариантыОтчетов
ГДЕ
    ВариантыОтчетов.Отчет = &Отчет

После получения списка ссылок вы сможете пометить их на удаление или программно удалить через методы Объект.Удалить() или Объект.УстановитьПометкуУдаления(Истина).

Решение 3: Очистка через инструменты администратора

Если объем накопленных вариантов велик, рекомендуем не заниматься удалением вручную. Рассмотрим штатные и дополнительные возможности:

  1. Инструменты разработчика (ИР): Это мощный набор функций для работы с объектами метаданных в управляемых формах. С их помощью можно массово очистить хранилища настроек для конкретных пользователей или объектов.
  2. Стандартные процедуры БСП: Обратите внимание на процедуры в модуле ХранилищеВариантовОтчетовСервер. Использование метода УдалитьПользовательскиеНастройки является более «чистым» решением, так как оно корректно очищает записи в регистрах сведений, связанных с пользовательскими настройками ОС (отчетов и обработок).

Важные рекомендации по работе с БСП

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

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

← На главную