При настройке или эксплуатации обмена между 1С:Розница 2.2 и УТМ (Универсальным транспортным модулем) пользователи часто сталкиваются с ситуацией, когда синхронизация по коду ФСРАР проходит успешно, но при попытке загрузить документы (остатки, справки, накладные) система выдает серию ошибок. Типичный текст сообщения выглядит так: При загрузке документа с типом ReplyRests_v2 возникла ошибка: Не найден документ с идентификатором запроса b5064ed8.... Рассмотрим подробнее, почему возникают такие ошибки и как восстановить корректную работу системы.
Проанализируем архитектуру взаимодействия. УТМ работает как промежуточный почтовый ящик между 1С и сервером ЕГАИС. Когда 1С отправляет запрос (например, запрос остатков), она фиксирует в своей базе уникальный идентификатор этого запроса (UUID). Когда приходит ответ, 1С ищет в своей базе исходящую запись с таким же UUID. Если соответствие найдено, документ загружается.
Основная причина ошибки «Не найден документ с идентификатором запроса» заключается в том, что в очереди входящих сообщений УТМ находятся ответы на запросы, которые были отправлены не из этой базы 1С. Рассмотрим ситуации, когда это происходит:
Если в очереди УТМ скопилось много «чужих» или старых документов, которые блокируют обмен, проще всего полностью очистить базу сообщений модуля. Разберем по шагам, как это сделать правильно:
Transport, Transport-Updater и Transport-Monitoring.C:\UTM\ или C:\UTM\transporter\). Найдите папку transportDB. Вы можете либо удалить ее, либо переименовать (например, в transportDB_old), если хотите сохранить данные для архива.transportDB.После этой процедуры очередь входящих и исходящих в УТМ будет очищена. Теперь попробуйте выполнить обмен из 1С. Ошибки должны исчезнуть, так как программа больше не будет натыкаться на документы с неизвестными ей идентификаторами.
Для продвинутых пользователей и системных администраторов существует способ точечного удаления «проблемных» сообщений без полной очистки базы. Для этого используется утилита curl. Команда отправляется непосредственно в транспортный модуль.
Рассмотрим пример команды для удаления сообщения:
curl -X DELETE http://localhost:8080/opt/out/ReplyRests/15
Где ReplyRests/15 — это тип документа и его порядковый номер в очереди, который можно подсмотреть на локальной странице УТМ (обычно по адресу http://localhost:8080 в разделе «Входящие»). Выясним причину: 1С не может забрать документ, потому что он «чужой», и он продолжает висеть в УТМ, мешая остальным. Ручное удаление через DELETE решает эту проблему.
В некоторых конфигурациях (например, в 1С:ERP или последних релизах Розницы) можно попытаться «подсказать» программе, что этот документ — наш. Посмотрим на ситуацию, когда мы точно знаем, что документ предназначен для нас, но запись в базе повреждена.
Проанализируем техническую часть: данные об обменах хранятся в справочнике ЕГАИСПрисоединенныеФайлы или специальных регистрах сведений. Если вы нашли в журнале регистрации UUID запроса (например, 25df86c4-f908-4ef3-a11d-d315ef9ae037), можно попробовать найти запись с пустым идентификатором за текущую дату и вручную заполнить поле Идентификатор запроса. После этого при очередном сеансе обмена 1С «узнает» входящий файл и успешно его загрузит. Для решения похожих проблем рассинхронизации данных в ЕГАИС и базе Розницы можно использовать методику ручного изменения статусов марок.
Пример логики поиска в коде (для разработчиков):
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕГАИСЗапросы.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЕГАИСЗапросы КАК ЕГАИСЗапросы
|ГДЕ
| ЕГАИСЗапросы.ИдентификаторЗапроса = &ПустойID";
Запрос.УстановитьПараметр("ПустойID", "");
// Далее программно присваиваем ID из ошибки
Чтобы избежать подобных проблем в будущем, рассмотрим рекомендации по организации работы, если вам необходимо использовать несколько программ для одного ФСРАР ID:
DELETE, очередь будет расти бесконечно, вызывая ошибки переполнения.Подводя итог, отметим: появление ошибок с идентификаторами в 1С:Розница 2.2 — это чаще всего признак «засорения» очереди УТМ сообщениями от сторонних систем. Самым быстрым и эффективным решением остается остановка служб и удаление папки transportDB, что позволяет начать обмен с «чистого листа».