Как решить проблемы совместимости 1С:Розница 2.2 и УТМ 3.0.8: Полное техническое руководство

Системный администратор 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

Переход на новые версии Универсального транспортного модуля (УТМ) ЕГАИС часто сопровождается техническими сбоями в работе учетных систем. Одним из наиболее проблемных периодов стало внедрение версии УТМ 3.0.8, которое вызвало массовый отказ интеграции с конфигурацией 1С:Розница 2.2.9.19. Пользователи столкнулись с невозможностью получить код ФСРАР, зависанием транспортных служб при использовании ключей Рутокен и критическими багами в последующих обновлениях 1С.

В данной статье мы подробно проанализируем причины возникновения этих неисправностей и разберем по шагам все проверенные способы их устранения — от ручной настройки сопоставления данных до низкоуровневого конфигурирования библиотек криптографии.

Методика 1. Обход ошибки «Внутренняя ошибка получения кода ФСРАР» без обновления 1С

При попытке установить связь с УТМ 3.0.8 из конфигурации 1С:Розница 2.2.9.19 система выдает критическую ошибку. Выясним причину этого поведения.

Разработчики ФСРАР в версии УТМ 3.0.8 изменили внутреннюю структуру и HTML-верстку главной (домашней) страницы веб-интерфейса модуля, расположенной по адресу http://localhost:8080/. Платформа 1С забирает уникальный идентификатор организации (FSRAR ID) методом парсинга этой веб-страницы. Так как регулярные выражения в коде версии 2.2.9.19 были жестко привязаны к тегам старого интерфейса УТМ 2.1.6, парсер 1С выдает ошибку, сообщая, что связь отсутствует.

Если мы не можем обновить конфигурацию 1С (например, из-за наличия кастомизированного кода или сопутствующих багов релиза 2.2.9.20), мы можем настроить обмен в обход автоматического парсинга. Рассмотрим, как это сделать вручную:

  1. Откроем веб-интерфейс УТМ в браузере по адресу http://localhost:8080/ и скопируем наш уникальный идентификатор FSRAR ID (двенадцатизначный числовой код).
  2. В программе 1С перейдем в справочник Организации ЕГАИС.
  3. Создадим новую карточку организации вручную (не используя кнопку автоматического запроса).
  4. Заполним все реквизиты компании: ИНН, КПП, фактический адрес и обязательно укажем скопированный ранее код ФСРАР в соответствующее поле.
  5. Перейдем в настройки обмена с ЕГАИС и свяжем созданную организацию ЕГАИС с нашей внутренней организацией 1С и соответствующим торговым объектом (магазином).
  6. В параметрах подключения к УТМ пропишем адрес и порт (localhost:8080) и укажем наш код ФСРАР.

Важный нюанс: При сохранении настроек программа попытается выполнить тест связи и выдаст предупреждение об ошибке. Мы должны проигнорировать это сообщение. Поскольку сам транспортный контур обмена документами (отправка XML-пакетов через API) в УТМ не изменился, отправка и получение ТТН будут работать корректно, несмотря на статус "Нет связи" в интерфейсе настроек.

Методика 2. Временный откат на УТМ 2.1.6 и блокировка автоматического обновления

Если ручная привязка организации не помогает или требуется обеспечить максимально стабильную работу без изменения бизнес-процессов, мы можем временно вернуться к использованию УТМ 2.1.6. Однако по умолчанию служба обновления УТМ (Transport-Updater) при первом же обращении к серверам ФСРАР принудительно скачает и установит версию 3.0.8.

