При работе в конфигурации 1С:Управление торговлей, редакция 11.1, пользователи могут столкнуться с парадоксальной ситуацией. Некоторые документы вида Поступление безналичных денежных средств открываются и проводятся без проблем, в то время как другие вызывают критическую ошибку: «У пользователя недостаточно прав на использование базы данных». Ситуация осложняется тем, что администратор видит эти документы как частично заполненные (например, с пустой табличной частью), а попытка пометить объект на удаление под пользователем выдает сообщение «Объект не обнаружен».
В этой статье мы подробно разберем, почему возникает такая ошибка, как ее диагностировать, когда стандартный Журнал регистрации бессилен, и какие шаги предпринять для восстановления работоспособности системы.
Рассмотрим природу данной ошибки. Сообщение о недостаточности прав на использование базы данных в контексте конкретного документа практически всегда указывает на работу механизма RLS (Record Level Security) — ограничения доступа на уровне записей. В отличие от обычных прав на объекты (чтение, изменение), RLS динамически модифицирует SQL-запрос к базе данных, добавляя в него условия ГДЕ (WHERE).
Проанализируем ситуацию: если документ приходит по обмену из другой базы и в нем не заполнены ключевые реквизиты (например, Организация, Банковский счет или Подразделение), по которым настроены ограничения в профиле пользователя, система 1С при попытке чтения документа не находит соответствия разрешенным значениям. В результате платформа считает, что данных для этого пользователя не существует (отсюда ошибка «Объект не обнаружен») или блокирует доступ на этапе инициализации формы.
Первым делом нам необходимо воспроизвести ошибку в режиме отладчика, чтобы понять, на каком этапе происходит прерывание процесса. Однако зайти в конфигуратор под пользователем с ограниченными правами часто невозможно или бесполезно. Разберем правильный алгоритм запуска отладки:
Сервис — Параметры.Запуск 1С:Предприятия выберем пункт Основные.Пользователь выберем именно того сотрудника, у которого возникает ошибка.ОК и запустим отладку (клавиша F5).Теперь система запустится под правами пользователя, но мы сможем устанавливать точки останова и отслеживать значения переменных. Важно помнить, что ошибка RLS часто происходит до события ПриЧтенииНаСервере, на этапе первичной выборки данных платформой для формирования формы документа.
Выясним причину, по которой документ становится «невидимым» для RLS. Рассмотрим документ под полными правами. Проанализируем следующие поля:
ГруппаДоступаПлатежныхДокументов. Если это поле содержит «битую» ссылку (объект не доехал по обмену), RLS выдаст ошибку прав.Если под полными правами мы видим пустую табличную часть, попробуем заполнить ее вручную и сохранить документ. Если после этого пользователь с ограниченными правами смог открыть документ — проблема локализована в данных, приходящих из обмена.
Посмотрим, что записывает система в момент ошибки. Обычный Журнал регистрации в случае RLS часто ограничивается лаконичной записью «Доступ запрещен». Чтобы получить детальную информацию, нам потребуется Технологический журнал (ТЖ).
Настроим сбор событий EXCP и DBMSSQL. В логах ТЖ мы сможем увидеть реальный SQL-запрос, который платформа отправляет к СУБД. В конце этого запроса будет секция с условиями RLS. Проанализируем ее, чтобы понять, по какому именно полю (колонке таблицы SQL) идет фильтрация, приводящая к пустому результату.
Иногда проблема кроется не в самом документе, а в некорректном состоянии вспомогательных данных в подсистеме управления доступом. В УТ 11.1 это случается довольно часто. Рассмотрим способы принудительного обновления прав:
Проанализируем возможность вызова программного обновления. Для этого можно создать внешнюю обработку и выполнить следующий код:
// Принудительное обновление вспомогательных данных групп доступа
УправлениеДоступом.ОбновитьДанныеОГруппахДоступа();
Также рекомендуется зайти в справочник Группы доступа, найти группу, в которую входит проблемный пользователь, и просто пересохранить ее (нажать «Записать и закрыть»). Это инициирует фоновое задание по пересчету прав доступа для всех участников группы.
Если мы выяснили, что причина в обмене, проанализируем состояние ссылок. Часто документ Поступление безналичных ДС ссылается на объекты, которые еще не были загружены или были удалены. Выполним стандартную процедуру Тестирование и исправление с установленной галочкой «Очистка ссылок на несуществующие объекты» (обязательно на копии базы!).
Для оперативного исправления можно использовать консоль запросов. Попробуем найти в документе ссылки, которые имеют тип УникальныйИдентификатор, но не ведут к реальному объекту:
ВЫБРАТЬ
Ссылка,
Организация,
БанковскийСчет
ИЗ
Документ.ПоступлениеБезналичныхДенежныхСредств
ГДЕ
Организация.Ссылка ЕСТЬ NULL И НЕ Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
Подведем итоги нашего исследования. Ошибка «Недостаточно прав на использование базы данных» в УТ 11.1 при открытии отдельных документов чаще всего является следствием сочетания двух факторов: строгих правил RLS и неполных данных, загруженных через механизм обмена.
Основные выводы для закрепления:
ОбновитьДанныеОГруппахДоступа() для актуализации прав в системе.Следуя этим шагам, мы сможем не только устранить текущую ошибку, но и предотвратить ее появление в будущем, настроив более корректные правила выгрузки данных в правилах обмена.