Почему в журнал регистрации 1С попадают «лишние» записи при отборе по документу?

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

Часто при анализе работы пользователей в Журнале регистрации мы сталкиваемся с ситуацией, когда при установке отбора по конкретному документу (например, по Реализации товаров и услуг), в список попадают сотни записей с ошибками Доступ. Отказ в доступе, которые формально не относятся к данному документу. Давайте разберемся, почему это происходит и как правильно интерпретировать данные события в условиях работы механизмов RLS (ограничения доступа на уровне записей).

Разберем причину возникновения проблемы

Основная причина заключается в том, как платформа 1С:Предприятие фиксирует события в журнале. Когда вы открываете форму документа, система не просто считывает один объект. Она выполняет ряд запросов к базе данных, чтобы отобразить реквизиты, связанные справочники, цены и остатки. Если у пользователя настроены ограничения RLS на справочники (например, на Типы цен номенклатуры), любая попытка системы «заглянуть» в данные, к которым у пользователя нет прав, вызывает событие Отказ в доступе.

Почему же эти события «привязываются» к вашему документу? Все дело в контексте выполнения транзакции или запроса:

  1. Система инициирует открытие документа.
  2. В рамках этого действия выполняется запрос, который включает в себя ссылку на ваш документ как на объект-источник.
  3. Механизм RLS срабатывает на вложенных данных (типах цен).
  4. Журнал регистрации фиксирует отказ, и в поле Данные этой записи попадает ссылка на тот документ, который был «в контексте» запроса в момент ошибки.

Таким образом, наличие документа в отборе — это не ошибка фильтрации 1С, а отражение того факта, что текущая операция (открытие документа или работа с ним) неявно обращается к объектам, защищенным RLS.

Проанализируем технические детали

Важно понимать, что в конфигурациях, подобных УТ 10.3, логика работы с ценами может быть реализована достаточно глубоко. Например, если документ регистрирует цены продажи, то при открытии формы происходит обращение к регистрам сведений или справочникам цен. Если эти метаданные закрыты от пользователя, система будет генерировать ошибку при каждом обращении к документу, использующему эти цены.

Рассмотрим, что происходит «под капотом» при открытии формы:

Как убедиться в источнике проблемы

Чтобы окончательно убедиться, что происходит именно «косвенное» обращение, выполним следующие шаги:

  1. Проверка прав пользователя: Убедитесь, что у пользователя действительно есть роль с ограничением по RLS. Часто достаточно временно дать полные права, чтобы увидеть, исчезают ли записи. Если исчезают — причина точно в настройках доступа.
  2. Анализ подписок на события: Проверьте, нет ли в конфигурации общих модулей или подписок на события, которые срабатывают при записи или открытии документа и принудительно обращаются к справочникам цен.
  3. Использование Технологического журнала: Если ситуация критична, настройте Технологический журнал для фиксации событий EXCP и DBMSSQL. Это позволит увидеть полный стек вызовов и понять, какой именно запрос «триггерит» отказ в доступе.

Что делать с этими записями?

Важно понимать: наличие таких записей в журнале при отборе по документу — это не поломка платформы, а свидетельство того, что бизнес-логика документа пересекается с ограничениями доступа пользователя. Чтобы минимизировать «шум» в журнале, можно предпринять следующее:

Подводя итог, помните: Журнал регистрации отображает реальную картину взаимодействия прав доступа и объектов. Если вы видите лишние строки, значит, в данный момент система пытается получить данные, которые для текущего пользователя скрыты, используя ваш документ как контекст этой попытки.

← На главную