Чтобы зафиксировать рабочую версию УТМ 2.1.6, выполним следующие действия по блокировке апдейтера:

  1. Полностью удалим текущую версию УТМ 3.0.8 через панель управления Windows.
  2. Установим чистый дистрибутив УТМ версии 2.1.6, но не запускаем службы транспорта сразу после установки.
  3. Откроем проводник и перейдем в каталог конфигурации службы обновления: C:\UTM\updater\conf\.
  4. Найдем файл конфигурации updater.properties и откроем его с помощью текстового редактора (например, Блокнота) с правами администратора.
  5. Нам необходимо закомментировать строки, которые отвечают за адреса серверов обновлений. Для этого добавим символ решетки (#) в самом начале следующих строк:

#update.properties.address=http://...
#update.address=http://...

Сохраним изменения в файле и запустим службы УТМ. Теперь модуль обновления не сможет связаться с сервером загрузки, и система продолжит стабильно работать на версии 2.1.6.

Внимание: Этот метод является временным решением. В декабре 2018 года ФСРАР обновил корневые сертификаты удостоверяющего центра. УТМ версий ниже 3.0.8 без ручной замены файлов библиотек шифрования в каталогах /transporter/lib/ и /updater/lib/ полностью теряет возможность обмениваться данными с серверами ЕГАИС. Рассматривайте этот метод только как краткосрочную меру для подготовки полноценного обновления учетных систем.

Методика 3. Решение бага «Поле объекта не обнаружено» в релизе 1С:Розница 2.2.9.20

Для исправления проблемы совместимости с УТМ 3.0.8 компания 1С выпустила релиз 2.2.9.20. Однако при обновлении на него пользователи торгового оборудования АТОЛ столкнулись с критической ошибкой при выгрузке отчетов о продажах: Поле объекта не обнаружено.

Проанализируем причину этой проблемы. В релизе 2.2.9.20 разработчики добавили новый механизм взаимодействия со смарт-терминалами «1С:Эвотор Офлайн». При этом в общем модуле офлайн-обмена процедура загрузки данных из ККМ НачатьЗагрузкуДанныхИзККМ стала выполнять некорректную проверку признака первой загрузки. При работе со сторонним оборудованием (в частности, с кассами под управлением Frontol через драйвер АТОЛ:ККМ Офлайн) эта проверка вызывала аварийное завершение работы программы.

Если вам критически важно работать в релизе 2.2.9.20 с рабочим обменом АТОЛ, выполните одно из следующих действий:

  1. Используйте специальное исправление (патч) от 1С или стороннее расширение конфигурации (формат .cfe), которое замещает сбойную процедуру общего модуля обмена и отключает принудительную проверку признака Эвотор для ККМ других производителей.
  2. Если у вас нетиповая конфигурация, откройте конфигуратор, найдите процедуру НачатьЗагрузкуДанныхИзККМ и закомментируйте блок кода, обращающийся к свойствам объекта Эвотор, которые отсутствуют у оборудования АТОЛ.

Методика 4. Исправление ошибки CKR_USER_ALREADY_LOGGED_IN для ключей Рутокен в УТМ 3.0.8

При переходе на УТМ 3.0.8 пользователи аппаратных ключей Рутокен ЭЦП 2.0 часто сталкиваются с тем, что служба транспорта не запускается, а в логах фиксируется ошибка: CKR_USER_ALREADY_LOGGED_IN (пользователь уже авторизован).

Эта техническая проблема вызвана тем, что службы Transporter и Agent в составе УТМ 3.0.8 начинают параллельно отправлять запросы к криптографической библиотеке PKCS#11 аппаратного ключа. Библиотека rtPKCS11ECP.dll от Рутокен не поддерживает одновременное открытие нескольких сессий авторизации с одинаковыми параметрами безопасности от разных системных процессов, что приводит к взаимной блокировке.

Для устранения этой проблемы применим метод разделения криптографических потоков через создание виртуальной копии (реплики) библиотеки:

  1. Перейдем в системную директорию Windows. Для 64-разрядных операционных систем это путь C:\Windows\SysWOW64\, для 32-разрядных — C:\Windows\System32\.
  2. Найдем файл библиотеки Рутокен с именем rtPKCS11ECP.dll.
  3. Скопируем этот файл в эту же папку и переименуем копию в rtPKCS11ECP-replica.dll.
  4. Теперь нам необходимо перенаправить запросы авторизации ГОСТ и RSA на разные файлы библиотек. Перейдем в каталог конфигурации транспорта УТМ: C:\UTM\transporter\conf\.
  5. Откроем файл transport.properties и отредактируем параметры путей к библиотекам PKCS#11. Пропишем для ГОСТ-подписи использование реплики, а для RSA — оригинальный файл:

gost.pkcs11.library.path=C:\\Windows\\System32\\rtPKCS11ECP-replica.dll
rsa.library.path=C:\\Windows\\System32\\rtPKCS11ECP.dll

Примечание: Если у вас установлена 64-битная операционная система Windows, пути должны указывать на каталог SysWOW64:


gost.pkcs11.library.path=C:\\Windows\\SysWOW64\\rtPKCS11ECP-replica.dll
rsa.library.path=C:\\Windows\\SysWOW64\\rtPKCS11ECP.dll

Аналогичные изменения при необходимости внесем в конфигурационные файлы агента УТМ (C:\UTM\agent\conf\agent.properties). После этого перезапустим операционную систему. Разделение обращений служб к разным физическим копиям библиотеки PKCS#11 полностью решает проблему блокировки авторизации ключа.

Методика 5. Восстановление случайно отклоненной ТТН и удаление блокирующих тикетов

Рассмотрим ситуацию, когда при работе на стыке версий Розницы и УТМ пользователь случайно отправил в ЕГАИС акт отказа от накладной (ТТН), после чего документ в 1С принял статус «Отменен», а сама запись пропала из активного рабочего списка входящих документов.

Для восстановления процесса и приемки алкоголя на баланс выполним следующие шаги:

  1. Нам необходимо направить в систему ЕГАИС запрос на отмену проведения акта отказа (документ RequestRepealWB). Поставщик со своей стороны должен подтвердить этот запрос в своем личном кабинете или учетной системе. После подтверждения поставщиком накладная в системе ЕГАИС вернется в статус «Проведена» (ожидает подтверждения получателем).
  2. При попытке выполнить обмен в устаревших версиях 1С:Розница может возникнуть ошибка изменения статуса. Это связано с тем, что в ответ на отказ УТМ присылает технологический документ (тикет), формат которого старый релиз 1С обработать не может. Программа пытается прочитать некорректные для нее данные и блокирует дальнейший обмен.
  3. Для решения этой проблемы мы должны удалить зависший тикет непосредственно из базы данных УТМ. Для этого воспользуемся консольной утилитой curl.exe, которая позволяет отправлять прямые HTTP-запросы к веб-серверу УТМ.
  4. Выясним точный адрес зависшего тикета. Для этого откроем в браузере страницу входящих документов УТМ по адресу http://localhost:8080/opt/out. Найдем в списке XML-документ с типом Ticket и скопируем его идентификатор (например, Ticket/11800).
  5. Откроем командную строку Windows (cmd) и выполним команду удаления данного объекта из УТМ:

curl -X DELETE http://localhost:8080/opt/out/Ticket/11800

После удаления блокирующего тикета из очереди УТМ запустим обмен в 1С повторно. Ошибка исчезнет, конфигурация успешно обновит статусы документов, и мы сможем штатно подтвердить восстановленную накладную.

← На главную