После обновления конфигурации 1С:ERP Управление предприятием до версии 2.5.12.x и выше многие специалисты сталкиваются с неприятной ситуацией: в обработке ПомощникПродаж при попытке оформления документов под правами обычного пользователя система выдает сообщение «объект не найден». При этом фактически документ в базе не создается, хотя под полными правами всё работает корректно. Рассмотрим подробно, почему это происходит и как диагностировать проблему.
Ситуация, когда пользователь видит надпись <Объект не найден...>, означает, что ссылка на документ была сформирована в памяти (или возвращена сервером), но сама запись объекта в таблицу базы данных не состоялась или была отменена. В контексте ERP 2.5.12 это чаще всего связано с откатом транзакции.
Проанализируем механику работы помощника: система генерирует ссылку, начинает транзакцию записи, натыкается на какую-то проверку (права, заполнение, бизнес-логика), выдает ошибку и откатывает транзакцию. Однако из-за особенностей интерфейса «Помощника продаж» само сообщение об ошибке может «проглатываться», а на форму возвращается ссылка, которая уже не указывает на реальную запись.
В последних релизах ветки 2.5.12 создание документов в «Помощнике продаж» было оптимизировано и вынесено в фоновые задания. Это сделано для того, чтобы интерфейс не «зависал» при длительных расчетах цен, скидок или графиков оплаты.
Выясним, как это влияет на права: фоновое задание выполняется в отдельном сеансе. Если у пользователя ограничены права на запуск фоновых заданий или выполнение кода в привилегированном режиме внутри этих заданий, процесс создания документа прерывается. Ошибка в фоне не всегда корректно транслируется на клиентскую форму, и пользователь видит пустой результат.
С выходом версии 2.5.12 были существенно доработаны механизмы RLS (Access Level Security). Даже если у пользователя есть полные права на документ ЗаказКлиента или РеализацияТоваровУслуг, «Помощник продаж» при записи проверяет данные в связанных объектах.
Проанализируем список объектов, на которые могут потребоваться дополнительные права:
Часто проблема кроется в расширениях конфигурации. В версии 2.5.12 могли измениться сигнатуры методов в модуле менеджера или модуле объекта документов. Если в вашей базе установлено расширение, которое перехватывает процедуру СоздатьДокументыНаСервере или ПередЗаписью, оно может работать некорректно в новом контексте.
Рекомендуется выполнить следующие действия для диагностики:
Поскольку система не выводит явную ошибку в интерфейс, нам необходимо заглянуть «под капот». Выполним следующие шаги:
Транзакция.Отмена.Доступ.Отказ с указанием конкретного реквизита или объекта, к которому не хватило прав.Если журнал регистрации не дает ответа, придется воспользоваться отладчиком. Посмотрим на пример того, как можно перехватить ошибку в модуле обработки ПомощникПродаж. Найдите место, где вызывается запись документа, и оберните его в блок Попытка...Исключение, чтобы вывести текст ошибки в консоль:
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ТекстОшибки = ИнформацияОбОшибке().Описание;
ЗаписьЖурналаРегистрации("ОшибкаСозданияДокумента", УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки);
Сообщить(ТекстОшибки);
КонецПопытки;
Использование такого подхода позволит вам увидеть реальную причину отката (например, «Поле Склад не заполнено» из-за RLS или «Недостаточно прав на регистр ГрафикиОплаты»).
В некоторых случаях «Помощник продаж» инициирует обращение к подключаемому оборудованию (например, для проверки остатков на ККМ или печати пречека). В версии 2.5.12 механизмы работы с оборудованием также претерпели изменения. Если у пользователя нет прав на справочники ДрайверыОборудования или КассыККМ, процедура создания документа может прерваться в самый последний момент.
Подводя итог, можно сказать, что ошибка «Объект не найден» — это симптом молчаливого отказа транзакции. Для решения задачи выполните следующие действия:
Следуя этим шагам, вы сможете локализовать причину и восстановить работоспособность помощника без необходимости предоставления пользователям полных прав.