При обновлении конфигурации 1С:Розница до релиза 2.3.8.27 и выше многие пользователи столкнулись с неприятной ситуацией: чеки на алкогольную продукцию перестают уходить в ЕГАИС, а система выдает технические ошибки, связанные с работой УТМ (Универсального транспортного модуля). Ситуация осложняется тем, что после возникновения ошибки чек может остаться в «подвешенном» состоянии: в 1С он числится непробитым, а в ЕГАИС марка уже считается реализованной.
В рамках этой статьи мы подробно разберем причины возникновения ошибок валидации XML-схем, проанализируем технические логи и выработаем пошаговый алгоритм действий для восстановления корректной работы кассового узла.
Рассмотрим первую и наиболее частую ошибку, с которой сталкиваются администраторы: java.lang.IllegalArgumentException: org.xml.sax.SAXParseException; cvc-pattern-valid: Value '' is not facet-valid with respect to pattern '[a-zA-Z0-9_-]{1,128}' for type 'NOEMPTY'.
Проанализируем текст этой ошибки. Она указывает на то, что при формировании XML-файла чека, который 1С отправляет в УТМ, одно из обязательных полей оказалось пустым. Согласно требованиям XSD-схемы (правилам построения документа), поле с типом NOEMPTY должно содержать хотя бы один символ, соответствующий регулярному выражению [a-zA-Z0-9_-]{1,128}.
Выясним причину: в релизе 2.3.8.27 возник внутренний программный сбой при заполнении атрибута Identity (идентификатор документа). Если 1С не может корректно сформировать этот уникальный строковый идентификатор или он обрезается при записи в базу, УТМ отклоняет весь пакет данных. Попытка повторно пробить такой «отложенный» чек часто не помогает, так как ошибка уже записана в структуру объекта чека.
Другой специфический случай связан с ошибкой: Value 'ЕГАИС EAN13' is not facet-valid with respect to pattern '(\d{8}|\d{13}|\d{12}|\d{14})' for type 'EANType'. Посмотрим, что здесь идет не так.
УТМ версии 4.2.0 и выше строго проверяет формат передаваемого штрихкода. Ожидается числовая последовательность (8, 12, 13 или 14 цифр). Однако из-за некорректных данных в регистре ШтрихкодыУпаковок или ошибок в карточке номенклатуры, программа подставляет в XML-структуру служебную строку «ЕГАИС EAN13» вместо реального кода.
Это происходит по следующим причинам:
Разберем ситуацию, когда после возникновения ошибки и перезагрузки системы кассир пытается пробить чек снова, но получает сообщение «Дубль продажи». Это критическая ситуация рассинхронизации данных между 1С и ЕГАИС.
Проанализируем механику процесса: Шаг 1: 1С отправляет чек в УТМ. Шаг 2: УТМ принимает чек, успешно регистрирует его в базе ФСРАР, но из-за таймаута или внутренней ошибки не успевает вовремя вернуть 1С подтверждение (квитанцию). Шаг 3: 1С считает, что продажа не состоялась, и выводит ошибку. Шаг 4: При повторном сканировании той же марки УТМ видит, что эта марка уже была «списана» секунду назад, и блокирует продажу как повторную.
В этом случае марка уже числится реализованной в ЕГАИС, и повторно пробить её через ККМ штатным способом невозможно.
Для исправления ситуации и предотвращения подобных ошибок в будущем, выполним следующие действия:
Первым делом проверим наличие установленных патчей. Фирма «1С» оперативно выпускает исправления для таких критических ошибок. Перейдем в раздел Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи). Нам необходимо убедиться, что установлены исправления, касающиеся работы с ЕГАИС и формирования XML-чеков для Розницы 2.3. Если автоматическая загрузка патчей отключена, рекомендуем включить её или скачать исправления вручную с портала ИТС.
Если в очереди УТМ скопились «битые» чеки, они могут блокировать работу. Выполним следующие операции:
http://localhost:17777.transport/db), но делать это следует только после создания резервной копии и понимания того, что все входящие ТТН приняты.Если марка уже ушла в ЕГАИС, а чек в 1С остался не пробитым, воспользуемся обработкой Корректировка данных ЕГАИС. Рассмотрим алгоритм:
Выясним причину ошибки EANType. Для этого:
Объем, Крепость и Код алкогольной продукции. Пустые значения в этих полях также могут приводить к ошибкам валидации NOEMPTY.Чтобы избежать попадания мусорных данных в XML, проверим настройки сканера штрихкодов в разделе Подключаемое оборудование. Мы рекомендуем использовать сканер в режиме NativeApi или COM-порта (эмуляция). Это гарантирует, что 1С получит «чистый» код без влияния раскладки клавиатуры и состояния клавиши CapsLock.
Если сканер работает в режиме разрыва клавиатуры, убедитесь, что в настройках драйвера 1С корректно указаны префиксы и суффиксы (обычно суффикс #13). Это критично для корректной идентификации типа штрихкода системой.
Таким образом, мы проанализировали основные причины сбоев ЕГАИС в 1С:Розница 2.3.8.27. В большинстве случаев проблема решается своевременной установкой патчей и контролем чистоты данных в справочнике номенклатуры.