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

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

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

Причина проблемы: различие между вариантами и пользовательскими настройками

Важно разделять два ключевых понятия схемы компоновки данных (СКД):

  1. Вариант отчета — полностью определяет структуру (группировки, колонки, диаграммы, отборы по умолчанию). Сохранение нового варианта создает новую запись в базе данных или хранилище настроек.
  2. Пользовательские настройки — позволяют менять значения параметров и отборов без изменения глобальной структуры и создания нового варианта.

Часто пользователи сохраняют новые варианты только потому, что им не выведены быстрые отборы на форму. Поместив необходимые параметры в состав пользовательских настроек, мы избавим пользователей от необходимости создавать дублирующие варианты.

Способ 1. Настройка прав доступа на создание только личных вариантов

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

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

Способ 2. Программное скрытие команд сохранения на форме отчета

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

Проанализируем пример кода для формы отчета:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Скрываем кнопки сохранения вариантов отчета
    Если Элементы.Найти("СохранитьВариант") <> Неопределено Тогда
        Элементы.СохранитьВариант.Видимость = Ложь;
    КонецЕсли;
    
    Если Элементы.Найти("СохранитьВариантКак") <> Неопределено Тогда
        Элементы.СохранитьВариантКак.Видимость = Ложь;
    КонецЕсли;

КонецПроцедуры

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

Способ 3. Использование подсистемы «Варианты отчетов» БСП

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

Рассмотрим пример настройки модуля объекта отчета:


Процедура ОпределитьНастройкиФормы(Форма, КлючНастроек, Настройки) Экспорт

    // Отключаем возможность изменения и сохранения вариантов для данного отчета
    Настройки.Сравнение.Доступно = Ложь;
    Настройки.Печать.Доступна = Истина;

КонецПроцедуры

Кроме того, администратор системы в режиме «1С:Предприятие» через справочник Варианты отчетов может настроить видимость и доступность конкретных вариантов для определенных групп пользователей.

Способ 4. Использование «Фиксированных настроек» СКД

Чтобы предохранить отбор или структуру отчета от изменений и последующего сохранения, выделите критичные параметры в ФиксированныеНастройки компоновщика настроек. Элементы, помещенные в фиксированные настройки, недоступны для редактирования пользователем в форме отчета, что предотвращает попытки сохранить измененную конфигурацию отчета.

Способ 5. Реализация через Расширение конфигурации

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

← На главную