Почему в Помощнике продаж появляется ошибка Объект не обнаружен и как это исправить

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

После обновления конфигурации 1С:ERP Управление предприятием до версии 2.5.12.x и выше многие специалисты сталкиваются с неприятной ситуацией: в обработке ПомощникПродаж при попытке оформления документов под правами обычного пользователя система выдает сообщение «объект не найден». При этом фактически документ в базе не создается, хотя под полными правами всё работает корректно. Рассмотрим подробно, почему это происходит и как диагностировать проблему.

Природа ошибки: Почему ссылка есть, а объекта нет?

Ситуация, когда пользователь видит надпись <Объект не найден...>, означает, что ссылка на документ была сформирована в памяти (или возвращена сервером), но сама запись объекта в таблицу базы данных не состоялась или была отменена. В контексте ERP 2.5.12 это чаще всего связано с откатом транзакции.

Проанализируем механику работы помощника: система генерирует ссылку, начинает транзакцию записи, натыкается на какую-то проверку (права, заполнение, бизнес-логика), выдает ошибку и откатывает транзакцию. Однако из-за особенностей интерфейса «Помощника продаж» само сообщение об ошибке может «проглатываться», а на форму возвращается ссылка, которая уже не указывает на реальную запись.

Разберем причину №1: Фоновое выполнение операций

В последних релизах ветки 2.5.12 создание документов в «Помощнике продаж» было оптимизировано и вынесено в фоновые задания. Это сделано для того, чтобы интерфейс не «зависал» при длительных расчетах цен, скидок или графиков оплаты.

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

Разберем причину №2: Новые требования RLS и связанные регистры

С выходом версии 2.5.12 были существенно доработаны механизмы RLS (Access Level Security). Даже если у пользователя есть полные права на документ ЗаказКлиента или РеализацияТоваровУслуг, «Помощник продаж» при записи проверяет данные в связанных объектах.

Проанализируем список объектов, на которые могут потребоваться дополнительные права:

  1. Регистры сведений по ценообразованию: Проверьте права на чтение новых регистров, связанных с расчетом цен и скидок.
  2. Регистры расчетов с клиентами: В версии 2.5.12 изменилась логика учета взаиморасчетов. Отсутствие прав на чтение данных по онлайн-взаиморасчетам может блокировать проведение документа.
  3. Склады и соглашения: Если RLS настроен так, что пользователь не «видит» конкретный склад или соглашение, подставленное помощником по умолчанию, транзакция записи будет отменена из-за нарушения прав доступа при проверке заполнения.

Разберем причину №3: Влияние расширений и кэширования

Часто проблема кроется в расширениях конфигурации. В версии 2.5.12 могли измениться сигнатуры методов в модуле менеджера или модуле объекта документов. Если в вашей базе установлено расширение, которое перехватывает процедуру СоздатьДокументыНаСервере или ПередЗаписью, оно может работать некорректно в новом контексте.

Рекомендуется выполнить следующие действия для диагностики:

  1. Временно отключите все расширения и проверьте воспроизведение ошибки.
  2. Очистите серверный кэш и кэш пользователя.
  3. Проверьте, не используется ли в расширении обращение к реквизитам, которые были удалены или переименованы в новом релизе ERP.

Инструкция по диагностике через Журнал регистрации

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

  1. Откройте Журнал регистрации (Администрирование — Обслуживание — Журнал регистрации).
  2. Установите отбор по конкретному пользователю, у которого возникает проблема.
  3. В поле «Событие» выберите Транзакция.Отмена.
  4. Проанализируйте записи непосредственно перед отменой транзакции. Часто там фиксируется событие Доступ.Отказ с указанием конкретного реквизита или объекта, к которому не хватило прав.

Пример кода для локализации ошибки в отладке

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


Попытка
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
    ТекстОшибки = ИнформацияОбОшибке().Описание;
    ЗаписьЖурналаРегистрации("ОшибкаСозданияДокумента", УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки);
    Сообщить(ТекстОшибки);
КонецПопытки;

Использование такого подхода позволит вам увидеть реальную причину отката (например, «Поле Склад не заполнено» из-за RLS или «Недостаточно прав на регистр ГрафикиОплаты»).

Особенности работы с торговым оборудованием

В некоторых случаях «Помощник продаж» инициирует обращение к подключаемому оборудованию (например, для проверки остатков на ККМ или печати пречека). В версии 2.5.12 механизмы работы с оборудованием также претерпели изменения. Если у пользователя нет прав на справочники ДрайверыОборудования или КассыККМ, процедура создания документа может прерваться в самый последний момент.

Резюме и рекомендации

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

Следуя этим шагам, вы сможете локализовать причину и восстановить работоспособность помощника без необходимости предоставления пользователям полных прав.

← На главную