Ограничение прав доступа на уровне записей 1с бухгалтерия

Пошаговый лайфхак: 3 клика, чтобы скрыть чужие проводки в 1С и спать спокойно

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Современные компании всё чаще сталкиваются с необходимостью гибко управлять доступом к данным. В 1С:Бухгалтерия 8.3 появился мощный инструмент — ограничение прав доступа на уровне записей (Row-Level Security, RLS), который позволяет скрывать или «режать» отдельные строки документов и справочников в зависимости от роли сотрудника. Это решение критически важно для крупных бизнесов, холдингов и филиальных структур, где бухгалтер, кассир и директор должны видеть разные объёмы одной и той же базы.

Зачем нужен RLS в 1С:Бухгалтерия?

  1. Конфиденциальность. Данные о зарплате, дивидендах или сделках закрыты для большинства сотрудников.
  2. Разграничение ответственности. Филиал видит только «свои» счета 90, 91, 60, 62 и т. д.
  3. Производительность. Пользователь работает с меньшим объёмом данных, интерфейс загружается быстрее.
  4. Соответствие законодательству. Распоряжение ЦБ РФ № 683-П и 684-П требует ограничить доступ к сведениям, составляющим банковскую тайну.

Где в 1С:Бухгалтерия реализован RLS?

Начиная с релиза 3.0.89 в конфигурацию добавлены специальные роли, в которых прописаны параметры отбора записей. Ограничение работает:

  • в списках документов и справочников;
  • в отчётах (баланс, оборотно-сальдовая ведомость, карта счёта);
  • в обработке «Регламентные операции» (некоторые виды проводок становятся недоступны);
  • в режиме REST API и COM-соединения (важно для интеграций).

Как включить ограничение прав доступа на уровне записей

Шаг 1. Подготовка информационной базы

Перед внедрением RLS обязательно выполните:

  1. Резервное копирование базы (ПТК → Администрирование → Резервное копирование).
  2. Проверка целостности (ПТК → Администрирование → Проверка и исправление).
  3. Обновление платформы до последней стабильной версии (3.0.150 или выше).

Шаг 2. Назначение ролей с RLS

В конфигураторе откройте раздел Администрирование → Пользователи и права → Роли. Создайте новую роль или откройте существующую и включите флажок «Ограничение доступа на уровне записей».
Далее укажите параметр отбора. Примеры:

 // Показывать только документы филиала № 3
 &ВЫБРАТЬ
 Ссылка
 ИЗ
 Документ.СчетФактураВыданный
 ГДЕ
 Организация.Код = "003"

Шаг 3. Связать роль с пользователем

Перейдите в Администрирование → Пользователи и права → Пользователи.
Откройте карточку пользователя, вкладка «Роли», добавьте созданную роль с RLS.

Шаг 4. Проверка

Зайдите под пользователем с новой ролью. Откройте журнал документов «Реализация товаров и услуг». Должны отображатся только те строки, которые удовлетворяют указанному параметру отбора.

Особенности и ограничения

  • RLS игнорирует аналитику, если в фильтре используются «сквозные» измерения (например, «Контрагент» без привязки к организации).
  • Совместимость с режимом «Удалённый офис» — ограничения распространяются и на копию базы в режиме «тонкий клиент».
  • Расширения не могут изменять фильтр RLS напрямую, но могут предоставлять дополнительные параметры в справочнике «Дополнительные сведения».
  • Производительность: при больших объёмах данных (> 5 млн строк) рекомендуется создавать индексы по полям, участвующим в фильтре.

Типовые сценарии

Сценарий 1. Мультифилиальная компания

Цель: каждый филиал видит только свои документы.
Реализация:

  1. В справочнике «Организации» добавить реквизит «КодФилиала».
  2. В роли RLS для бухгалтера прописать отбор Организация.КодФилиала = &ТекущийФилиал.
  3. В «Пользователи» → «Дополнительные сведения» для каждого сотрудника указать значение параметра &ТекущийФилиал.

Сценарий 2. Зарплатный проект

Бухгалтер по зарплате видит только документы «Начисление зарплаты» и «Расчётные листки», остальные документы скрыты.
Реализация:

 &ВЫБРАТЬ
 Ссылка
 ИЗ
 Документ.НачислениеЗарплаты
 ОБЪЕДИНИТЬ ВСЕ
 &ВЫБРАТЬ
 Ссылка
 ИЗ
 Документ.РасчетныйЛисток

Сценарий 3. Доступ «только свои» контрагенты

Менеджер видит контрагентов, за которыми закреплён в справочнике «Ответственные».
Реализация:

  • В справочнике «Контрагенты» завести реквизит «Менеджер» (тип — СправочникСсылка.Пользователи).
  • В RLS-фильтре указать Контрагенты.Менеджер = &ТекущийПользователь.

Контроль и аудит

Для контроля работы RLS используйте:

  1. Журнал регистрации — вкладка «События безопасности» показывает, кто и какие данные запрашивал.
  2. Отчёт «Контроль доступа» (раздел «Администрирование» → «Безопасность»).
  3. SQL-Trace (файл 1CV8*.log) — позволяет увидеть фактические запросы к СУБД.

Частые ошибки и способы их устранения

Ошибка Причина Решение
Некоторые строки всё равно видны всем В фильтре использовано поле без индекса или с NULL-значениями Создать индекс, обновить NULL на дефолтные значения
Сильно упала скорость списков Слишком сложный фильтр, много подзапросов Упростить выражение, использовать материализованные представления
Ошибка «Недостаточно прав для просмотра» Пользователю дана роль без RLS, но объект ограничен RLS в другом месте Проверить иерархию ролей, убрать конфликт

Подводим итог

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

  • сократить риск утечки конфиденциальной информации;
  • улучшить производительность за счёт меньшего объёма выгрузки;
  • удобно разграничить полномочия в рамках одной базы без создания множества ИБ.

Главное, тщательно проработать фильтры и протестировать каждую роль перед вводом в промышленную эксплуатацию. Удачи в настройке!