Администрирование · 11 мин
РЛС в 1С: что это такое и как работает ограничение доступа на уровне записей
РЛС в 1С — ограничение доступа на уровне записей. Разбираем, что это, где применяется, как настроить шаблоны и шаблоны ограничений, типичные ошибки и проверку работы.
Когда в одной базе 1С работают несколько отделов, филиалов или юридических лиц, рано или поздно встает вопрос: как сделать так, чтобы менеджер одной организации не видел документы другой. Отключать доступ к целым видам документов нельзя — работать-то надо. Для таких задач в платформе 1С:Предприятие существует механизм РЛС — ограничение доступа на уровне записей.
РЛС работает «прозрачно» для пользователя: он открывает привычный список документов, но видит только те строки, которые ему разрешены. Запросы, отчеты, динамические списки — все они автоматически дополняются условиями отбора, которые платформа подставляет на основании прав из роли пользователя. Программисту при этом не нужно в каждом запросе вручную прописывать фильтрацию.
Механизм мощный, но требует аккуратности: неправильно написанный шаблон ограничения способен либо «спрятать» нужные данные, либо, наоборот, открыть лишнее, а еще — заметно замедлить работу базы. Ниже разберем, как устроен РЛС, где он применяется, как его настроить и как проверить, что ограничения реально работают.
Что такое РЛС и чем он отличается от обычных прав
Стандартные права в ролях 1С (чтение, добавление, изменение, удаление) действуют на объект целиком: либо пользователь может читать все документы «Реализация товаров», либо не может читать ни одного. Это грубый уровень разграничения — по типу данных.
РЛС добавляет второй, тонкий уровень — по содержимому записей. Например, право «Чтение» на документ есть у всех менеджеров, но ограничение по полю «Организация» оставляет каждому только документы его организации. Аналогично ограничивают доступ по складам, контрагентам, подразделениям, физическим лицам (актуально для зарплатных данных) и другим измерениям.
Важно понимать: РЛС — это не отдельная «галочка», а текстовое условие на языке запросов, которое пишется прямо в роли, в поле «Ограничение доступа» для конкретного права. Условие может ссылаться на параметры сеанса (например, «ТекущийПользователь» или «РазрешенныеОрганизации»), значения которых подставляются при входе пользователя в систему.
Где РЛС применяется в типовых конфигурациях
В типовых решениях (1С:ERP, «Комплексная автоматизация», «Зарплата и управление персоналом», «Бухгалтерия предприятия») РЛС уже встроен и активируется функциональными опциями. Наиболее распространенные сценарии:
- ограничение доступа по организациям — пользователи видят документы и отчеты только по «своим» юрлицам;
- ограничение по складам и магазинам — кладовщик работает только со своим складом;
- ограничение по контрагентам и партнерам — менеджер видит только своих клиентов;
- ограничение по физическим лицам и подразделениям — в зарплатных конфигурациях кадровик видит только закрепленных сотрудников;
- ограничение по кассам, банковским счетам, договорам — в финансовых подсистемах.
В «1С:Бухгалтерии» ограничение по организациям включается в настройках прав пользователей (раздел администрирования, группы доступа). В ЗУП ограничения по физлицам настраиваются через группы доступа физических лиц. Включать эти механизмы «вручную» в ролях типовой конфигурации обычно не требуется — достаточно штатных настроек.
Как устроен механизм: шаблоны и параметры сеанса
Технически ограничение записывается в конфигураторе: роль → право (например, «Чтение») → поле «Ограничение доступа». Текст ограничения — это условие на языке запросов, которое платформа подставляет во все обращения к таблице. Чтобы не дублировать одно и то же условие в десятках ролей, используются шаблоны ограничений — общие тексты с параметрами, хранящиеся в ветке «Шаблоны ограничений» роли.
Ключевой элемент — параметры сеанса. Это значения, которые вычисляются один раз при входе пользователя (в обработчике «УстановкаПараметровСеанса») и потом доступны в шаблонах РЛС. Например, параметр «РазрешенныеОрганизации» заполняется списком организаций из группы доступа пользователя, и шаблон ограничения сравнивает поле «Организация» документа с этим списком.
#ШаблонОграничения("ПоОрганизациям")
ГДЕ
Организация В (&РазрешенныеОрганизации)При выполнении запроса платформа фактически дописывает эти условия к тексту запроса, а при интерактивных действиях (открытие формы, проведение) дополнительно проверяет доступность конкретной записи. Поэтому пользователь не сможет обойти ограничение ни через список, ни через прямую ссылку на чужой документ — при попытке открыть недоступную запись система выдаст сообщение о нарушении прав.
Как настроить РЛС: пошаговый порядок
Если речь о типовой конфигурации, начинайте со штатных средств: включите нужную функциональную опцию (например, «Ограничивать доступ на уровне записей»), создайте профили групп доступа, назначьте пользователям группы и заполните разрешенные значения (организации, склады, физлица). Этого достаточно в большинстве случаев.
Если нужна собственная логика в самописной или доработанной конфигурации, порядок такой:
- 1Определите измерение разграничения: по какому реквизиту (организация, склад, контрагент) будут делиться данные.
- 2Создайте параметр сеанса подходящего типа (обычно — список значений или таблица разрешенных ссылок) и заполните его в обработчике установки параметров сеанса.
- 3Создайте шаблон ограничения в ветке шаблонов роли, используя параметр сеанса.
- 4Пропишите ограничение для нужных прав (Чтение, Добавление, Изменение, Удаление) на конкретные объекты, указав поля, по которым действует отбор.
- 5Назначьте роль тестовому пользователю и проверьте результат под его сеансом.
- 6Проверьте производительность типовых операций: списки, проведение, отчеты.
При написании шаблона учитывайте составные типы полей: если реквизит может хранить ссылки разных типов, условие должно корректно обрабатывать все варианты, иначе часть записей «выпадет» из доступа. Также помните, что ограничение на право «Чтение» и на «Изменение» задается отдельно — можно, например, разрешить читать все документы, но изменять только свои.
Как проверить, что РЛС работает правильно
Проверку всегда выполняйте под учетной записью реального пользователя с ограниченными правами, а не под администратором — у полных прав ограничения не действуют, и вы просто не увидите эффекта. Заведите тестового пользователя, назначьте ему целевой профиль и войдите под ним.
Как проверить результат
Видны только записи по разрешенным организациям/складам, счетчики списка совпадают с ожиданием
Видны чужие документы либо список пуст, хотя разрешенные данные есть
Сообщение о нарушении прав доступа
Документ открывается и доступен для редактирования
Данные в отчетах совпадают с тем, что видно в списках
В отчете «просвечивают» суммы по недоступным записям
Списки и проведение работают с приемлемой скоростью
Резкое замедление после включения РЛС — признак тяжелого шаблона
Отдельно проверьте граничные ситуации: документ без заполненной организации, новый документ (доступность создания), копирование чужого документа, обмен данными и фоновые задания — они выполняются под служебными пользователями, и их права тоже нужно продумать.
Влияние на производительность и типичные ошибки
РЛС увеличивает нагрузку на СУБД: каждый запрос обрастает дополнительными соединениями с таблицами разрешенных значений. На небольших базах это незаметно, но при больших объемах и сложных шаблонах (с вложенными запросами, соединениями с несколькими таблицами) списки могут открываться ощутимо медленнее. Поэтому шаблоны стараются делать максимально простыми, а промежуточные данные — материализовать в параметрах сеанса.
Полезный прием диагностики: если пользователь жалуется, что «ничего не видит», первым делом проверьте, чем заполнен соответствующий параметр сеанса для него. В большинстве случаев причина именно в пустом списке разрешенных значений, а не в самом шаблоне.
Когда РЛС не нужен: альтернативы
Не каждую задачу разграничения стоит решать через РЛС. Если нужно просто запретить целый вид документов или справочников — достаточно обычных прав в ролях. Если требуется скрыть отдельные колонки или реквизиты — это решается настройкой интерфейса и функциональными опциями. Для разделения данных между совершенно независимыми компаниями иногда проще и надежнее использовать разные информационные базы или разделители в режиме сервиса.
Как выбрать действие
Что важно запомнить
РЛС — это ограничение доступа на уровне записей через шаблоны условий в ролях и параметры сеанса. В типовых конфигурациях используйте штатные группы доступа, собственные шаблоны проверяйте на копии базы под тестовым пользователем и следите за производительностью запросов.
Частые вопросы
РЛС замедляет работу базы?
Да, любое ограничение на уровне записей добавляет условия в каждый запрос к защищаемой таблице. Насколько это заметно, зависит от сложности шаблона и объема данных: простые условия по одному полю почти не ощущаются, а шаблоны с соединениями нескольких таблиц могут серьезно замедлить списки и отчеты. Оптимизация обычно сводится к упрощению шаблона и переносу вычислений в параметры сеанса.
Почему под администратором РЛС не работает?
Так задумано платформой: пользователи с полными правами (роль «ПолныеПрава» / административные права) не подчиняются ограничениям на уровне записей. Поэтому тестировать РЛС нужно только под обычным пользователем с целевым профилем доступа.
Можно ли настроить РЛС без программиста?
В типовых конфигурациях — да: ограничения по организациям, складам, физическим лицам включаются через функциональные опции и группы доступа в пользовательском режиме. Написание собственных шаблонов ограничений в конфигураторе уже требует навыков разработки и знания языка запросов.
Распространяется ли РЛС на отчеты?
Да, если отчет построен на запросах к таблицам, для которых заданы ограничения, платформа автоматически применяет их и в отчетах. Исключение — отчеты, где разработчик намеренно отключил ограничения (например, сводная аналитика для руководства), поэтому права на такие отчеты нужно раздавать осознанно.
Что делать, если после включения РЛС пользователь видит пустые списки?
Чаще всего причина в том, что для пользователя не заполнены разрешенные значения: он не включен в группу доступа или у группы не заданы организации/склады. Проверьте состав групп доступа и значения параметров сеанса. Реже причина — ошибка в шаблоне, например сравнение по неверному полю.
Можно ли разрешить читать все документы, но изменять только свои?
Да, ограничения задаются отдельно для каждого права: на «Чтение» ограничение не назначается (или назначается широкое), а на «Изменение» и «Удаление» прописывается условие по разрешенным значениям. Это типовой сценарий для руководителей и аудиторов.