Как настроить права доступа на уровне записей (RLS) в 1С:Розница 2.2 по магазинам и организациям?

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

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

Пошаговая настройка ограничения доступа по магазинам

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

  1. Перейдем в раздел Администрирование — Настройки пользователей и прав.
  2. Установим флаг Ограничивать доступ на уровне записей. Помните, что включение этой опции может существенно замедлить работу системы, особенно в файловом варианте базы данных.
  3. Зайдем в справочник Группы доступа и создадим новую группу (например, «Продавцы Магазина №1»).
  4. Выберем соответствующий профиль (например, «Продавец-кассир»).
  5. На вкладке Ограничения доступа выберем вид доступа Магазины.
  6. В поле «Значение доступа» установим вариант Все запрещены, исключения назначаются в списке.
  7. В список ниже добавим только те магазины, с которыми должен работать пользователь.

Важно понимать, что в «1С:Розница 2.2» ограничение по магазинам срабатывает преимущественно при записи или проведении документа. В списках выбора пользователь может продолжать видеть все объекты, но при попытке выбрать «чужой» магазин система выдаст ошибку доступа.

Почему изменения не вступают в силу? Роль регламентных заданий

Одной из главных причин, по которой настройки RLS «не работают» сразу после сохранения, является механизм использования вспомогательных таблиц (ключей доступа), на котором построена библиотека стандартных подсистем (БСП). Рассмотрим, как это работает: при изменении состава группы доступа или настроек ограничений система не пересчитывает права мгновенно для всех записей базы данных, так как это создало бы колоссальную нагрузку.

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

  1. Перейдем в раздел Администрирование — Обслуживание — Регламентные операции — Регламентные и фоновые задания.
  2. Найдем в списке задание Обновление параметров прав доступа.
  3. Нажмем кнопку Выполнить сейчас.

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

Ограничение доступа по организациям: почему его нет в списке?

Многие пользователи, имеющие опыт работы с «1С:Управление торговлей 11», ожидают увидеть в «Рознице» вид доступа Организации. Однако в типовой «Рознице 2.2» такой вид доступа в стандартных профилях отсутствует. Методология программы предполагает, что основным разрезом разделения прав является Магазин.

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

Чтобы реализовать жесткое разделение по организациям, программисту придется:

Особенности работы RLS в Рабочем месте кассира (РМК)

Рассмотрим специфическую проблему: кассир с ограниченными правами при попытке сделать возврат видит чеки всех магазинов сети. Почему так происходит? Дело в том, что многие функции РМК выполняются в привилегированном режиме на стороне сервера. Это сделано разработчиками специально для ускорения работы кассы, чтобы при подборе товаров или поиске чеков система не тратила время на проверку прав доступа для каждой записи.

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

Ограничение видимости номенклатуры и управление ассортиментом

Часто возникает задача: «Магазин А не должен видеть товары Магазина Б». Использование RLS для справочника Номенклатура — это самый верный способ заставить базу «тормозить». Проверка прав на каждую строку в справочнике из 50 000 позиций парализует работу подбора товаров.

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

  1. Включите опцию Управление ассортиментом в настройках маркетинга.
  2. В настройках каждого магазина установите флаг Контролировать ассортимент.
  3. Используйте документы Изменение ассортимента (операция «Ввод в ассортимент»), чтобы разрешить продажу конкретных товаров в конкретных магазинах.

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

Производительность и альтернативные решения

Если после включения RLS вы заметили критическое замедление работы (особенно при открытии списков документов или подборе), проанализируйте возможность перехода на Распределенные Информационные Базы (РИБ) по магазинам. Это наиболее надежный способ разделения данных в «1С:Розница».

Преимущества РИБ:

  1. В базу магазина попадают только те данные (документы, остатки, цены), которые относятся непосредственно к этому магазину.
  2. RLS можно полностью выключить, что обеспечит максимальную скорость работы.
  3. Магазин может работать автономно при отсутствии интернета.
  4. Аналитика по всем магазинам консолидируется в центральном узле автоматически.

Пример кода для программного обновления прав

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


// Программный запуск обновления ключей доступа через БСП
ПараметрыОбновления = УправлениеДоступомСлужебный.ПараметрыОбновленияДоступа();
ПараметрыОбновления.ДоступОбновлен = Истина;
УправлениеДоступомСлужебный.ОбновитьДоступ(ПараметрыОбновления);

Подводя итог, можно сказать, что RLS в «1С:Розница 2.2» — это рабочий инструмент, но он требует тонкой настройки и понимания того, что многие ограничения в интерфейсе (особенно в РМК) реализованы программно и требуют доработки кодом, а не просто установки «галочек» в профиле.

← На главную