Современные компании всё чаще сталкиваются с необходимостью гибко управлять доступом к данным. В 1С:Бухгалтерия 8.3 появился мощный инструмент — ограничение прав доступа на уровне записей (Row-Level Security, RLS), который позволяет скрывать или «режать» отдельные строки документов и справочников в зависимости от роли сотрудника. Это решение критически важно для крупных бизнесов, холдингов и филиальных структур, где бухгалтер, кассир и директор должны видеть разные объёмы одной и той же базы.
Зачем нужен RLS в 1С:Бухгалтерия?
- Конфиденциальность. Данные о зарплате, дивидендах или сделках закрыты для большинства сотрудников.
- Разграничение ответственности. Филиал видит только «свои» счета 90, 91, 60, 62 и т. д.
- Производительность. Пользователь работает с меньшим объёмом данных, интерфейс загружается быстрее.
- Соответствие законодательству. Распоряжение ЦБ РФ № 683-П и 684-П требует ограничить доступ к сведениям, составляющим банковскую тайну.
Где в 1С:Бухгалтерия реализован RLS?
Начиная с релиза 3.0.89 в конфигурацию добавлены специальные роли, в которых прописаны параметры отбора записей. Ограничение работает:
- в списках документов и справочников;
- в отчётах (баланс, оборотно-сальдовая ведомость, карта счёта);
- в обработке «Регламентные операции» (некоторые виды проводок становятся недоступны);
- в режиме REST API и COM-соединения (важно для интеграций).
Как включить ограничение прав доступа на уровне записей
Шаг 1. Подготовка информационной базы
Перед внедрением RLS обязательно выполните:
- Резервное копирование базы (ПТК → Администрирование → Резервное копирование).
- Проверка целостности (ПТК → Администрирование → Проверка и исправление).
- Обновление платформы до последней стабильной версии (3.0.150 или выше).
Шаг 2. Назначение ролей с RLS
В конфигураторе откройте раздел Администрирование → Пользователи и права → Роли. Создайте новую роль или откройте существующую и включите флажок «Ограничение доступа на уровне записей».
Далее укажите параметр отбора. Примеры:
// Показывать только документы филиала № 3 &ВЫБРАТЬ Ссылка ИЗ Документ.СчетФактураВыданный ГДЕ Организация.Код = "003"
Шаг 3. Связать роль с пользователем
Перейдите в Администрирование → Пользователи и права → Пользователи.
Откройте карточку пользователя, вкладка «Роли», добавьте созданную роль с RLS.
Шаг 4. Проверка
Зайдите под пользователем с новой ролью. Откройте журнал документов «Реализация товаров и услуг». Должны отображатся только те строки, которые удовлетворяют указанному параметру отбора.
Особенности и ограничения
- RLS игнорирует аналитику, если в фильтре используются «сквозные» измерения (например, «Контрагент» без привязки к организации).
- Совместимость с режимом «Удалённый офис» — ограничения распространяются и на копию базы в режиме «тонкий клиент».
- Расширения не могут изменять фильтр RLS напрямую, но могут предоставлять дополнительные параметры в справочнике «Дополнительные сведения».
- Производительность: при больших объёмах данных (> 5 млн строк) рекомендуется создавать индексы по полям, участвующим в фильтре.
Типовые сценарии
Сценарий 1. Мультифилиальная компания
Цель: каждый филиал видит только свои документы.
Реализация:
- В справочнике «Организации» добавить реквизит «КодФилиала».
- В роли RLS для бухгалтера прописать отбор
Организация.КодФилиала = &ТекущийФилиал. - В «Пользователи» → «Дополнительные сведения» для каждого сотрудника указать значение параметра
&ТекущийФилиал.
Сценарий 2. Зарплатный проект
Бухгалтер по зарплате видит только документы «Начисление зарплаты» и «Расчётные листки», остальные документы скрыты.
Реализация:
&ВЫБРАТЬ Ссылка ИЗ Документ.НачислениеЗарплаты ОБЪЕДИНИТЬ ВСЕ &ВЫБРАТЬ Ссылка ИЗ Документ.РасчетныйЛисток
Сценарий 3. Доступ «только свои» контрагенты
Менеджер видит контрагентов, за которыми закреплён в справочнике «Ответственные».
Реализация:
- В справочнике «Контрагенты» завести реквизит «Менеджер» (тип — СправочникСсылка.Пользователи).
- В RLS-фильтре указать
Контрагенты.Менеджер = &ТекущийПользователь.
Контроль и аудит
Для контроля работы RLS используйте:
- Журнал регистрации — вкладка «События безопасности» показывает, кто и какие данные запрашивал.
- Отчёт «Контроль доступа» (раздел «Администрирование» → «Безопасность»).
- SQL-Trace (файл 1CV8*.log) — позволяет увидеть фактические запросы к СУБД.
Частые ошибки и способы их устранения
| Ошибка | Причина | Решение |
|---|---|---|
| Некоторые строки всё равно видны всем | В фильтре использовано поле без индекса или с NULL-значениями | Создать индекс, обновить NULL на дефолтные значения |
| Сильно упала скорость списков | Слишком сложный фильтр, много подзапросов | Упростить выражение, использовать материализованные представления |
| Ошибка «Недостаточно прав для просмотра» | Пользователю дана роль без RLS, но объект ограничен RLS в другом месте | Проверить иерархию ролей, убрать конфликт |
Подводим итог
Ограничение прав доступа на уровне записей в 1С:Бухгалтерия — это не просто модный функционал, а жизненно важный механизм защиты данных. Грамотно настроенный RLS позволяет:
- сократить риск утечки конфиденциальной информации;
- улучшить производительность за счёт меньшего объёма выгрузки;
- удобно разграничить полномочия в рамках одной базы без создания множества ИБ.
Главное, тщательно проработать фильтры и протестировать каждую роль перед вводом в промышленную эксплуатацию. Удачи в настройке!