Как настроить ограничение доступа к контрагентам по менеджерам в 1С:ERP?

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

В крупных компаниях часто возникает задача разграничения прав доступа, когда каждый менеджер должен видеть и работать только с «своими» клиентами. В системе 1С:ERP Управление предприятием (а также в 1С:Комплексная автоматизация) для этих целей используется механизм RLS (Record Level Security) — ограничение доступа на уровне записей. Рассмотрим подробно, как реализовать эту задачу, начиная от типовых настроек и заканчивая программными доработками.

Включение механизма ограничения доступа

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

  1. Перейдем в раздел НСИ и администрирование.
  2. Выберем пункт Настройка пользователей и прав. Для этого есть инструмент настройки и анализа прав доступа для 1С:ERP.
  3. Развернем группу Группы доступа.
  4. Установим флаг Ограничивать доступ на уровне записей.

Важно понимать, что включение этой опции может существенно повлиять на производительность системы, так как к каждому запросу к базе данных будут добавляться дополнительные условия проверки прав. Чтобы система работала быстро, настройка производительного RLS в 1С:ERP 2.5 должна быть выполнена в соответствии с рекомендациями по заполнению таблиц прав.

Типовой способ: Использование групп доступа контрагентов

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

Рассмотрим алгоритм настройки через группы доступа:

  1. В справочнике Контрагенты необходимо заполнить реквизит Группа доступа. Если это поле не отображается, его нужно включить в настройках формы.
  2. Создадим соответствующие элементы в справочнике Группы доступа контрагентов (например, «Регион Запад», «Крупный опт», «Менеджер Иванов»).
  3. В разделе Администрирование создадим Профиль групп доступа.
  4. На закладке Виды доступа добавим вид доступа Группы контрагентов.
  5. В колонке Все разрешены (исключения назначаются в группах доступа) установим значение «Нет».

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

Настройка доступа напрямую по основному менеджеру

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

Посмотрим на пример логики работы: в профиле группы доступа мы указываем, что доступ к справочнику Контрагенты ограничивается по значению реквизита. Однако, если стандартного вида доступа ПоМенеджеру нет в списке, можно внедрить ограничение доступа по основному менеджеру через расширение (поможет расширение для ограничения доступа к контрагентам по менеджеру), используя готовые шаблоны кода.

Программная реализация и использование шаблонов RLS

Для программиста 1С задача может потребовать написания кастомного запроса в ограничении прав доступа. Разберем, как выглядит типичный шаблон RLS для такой задачи. В конфигураторе необходимо открыть роль, найти объект Справочник.Контрагенты и для права Чтение добавить ограничение.

Рассмотрим пример кода шаблона:


#ПоЗначениям( "Справочник.Контрагенты","Чтение","",
"ГруппыДоступности","Ссылка",
"Пользователи","ОсновнойМенеджер",
"","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","")

В данном примере используется стандартный шаблон #ПоЗначениям. Разберем параметры подробнее: мы указываем объект метаданных, тип права, а затем связку между полями таблицы и видами доступа. Система автоматически подставит в запрос условие, которое проверит, совпадает ли ОсновнойМенеджер в карточке клиента с текущим авторизованным пользователем.

Оптимизация производительности при использовании RLS

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

  1. Использование упрощенного RLS: Начиная с версии платформы 8.3.10, в 1С реализован механизм «производительного» RLS. Дополнительно стоит учитывать новое в платформе 8.3.24 по ускорению механизмов проверки прав доступа, что позволяет значительно повысить отзывчивость интерфейса.
  2. Индексация полей: Все поля, которые участвуют в условиях ограничения (например, ОсновнойМенеджер, ГруппаДоступа), должны быть проиндексированы. Это критически важно для оптимизации запросов динамических списков в крупных информационных базах.
  3. Минимизация групп: Не создавайте слишком много мелких групп доступа. Чем больше записей в таблицах прав, тем сложнее SQL-серверу строить план запроса.

Отдельно стоит отметить, что RLS влияет и на скорость формирования отчетов. Если какой-то отчет не должен учитывать ограничения прав, для него можно настроить выполнение в привилегированном режиме, что значительно его ускорит.

Типовые ошибки при настройке

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

Проверка корректности настроек

Для того чтобы убедиться, что менеджеры видят только свои данные, воспользуемся встроенным отчетом. Перейдем в Администрирование — Настройки пользователей и прав — Группы доступа и нажмем кнопку Отчет по правам доступа. Выбрав конкретного пользователя и объект Справочник.Контрагенты, мы увидим детальную расшифровку: какие роли дают доступ и какие условия RLS наложены на данные. Для более глубокого аудита существующих настроек можно использовать специальные отчеты, которые показывают всех пользователей в разрезе групп доступа или позволяют провести комплексную проверку ролей и профилей у пользователя — это отчет для анализа прав доступа и ограничений RLS. А самым наглядным способом проверки будет формирование списка контрагентов конкретного менеджера, чтобы посмотреть на результат его глазами.

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

← На главную