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