При работе с ЕГАИС пользователи розничных конфигураций 1С (в частности, 1С:Розница 2.2 и 1С:Управление торговлей 11 на платформе 8.3.10 и смежных релизах) часто сталкиваются с крайне неприятной проблемой. При попытке выполнить обмен в разделе «Закупки» — «Входящие ТТН» программа внезапно закрывается («вылетает»). При этом на долю секунды на экране появляется стандартное системное окно платформы с текстом: «Пожалуйста подождите, выполняется сохранение информации об ошибке...», после чего сеанс полностью завершается, а в журнале регистрации 1С и системных журналах событий Windows (Event Viewer) не остается никаких диагностических записей.
В этой статье мы подробно проанализируем технические причины такого поведения системы, разберем по шагам эффективные методы устранения этой ошибки и выясним, как правильно настроить программное окружение для стабильной работы с УТМ ЕГАИС.
Окно с сообщением о сохранении информации — это штатная реакция платформы 1С:Предприятие на критическую ошибку (крэш) процесса 1cv8.exe. Платформа пытается записать аварийный дамп памяти для последующей отправки разработчикам. Давайте разберемся, из-за чего это происходит в процессе обмена с УТМ.
Когда мы запускаем обмен в клиентском режиме, происходят следующие процессы:
ОповеститьОбИзменении или Оповестить). Это необходимо, чтобы пользователь сразу видел изменившийся статус накладной на экране.Рассмотрим пошагово основные способы решения этой проблемы.
Самый быстрый и действенный способ обойти проблему падения клиента — переложить всю тяжелую работу по парсингу XML-пакетов и записи их в базу данных на сервер 1С. В этом случае фоновое задание выполнит всю обработку напрямую, минуя интерфейсный поток клиентского приложения и систему интерактивных оповещений.
Выполним настройку по шагам:
Включение этой опции в большинстве случаев мгновенно решает проблему вылетов программы, однако здесь кроются важные сетевые нюансы, которые мы проанализируем ниже.
Если ваша база данных является файловой и расположена на том же компьютере, где установлен УТМ, то включение опции «Обмен на сервере» пройдет безболезненно. Но если вы работаете в клиент-серверном режиме (база данных крутится на MS SQL Server или PostgreSQL, а сервер приложений 1С установлен на отдельном компьютере), то стандартная настройка может нарушить обмен.
Выясним причину: по умолчанию в адресе подключения к УТМ указывается локальный IP-адрес 127.0.0.1 или имя localhost. При включенной галочке «Обмен на сервере» сервер приложений 1С начнет искать транспортный модуль на самом себе (по адресу 127.0.0.1), где его физически нет, так как УТМ и аппаратный ключ (Рутокен или JaCarta) подключены к локальному компьютеру кассира.
Чтобы решить эту сетевую проблему, выполним следующие действия:
192.168.1.50). Для этого можно запустить командную строку Windows и выполнить команду ipconfig.localhost или 127.0.0.1 на реальный IP-адрес компьютера кассира (например, http://192.168.1.50:8080).8080. Это необходимо, чтобы сервер 1С, находящийся на другом компьютере, мог беспрепятственно отправлять HTTP-запросы к транспортному модулю кассы.Зачастую лавинообразное падение интерфейса провоцирует огромное количество скопившихся в УТМ старых документов. Это могут быть неотвеченные акты списания, необработанные тикеты прошлых периодов или зависшие квитанции. При каждом нажатии на кнопку обмена 1С честно пытается вычитать и обработать всю эту гигантскую очередь.
Рекомендуется произвести ручную очистку очередей транспортного модуля. Сделать это можно двумя путями:
http://localhost:8080). Перейдем на вкладку «Входящие» или «Исходящие» и удалим зависшие запросы вручную.Рассмотрим пример команды удаления документа с помощью утилиты curl (выполняется в командной строке):
curl -X DELETE http://localhost:8080/opt/out/waybill_v3/1
curl -X DELETE http://localhost:8080/opt/out/ticket/2
После очистки транспортного модуля от старого «мусора» очередь документов сократится до актуального минимума, и нагрузка на систему при обмене упадет в разы.
Чтобы полностью исключить влияние человеческого фактора и пиковые нагрузки на интерфейс, мы рекомендуем автоматизировать процесс обмена. Для этого отлично подходят механизмы регламентных заданий 1С.
Разберем настройку по шагам:
В таком режиме система будет незаметно для кассира порциями забирать документы из УТМ в фоновом режиме, распределяя нагрузку и исключая необходимость ручного нажатия кнопки «Выполнить обмен».
Описанная проблема с лавинообразными оповещениями была признана разработчиками 1С. В более новых версиях платформы (начиная с 8.3.15) и в современных редакциях конфигураций (например, 1С:Розница 2.3 и 3.0) механизмы взаимодействия с государственными информационными системами были кардинально переписаны.
Синхронные тяжелые циклы обработки на стороне клиента уступили место асинхронным функциям. Теперь обработка XML-пакетов происходит изолированно в фоновых потоках, что полностью страхует программу от падений из-за перегрузки интерфейса. Если у вас есть возможность обновить платформу до актуального релиза (например, ветки 8.3.20 или 8.3.22) и обновить саму конфигурацию, обязательно сделайте это.
В редких случаях моментальный вылет процесса 1cv8.exe в момент инициализации обмена может быть вызван сбоем в работе средств криптографической защиты информации (СКЗИ), установленных на клиентской машине. При обмене происходит обращение к компонентам подписи, и если в системе установлена устаревшая версия КриптоПро CSP или VipNet CSP, либо повреждены библиотеки веб-клиента для работы с двухфакторной авторизацией, программа может аварийно завершиться.
Для предотвращения подобных сбоев рекомендуется:
Мы подробно разобрали причины, по которым программа 1С:Розница может вылетать при обмене с ЕГАИС, и рассмотрели комплекс мер по устранению этой ошибки. Перевод обмена на серверную сторону, грамотная настройка сетевых адресов и регулярная очистка очередей УТМ позволят обеспечить бесперебойную и стабильную работу вашего магазина.