Настройка прав доступа на уровне записей (RLS — Record Level Security) в конфигурации 1С:Розница 2.2 является одной из самых сложных и обсуждаемых тем. Часто администраторы и разработчики сталкиваются с ситуацией, когда стандартные настройки в пользовательском режиме не приносят ожидаемого результата: пользователи продолжают видеть «чужие» магазины, документы или товары. В рамках данной статьи мы подробно разберем механизмы работы ограничений доступа, выясним, почему права могут не применяться мгновенно, и рассмотрим альтернативные способы разделения данных.
Для начала проанализируем стандартный алгоритм включения RLS в программе. Разберем по шагам, как ограничить доступ группы пользователей конкретными магазинами:
Важно понимать, что в «1С:Розница 2.2» ограничение по магазинам срабатывает преимущественно при записи или проведении документа. В списках выбора пользователь может продолжать видеть все объекты, но при попытке выбрать «чужой» магазин система выдаст ошибку доступа.
Одной из главных причин, по которой настройки RLS «не работают» сразу после сохранения, является механизм использования вспомогательных таблиц (ключей доступа), на котором построена библиотека стандартных подсистем (БСП). Рассмотрим, как это работает: при изменении состава группы доступа или настроек ограничений система не пересчитывает права мгновенно для всех записей базы данных, так как это создало бы колоссальную нагрузку.
Для актуализации прав используется специальное регламентное задание Обновление параметров прав доступа. Если в вашей базе данных (особенно в файловом режиме) не настроен автоматический запуск регламентных заданий, изменения не вступят в силу. Выясним, как запустить обновление вручную:
Обновление параметров прав доступа.Только после завершения этого процесса ключи доступа будут пересчитаны, и пользователь начнет работать в рамках установленных ограничений.
Многие пользователи, имеющие опыт работы с «1С:Управление торговлей 11», ожидают увидеть в «Рознице» вид доступа Организации. Однако в типовой «Рознице 2.2» такой вид доступа в стандартных профилях отсутствует. Методология программы предполагает, что основным разрезом разделения прав является Магазин.
Проанализируем ситуацию: если в вашей структуре за каждым магазином закреплена строго одна организация, то ограничение по магазину косвенно ограничит и доступ к документам организации. Однако если в одном магазине ведут деятельность несколько юридических лиц (например, ООО и ИП), разделить их стандартным RLS будет крайне сложно.
Чтобы реализовать жесткое разделение по организациям, программисту придется:
Рассмотрим специфическую проблему: кассир с ограниченными правами при попытке сделать возврат видит чеки всех магазинов сети. Почему так происходит? Дело в том, что многие функции РМК выполняются в привилегированном режиме на стороне сервера. Это сделано разработчиками специально для ускорения работы кассы, чтобы при подборе товаров или поиске чеков система не тратила время на проверку прав доступа для каждой записи.
Если вам необходимо ограничить видимость чеков при возврате, стандартных настроек RLS будет недостаточно. Потребуется использование расширения конфигурации, которое будет накладывать дополнительный фильтр на динамический список выбора чеков, ограничивая его текущим магазином, установленным в настройках РМК.
Часто возникает задача: «Магазин А не должен видеть товары Магазина Б». Использование RLS для справочника Номенклатура — это самый верный способ заставить базу «тормозить». Проверка прав на каждую строку в справочнике из 50 000 позиций парализует работу подбора товаров.
Вместо RLS для номенклатуры рекомендуется использовать механизм Управление ассортиментом. Разберем, как его настроить:
Изменение ассортимента (операция «Ввод в ассортимент»), чтобы разрешить продажу конкретных товаров в конкретных магазинах.В этом случае товар будет физически виден в справочнике, но кассир не сможет добавить его в чек, если он не разрешен для продажи в данном магазине. Это гораздо производительнее, чем RLS.
Если после включения RLS вы заметили критическое замедление работы (особенно при открытии списков документов или подборе), проанализируйте возможность перехода на Распределенные Информационные Базы (РИБ) по магазинам. Это наиболее надежный способ разделения данных в «1С:Розница».
Преимущества РИБ:
В некоторых случаях, например, при массовом создании новых пользователей программным путем, может потребоваться принудительный запуск обновления прав доступа. Рассмотрим пример кода, который инициирует этот процесс:
// Программный запуск обновления ключей доступа через БСП
ПараметрыОбновления = УправлениеДоступомСлужебный.ПараметрыОбновленияДоступа();
ПараметрыОбновления.ДоступОбновлен = Истина;
УправлениеДоступомСлужебный.ОбновитьДоступ(ПараметрыОбновления);
Подводя итог, можно сказать, что RLS в «1С:Розница 2.2» — это рабочий инструмент, но он требует тонкой настройки и понимания того, что многие ограничения в интерфейсе (особенно в РМК) реализованы программно и требуют доработки кодом, а не просто установки «галочек» в профиле.