Как в 1С:Управление торговлей 11 разрешить продавать с одного склада, но видеть остатки по всем?

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

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

При попытке настроить такое ограничение стандартным механизмом RLS (Row-Level Security / Ограничение прав на уровне записей) через группы доступа пользователи сталкиваются с типичной проблемой: в ведомостях по остаткам вместо названий чужих складов отображается надпись <Объект не найден...>.

Разберем причину возникновения этой неполадки и рассмотрим эффективные варианты ее решения.

Выясним причину появления надписи "<Объект не найден...>"

Проанализируем механику работы платформы 1С при включенном механизме RLS. Данная ошибка возникает из-за расхождения прав доступа между регистром накопления и справочником:

  1. У пользователя есть право на чтение записей регистра накопления ТоварыНаСкладах (или отчетов на его основе).
  2. При этом ограничение RLS блокирует доступ на чтение элементов справочника Склады, которые не входят в разрешенную группу доступа.
  3. При формировании отчета система выбирает движения из регистра накопления. Когда отчет пытается получить представление (наименование) склада по ссылке, RLS платформы блокирует чтение закрытого объекта и замещает ссылку системным текстом <Объект не найден...>.

Решение 1. Настройка специальной роли на чтение без RLS

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

  1. Создадим новую роль (например, ЧтениеСкладовБезRLS).
  2. В настройках этой роли предоставим право на Чтение для справочника Склады и регистра накопления ТоварыНаСкладах.
  3. Убедимся, что для этих объектов в данной роли не заданы условия RLS (ограничение на уровне записей отсутствует).
  4. Назначим эту роль целевому пользователю через профиль групп доступа.

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

Нюансы и особенности данного подхода:

  1. Отображение в списках выбора: Поводом для внимания является то, что при снятии ограничения RLS на чтение справочника Склады все склады начнут отображаться в выпадающих списках и формах выбора документов.
  2. Проверка при проведении: Если пользователь попытается выбрать чужой склад в документе продаж, проведение документа будет заблокировано встроенными проверками прав на документы. Однако для предотвращения ошибочного выбора рекомендуется зафиксировать основной склад в персональных настройках пользователя или добавить программную проверку.

Решение 2. Использование привилегированного режима в расширении

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

  1. Создадим расширение для конфигурации УТ 11.
  2. Перехватим процедуру формирования нужного отчета (например, «Ведомость по товарам на складах»).
  3. Перед выполнением запроса СКД включим привилегированный режим, обходящий проверки прав платформы: УстановитьПривилегированныйРежим(Истина);
  4. После формирования отчета режим чтения отключается автоматически при выходе из процедуры или явно через УстановитьПривилегированныйРежим(Ложь).

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

Решение 3. Программное ограничение выбора склада в документах

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

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

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

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

УправлениеДоступомСлужебный.ОбновитьПараметрыОграниченияДоступа();

Это позволит платформе пересчитать права и применить новые роли без сбоев.

← На главную