При работе с алкогольной продукцией в программе 1С:Розница 2.2 (базовая или проф-версия) пользователи часто сталкиваются с ситуацией, когда обмен с ЕГАИС полностью останавливается. При попытке выполнить обмен или запросить остатки система выдает критическую ошибку следующего вида: При загрузке документа http://localhost:8080/opt/out/ReplyRests_v2/8 с типом ReplyRests_v2 возникла ошибка: Не найден документ с идентификатором запроса.... При этом новые накладные ТТН перестают поступать в информационную базу, а остатки не обновляются.
В этой статье мы подробно разберем, почему возникает данная проблема, проанализируем механизм взаимодействия программных продуктов семейства 1С с Универсальным транспортным модулем (УТМ) и изучим пошаговые сценарии ее решения.
Давайте разберем внутреннюю логику взаимодействия программ автоматизации с ЕГАИС. Обмен происходит по двухэтапной схеме:
1С:Розница генерирует исходящий запрос (например, запрос остатков на регистре №1 или №2), присваивает ему уникальный идентификатор (GUID) и отправляет его в УТМ. Данные о запросе и его GUID записываются в регистры сведений информационной базы 1С.УТМ передает этот запрос на сервера ФС РАР, получает ответ и сохраняет его во входящую очередь в виде XML-файла.1С:Розница опрашивает входящую очередь УТМ (адрес http://localhost:8080/opt/out), считывает XML-файлы ответов, находит внутри каждого файла уникальный идентификатор исходного запроса и пытается сопоставить его с записями в своей базе данных.Ошибка «Не найден документ с идентификатором запроса» означает, что во входящей очереди УТМ лежит ответ на запрос, о котором текущая база 1С:Розница ничего не знает. Программа пытается прочитать этот файл, не находит в своей базе созданного запроса с соответствующим GUID, прерывает транзакцию и аварийно завершает сеанс обмена. Из-за этого все последующие документы в очереди ЕГАИС остаются непрочитанными.
Проанализируем ситуации, при которых возникает подобная рассинхронизация:
УТМ) подключено несколько программ. Например, на кассе установлен терминал Эвотор или Sigma, который в фоновом режиме запрашивает остатки, а учет ведется в 1С:Розница. УТМ получает ответ для кассы, но 1С пытается прочитать его первой.УТМ подключены две разные базы данных (например, рабочая и тестовая, или базы двух разных торговых точек), они будут мешать друг другу, забирая чужие пакеты данных.УТМ.Рассмотрим подробнее три основных способа устранения этой неисправности.
Этот способ является наиболее безопасным и быстрым, так как мы удаляем только конкретный зависший файл, не затрагивая остальные документы во входящей очереди УТМ. Для выполнения операции мы воспользуемся встроенной в операционную систему Windows консольной утилитой curl.
Разберем этот процесс по шагам:
http://localhost:8080/opt/out/ReplyRests_v2/8.cmd (Командная строка), нажмите на нее правой кнопкой мыши и выберите пункт «Запуск от имени администратора».-X DELETE:
curl -X DELETE http://localhost:8080/opt/out/ReplyRests_v2/8
1С:Розница и повторно запустите команду «Выполнить обмен с ЕГАИС».Если ошибка повторится, но уже с другим адресом документа (например, ReplyRests_v2/9), выполните аналогичную процедуру удаления для нового адреса. Повторяйте до тех пор, пока очередь не очистится от некорректных запросов.
Если «чужих» документов в очереди накопилось слишком много или ручное удаление через curl вызывает затруднения, можно прибегнуть к полной очистке базы данных УТМ. Посмотрим на этот метод детально.
Важное предупреждение: При полной очистке базы данных транспортного модуля удалятся абсолютно все находящиеся в нем на тот момент документы (включая еще не загруженные в 1С новые накладные ТТН от поставщиков). После очистки вам потребуется зайти в Личный кабинет ЕГАИС и переотправить неполученные накладные заново по их номерам TTN.
Выполним очистку базы по шагам:
УТМ. Для этого нажмите правой кнопкой мыши на значок агента УТМ в системном трее Windows (возле часов) и выберите пункт «Остановить». Также это можно сделать через стандартную оснастку операционной системы services.msc (Службы), остановив службу с именем Transport.C:\UTM\transporter\ или C:\TT\transporter\.transportDB. В этой папке хранится локальная база данных Derby, содержащая все документы.transportDB_backup). Это позволит вам сохранить резервную копию на случай непредвиденных обстоятельств.УТМ обратно (через агент в трее или оснастку служб). После старта служба автоматически создаст новую чистую папку transportDB.1С:Розница. Программа успешно свяжется с пустым транспортным модулем, и ошибка исчезнет.Пример консольных команд для автоматизации процесса остановки служб и подготовки директории:
net stop transport
rename "C:\UTM\transporter\transportDB" "transportDB_old"
net start transport
Проанализируем ситуацию непосредственно через веб-интерфейс транспортного модуля, чтобы понять, какие именно документы мешают нашей работе. Это поможет исключить влияние внешних факторов и разобраться в структуре накопившихся файлов.
http://localhost:8080 и нажмите Enter. Перед вами откроется домашняя страница УТМ.http://localhost:8080/opt/out для просмотра xml-структуры очереди.<oref:ReplyId> — именно они содержат те идентификаторы, которые 1С не может найти в своей базе данных.1С:Предприятие (которые можно скачать на профильных порталах разработчиков), вы можете подключиться к этому интерфейсу напрямую из вашей учетной системы. Такие обработки позволяют визуально отметить флажками ненужные XML-пакеты в списке и удалить их одной кнопкой без использования командной строки Windows.Чтобы избежать повторного возникновения подобных сбоев и обеспечить стабильный обмен данными, рекомендуем придерживаться следующих правил:
УТМ более одной информационной базы 1С.1С:Розница. Все запросы должны исходить строго из одной точки управления.УТМ.Применяя данные методики на практике, вы сможете быстро восстановить работоспособность интеграции вашей торговой точки с государственной системой маркировки алкоголя и избежать простоев в продажах.