С развитием системы ЕГАИС и обновлением Универсального Транспортного Модуля (УТМ) пользователи и разработчики 1С периодически сталкиваются с новыми типами документов, которые «прилетают» в систему. Одним из таких документов стал TTNHistoryF2Reg. Рассмотрим подробнее, что это за объект, почему типовые конфигурации (например, «1С:Розница 2.5») могут выдавать ошибки при его получении и как правильно обработать эту ситуацию.
Выясним причину появления этого документа. Объект типа TTNHistoryF2Reg является ответом на запрос QueryHistoryRestBReg. Это запрос истории движения алкогольной продукции по конкретной справке 2 (регистрационный номер формы учета №2). Данный функционал был официально внедрен в версиях УТМ начиная с 4.2.0 для обеспечения полной прозрачности цепочки поставок.
Проанализируем ситуацию: если вы обнаружили такой документ в своей входящей очереди, хотя целенаправленно его не запрашивали, это может быть результатом работы автоматизированных внешних сервисов, интегрированных с вашим УТМ, или специфических обработок внутри 1С, которые пытаются актуализировать данные о движении партий. Документ носит исключительно информационный характер и не вносит никаких изменений в остатки на регистрах ЕГАИС.
Разберем, почему типовые механизмы часто не могут «проглотить» этот документ. Основная техническая сложность заключается в том, что структура XML-файла TTNHistoryF2Reg часто не проходит валидацию по стандартным XSD-схемам, которые жестко зашиты в коде интеграционных библиотек 1С. Это происходит по следующим причинам:
В таких случаях система выдает сообщение об ошибке «Неизвестный тип документа» или «Ошибка разбора XML», и обмен с ЕГАИС может приостановиться, так как документ остается в очереди УТМ и блокирует чтение последующих сообщений.
Если для вашей текущей деятельности история движения продукции по справке 2 не критична, самым простым и эффективным решением будет удаление этого документа из входящей очереди УТМ. Рассмотрим, как это сделать:
http://localhost:8080). В разделе входящих документов найдите сообщение с типом TTNHistoryF2Reg и удалите его вручную.Важный момент: если документ не обрабатывается, его необходимо удалить, иначе он будет висеть в очереди бесконечно, мешая получению ТТН и актов.
Если же информация о цепочке поставщиков вам необходима для анализа, мы можем реализовать чтение этого документа программно, минуя стандартную валидацию по схемам. Проанализируем пример того, как можно подойти к парсингу такого файла.
Для обхода ошибки валидации используйте объект ЧтениеXML. Мы рекомендуем игнорировать проверку пространства имен, если она вызывает сбой. Рассмотрим логику обработки:
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКФайлу);
// Пропускаем проверку соответствия схеме, если стандартный метод парсинга выдает ошибку
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.ЛокальноеИмя = "HistoryF2Reg" Тогда
// Начинаем разбор блоков с данными о грузоотправителях и ТТН
// Здесь можно извлечь номера ТТН, даты фиксации и реквизиты контрагентов
КонецЕсли;
КонецЦикла;
Документ содержит подробные блоки с информацией о каждом звене цепи: кто, кому и когда передавал данную партию алкоголя. Эти данные можно сохранять во вспомогательные справочники или просто выводить в текстовый лог для анализа пользователем.
Подведем итоги нашего анализа:
Помните, что история может отображаться не полностью, если продукция перемещалась до введения этого функционала в ЕГАИС или в периоды масштабных миграций данных между регистрами.