Как запретить создание и редактирование номенклатуры в 1С:Бухгалтерия предприятия 3?

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

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

Архитектурные ограничения и почему полные права мешают

Проанализируем ключевое препятствие, с которым сталкиваются администраторы: попытка ограничить действия пользователей, которым назначены полные права (профиль Администратор). В платформе 1С действует фундаментальное правило: механизмы ограничения доступа на уровне записей (RLS) платформенно игнорируются для учетных записей с полными административными правами. Кроме того, пользователь с правами администратора всегда может самостоятельно зайти в настройки, отключить любые наложенные ограничения, добавить себе необходимые роли или снять расширение.

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

Способ 1. Штатная настройка через профили групп доступа БСП

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

  1. Перейдем в раздел Администрирование → Настройки пользователей и прав → Профили групп доступа.
  2. Найдем типовой профиль Бухгалтер и создадим его копию, нажав кнопку Скопировать. Назовем новый профиль, например, Бухгалтер (без права изменения номенклатуры).
  3. В табличной части разрешенных ролей найдем роли, отвечающие за запись справочника, в частности Добавление и изменение номенклатуры, и снимем с них флажки. При этом обязательно оставляем роли на чтение и просмотр номенклатуры.
  4. Сохраним созданный профиль. Перейдем в справочник Группы доступа и создадим группу с новым профилем, включив туда всех рядовых сотрудников.
  5. Для двоих ответственных пользователей, которым разрешено вести справочник, создадим отдельную группу доступа, базирующуюся на профиле, где право на изменение номенклатуры сохранено в полном объеме.

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

Способ 2. Программный запрет через расширение конфигурации

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

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

  1. Быстрое создание позиций по строке непосредственно из табличных частей документов.
  2. Автоматическая загрузка данных из сервисов 1С-ЭДО или банковских выписок.
  3. Использование обработки Групповое изменение реквизитов.
  4. Фоновая синхронизация данных из внешних баз.

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

  1. Создадим новое расширение конфигурации с назначением Адаптация или Дополнение, сняв признак Безопасный режим.
  2. Добавим в расширение подписку на событие с именем, например, КонтрольЗаписиНоменклатурыПередЗаписью.
  3. В свойстве Источник укажем объект СправочникОбъект.Номенклатура.
  4. В свойстве Событие выберем ПередЗаписью.
  5. Создадим общий серверный модуль в расширении и определим процедуру-обработчик.

Посмотрим на пример правильного кода обработчика с учетом фоновых обменов и проверки прав:


Процедура КонтрольЗаписиНоменклатурыПередЗаписью(Источник, Отказ, ТекущийОбъект) Экспорт
    
    // Обязательно пропускаем запись, если идет обмен данными или загрузка
    Если Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    // Проверяем доступность специальной роли или принадлежность к группе
    // Рекомендуется проверять назначенную роль, добавленную в расширение:
    Если Не РольДоступна("ПравоИзмененияНоменклатуры") Тогда
        Отказ = Истина;
        ВызватьИсключение "У вас нет прав на создание или изменение элементов справочника ""Номенклатура"". Обратитесь к ответственному за ведение НСИ.";
    КонецЕсли;
    
КонецПроцедуры

Разберем важные детали приведенного алгоритма:

  1. Проверка свойства ОбменДанными.Загрузка: если пропустить данную проверку, при синхронизации с другими программами (например, с 1С:Управление торговлей или 1С:ЗУП) фоновый процесс завершится аварийно, так как запись номенклатуры будет заблокирована.
  2. Отказ от жесткого кодинга имен: проверять имена пользователей (например, ИмяПользователя() = "Иванов") крайне не рекомендуется. При смене фамилии, увольнении или передаче обязанностей придется вносить правки в код. Гораздо надежнее проверять наличие роли или вхождение пользователя в типовой справочник ГруппыПользователей.
  3. Разделение создания и изменения: если требуется разрешить редактировать существующие позиции, но запретить создание новых дублей, можно использовать метод Источник.ЭтоНовый().

Компенсирующие меры: версионирование объектов

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

← На главную