При работе с маркированным алкоголем в программах семейства 1С (в частности, в конфигурациях 1С:Розница, 1С:Управление торговлей или 1С:УНФ) пользователи часто сталкиваются с неприятной ситуацией. При первой попытке пробить бутылку крепкого алкоголя кассир получает блокирующее сообщение: «Обмен с УТМ ЕГАИС уже запущен, дождитесь завершения предыдущего сеанса». Продажи останавливаются, а стандартные попытки перезапустить программу не всегда приносят желаемый результат.
В этой статье мы подробно разберем, почему возникает эта ошибка, как функционирует механизм программной блокировки обмена, и рассмотрим пошаговые методы очистки очереди зависших документов ЕГАИС.
Для предотвращения конфликтов при одновременной отправке запросов в Универсальный транспортный модуль (УТМ) система 1С использует механизм программных блокировок. Когда запускается фоновый или интерактивный обмен с ЕГАИС, программа устанавливает специальный сеансовый флаг (блокировку). В нормальных условиях после завершения транзакции и получения ответа от УТМ этот флаг автоматически снимается.
Однако, если сеанс обмена завершается аварийно или «зависает» на этапе ожидания ответа, блокировка остается активной. Выделим основные причины сбоя:
8080), из-за чего процесс обмена зависает в бесконечном ожидании ответа от веб-службы.Особого внимания требует петля дублирования документов, когда 1С пытается отправить акт, который уже зарегистрирован в ЕГАИС. При попытке повторной отправки сервер возвращает ошибку «Акт с номером ... уже зарегистрирован в системе». 1С не может корректно обработать такой ответ, сессия аварийно прерывается, а блокировка обмена «залипает».
---
Ниже представлены проверенные практические методы снятия блокировки и полной очистки очереди документов.
Очень часто причиной зависания транзакций является потеря связи УТМ с аппаратным ключом авторизации (Рутокен или JaCarta). Проанализируем, как быстро сбросить это состояние:
http://localhost:8080 (или укажем IP-адрес сервера УТМ в локальной сети).services.msc в строке «Выполнить»).Transport, Transport-Updater и Transport-Monitoring. Принудительно остановим их, а затем запустим заново.Если база данных работает в файловом режиме, для снятия зависшего фонового процесса достаточно полностью закрыть все сеансы пользователей 1С на данном компьютере (вплоть до перезагрузки ПК). Для клиент-серверного варианта базы выполним следующие действия:
Фоновое задание, связанное с обменом ЕГАИС, и принудительно завершим их.Чтобы программа перестала бесконечно пытаться отправить старые документы (например, акты списания немаркируемой продукции прошлых лет), нам необходимо изменить их статус непосредственно в базе данных. Выясним, как это сделать:
Статусы документов ЕГАИС.Проведен в ЕГАИС (или Подтвержден), а в поле «Дальнейшие действия» установим значение Не требуется. Сохраним изменения.Очередь передачи данных ЕГАИС. Если там содержатся записи по зависшим старым документам, аккуратно очистим их (удалим записи из этого регистра).Иногда кнопка пометки на удаление зависшего документа (например, акта списания за 2017 год) неактивна даже под правами администратора из-за жестких ограничений в кодовой базе формы документа. Разберем, как обойти это ограничение:
Акт списания ЕГАИС.Пометка удаления (или аналогичное системное свойство) и установим для него значение Да (Истина). Нажмем кнопку «Изменить реквизиты».Для наглядности рассмотрим пример кода, который может быть использован разработчиком во внешней обработке для программной пометки на удаление зависшего документа ЕГАИС без использования стандартных интерфейсных ограничений формы:
// Программная установка пометки удаления для зависшего документа ЕГАИС
СсылкаНаДокумент = Документы.АктСписанияЕГАИС.НайтиПоНомеру("0000-00001", Дата("20170101"));
Если Не СсылкаНаДокумент.Пустая() Тогда
ОбъектДокумента = СсылкаНаДокумент.ПолучитьОбъект();
ОбъектДокумента.УстановитьПометкуУдаления(Истина);
Попытка
ОбъектДокумента.Записать(РежимЗаписиДокумента.Запись);
Сообщить("Зависший документ успешно помечен на удаление!");
Исключение
Сообщить("Не удалось записать изменения: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
В редких случаях, когда локальная база данных транспортного модуля переполняется битыми или дублирующимися XML-пакетами, помогает полная очистка транспортного каталога. Обратите внимание: данную операцию следует проводить с осторожностью, так как будут удалены все неотправленные в ЕГАИС документы, находящиеся на очереди в УТМ.
C:\UTM\transporter\data).---
Чтобы минимизировать риски повторного появления ошибки «Обмен с ЕГАИС уже запущен», рекомендуем придерживаться следующих правил:
8080, 8193, а также папки C:\UTM\ и рабочие каталоги платформы 1С.Применяя данные подходы комплексно, вы сможете оперативно устранять зависания обмена и обеспечивать бесперебойную работу кассовой зоны вашего торгового предприятия.