Как исправить ошибки обмена с Честным Знаком в 1С: код 500 при авторизации cert, ошибка 404 при агрегации и проблемы с SSL-сертификатами

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

При интеграции систем 1С с государственной информационной системой маркировки товаров (ГИС МТ / «Честный Знак») технические специалисты регулярно сталкиваются с различными сетевыми и криптографическими сбоями. Особенно остро эти проблемы встают при выпуске обновлений платформы 1С, конфигураций или при изменении протоколов API со стороны самого ЦРПТ.

В этой статье мы подробно разберем три наиболее распространенные технические проблемы, с которыми сталкиваются пользователи торговых решений 1С (таких как «1С:Управление торговлей», «1С:Розница», «1С:УНФ» и «1С:Управление производственным предприятием»):

  1. Внутренняя ошибка сервера (Код состояния HTTP: 500) при выполнении запроса api/v3/auth/cert (конфликт VipNet CSP и внешней компоненты 1С).
  2. Ошибка 404 (Not Found) или 400 (Bad Request) при попытке получить данные об агрегации маркированных товаров по пути v3/cises/.../aggregated.
  3. Ошибка «Удаленный узел не прошел проверку» при обращении к api/v3/auth/cert/key (проблемы с SSL-сертификатами шифрования).

---

Проблема №1: Ошибка 500 при запросе api/v3/auth/cert (Конфликт VipNet CSP и 1С)

Выясним причину возникновения данной ошибки. При авторизации в системе «Честный Знак» программный код 1С отправляет на сервер подписанный запрос. Для формирования электронной подписи подсистема БСП (Библиотека стандартных подсистем) использует специализированную внешнюю компоненту КомпонентаXMLDSIG, которая поставляется внутри макетов конфигурации.

В начале 2020 года фирма 1С выпустила обновления БСП и прикладных конфигураций (например, «Управление торговлей 11.4.11.71» и «Розница 2.3.2»), в которых компонента КомпонентаXMLDSIG была модернизирована. К сожалению, обновленная версия компоненты начала некорректно взаимодействовать с бесплатным криптопровайдером VipNet CSP. При подписании XML-сообщения компонента формировала некорректную последовательность байт. Сервер ГИС МТ, принимая битый пакет, не мог его обработать и возвращал общую ошибку HTTP 500 (Internal Server Error). При этом при использовании коммерческого криптопровайдера КриптоПро CSP подпись формировалась без ошибок.

Фирма 1С зарегистрировала данную ошибку под внутренним номером 00-00277595. Рассмотрим способы ее решения.

Решение 1.1: Установка официальных патчей (исправлений) 1С

Для всех типовых конфигураций, в которых проявилась данная ошибка, фирма 1С оперативно выпустила официальные расширения-патчи (например, для Розницы 2.3 и УТ 11.4). Рекомендуется выполнить следующие действия:

  1. Перейдем в раздел Администрирование — Обслуживание — Обновление программы.
  2. Откроем ссылку Установленные исправления (патчи).
  3. Нажмем кнопку Поиск и установка исправлений (требуется подключение к интернет-поддержке 1С) либо загрузим и установим патч вручную, предварительно скачав его с портала технологического сопровождения 1С.

Решение 1.2: Временный возврат компоненты XMLDSIG из прошлых релизов

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

  1. Откроем конфигурацию в режиме Конфигуратор.
  2. Найдем справочник СертификатыКлючейЭлектроннойПодписиИШифрования.
  3. Внутри справочника перейдем к списку макетов и найдем макет с именем КомпонентаXMLDSIG.
  4. Сохраним рабочий макет из стабильного релиза (например, УТ 11.4.11.67) в файл на диск и загрузим его в нашу текущую рабочую базу, заменив дефектный макет.
  5. Сохраним изменения и обновим конфигурацию базы данных.

Решение 1.3: Переход на СКЗИ КриптоПро CSP

Если ковыряться в программном коде и макетах нет времени, наиболее надежным решением будет переустановка криптопровайдера:

  1. Удалим с рабочего компьютера программу VipNet CSP.
  2. Установим сертифицированный криптопровайдер КриптоПро CSP (версии 4.0 или 5.0).
  3. Переустановим сертификаты электронных подписей через КриптоПро CSP.
  4. В настройках электронной подписи 1С укажем новый криптопровайдер. Обмен с ГИС МТ сразу же заработает в штатном режиме.

---

Проблема №2: Ошибка 404 / 400 при запросе агрегации (Переход на True API)

Проанализируем ситуацию с ошибкой HTTP 404 (Not Found) или HTTP 400 (Bad Request) при отправке запросов к методам получения структуры кодов (агрегации). Например, при обращении к ресурсу вида /v3/cises/%1/aggregated.

Эта проблема связана с тем, что ЦРПТ планомерно отключает устаревшие legacy-методы своего программного интерфейса (API) и полностью переводит всех участников оборота на новую архитектуру под общим названием True API. Прямые запросы к Личным Кабинетам систем маркировки блокируются. Если ваша конфигурация 1С давно не обновлялась, она продолжает стучаться по старым адресам, получая в ответ ошибку 404.

Для исправления этой проблемы в старых или нетиповых конфигурациях (например, в сильно измененных базах на платформе «1С:Управление торговлей 10.3» или «УНФ») разработчикам приходится модифицировать программный код вручную. Для решения этой проблемы в УТ 10.3 можно использовать готовое обновление конфигурации для поддержки актуальных форматов маркировки.

Решение 2.1: Модификация кода получения данных об агрегации в 1С

Посмотрим на пример переопределения URL-запроса в общем модуле ИнтерфейсМОТП. Нам необходимо найти функцию ЗапроситьДанныеОбАгрегацииКодовМаркировки и перенаправить запросы на обновленные шлюзы.

Рассмотрим пример кода, реализующий двухэтапную проверку: если первый стандартный запрос возвращает ошибку, система автоматически совершает резервный запрос к новому API:


URLЗапроса = СтрШаблон("v3/cises/%1/aggregated", КодироватьСтроку(НормализованныйКодМаркировки, СпособКодированияСтроки.КодировкаURL));
РезультатЗапроса = ИнтеграцияИСМП.ПолучитьДанныеИзСервиса(URLЗапроса, КлючСессии, ИнтерфейсМОТПКлиентСервер.ПараметрыОтправкиHTTPЗапросов);

// Если сервер вернул ошибку, пробуем альтернативный (обновленный) шлюз API
Если РезультатЗапроса.HTTPОтвет.КодСостояния = 400 
   ИЛИ РезультатЗапроса.HTTPОтвет.КодСостояния = 404 
   ИЛИ РезультатЗапроса.HTTPОтвет.КодСостояния = 500 
   ИЛИ РезультатЗапроса.HTTPОтвет.КодСостояния = 502 Тогда
   
    URLЗапроса = СтрШаблон("private-office-api/private/v2/cis/aggregated?cis=%1", КодироватьСтроку(НормализованныйКодМаркировки, СпособКодированияСтроки.КодировкаURL));
    РезультатЗапроса = ИнтеграцияИСМП.ПолучитьДанныеИзСервиса(URLЗапроса, КлючСессии, ИнтерфейсМОТПКлиентСервер.ПараметрыОтправкиHTTPЗапросов(Неопределено));
КонецЕсли;

РезультатОтправкиЗапроса = ИнтерфейсМОТПСлужебный.ОбработатьРезультатОтправкиHTTPЗапросаКакJSON(РезультатЗапроса);

В более свежих редакциях интеграционных библиотек ГИС МТ от фирмы 1С, для работы с табачной и иной продукцией используется кардинально другой путь True API. Разберем пример отправки запроса по новому стандарту:


URLЗапроса = "api/v3/true-api/cises/aggregated/list?pg=tobacco";
РезультатЗапроса = ИнтеграцияИСМП.ОтправитьДанныеВСервис(
    URLЗапроса, 
    ТелоЗапроса, 
    КлючСессии, 
    "POST", 
    ИнтерфейсМОТПКлиентСервер.ПараметрыОтправкиHTTPЗапросов("")
);

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

---

Проблема №3: Ошибка «Удаленный узел не прошел проверку» при подключении к ИС МП

Эта проблема проявляется в виде системного сообщения: HTTP-запрос не отправлен. Ошибка работы с Интернет: Удаленный узел не прошел проверку. Она возникает в тот момент, когда платформа 1С пытается установить защищенное HTTPS-соединение с сервером Честного Знака, но встроенные механизмы проверки SSL/TLS-сертификатов не могут верифицировать цепочку доверия удаленного узла.

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

Решение 3.1: Установка доверенных корневых сертификатов Минцифры РФ

Для того чтобы операционная система и платформа 1С доверяли шлюзам Честного Знака, необходимо установить актуальные сертификаты Национального удостоверяющего центра (НУЦ):

  1. Скачаем актуальные корневые и промежуточные сертификаты Минцифры РФ с официального портала Госуслуг.
  2. Запустим консоль сертификатов. Для этого нажмем комбинацию клавиш Win + R, введем команду certmgr.msc и нажмем Enter.
  3. Перейдем в раздел Доверенные корневые центры сертификации — Реестр — Сертификаты.
  4. Через контекстное меню выберем Все задачи — Импорт и укажем путь к скачанному файлу корневого сертификата Минцифры.
  5. Повторим процедуру импорта промежуточного сертификата в ветку Промежуточные центры сертификации.

Важное примечание для клиент-серверных баз: Если база 1С работает на сервере («клиент-серверный вариант»), то запросы к Честному Знаку отправляет не локальный компьютер пользователя, а сам сервер 1С (процесс rphost). В этом случае сертификаты необходимо устанавливать на сервере 1С под учетной записью, от имени которой запущена служба сервера 1С (например, USR1CV8), либо импортировать их в хранилище локального компьютера (Local Computer).

Решение 3.2: Обновление cacert.pem для серверов 1С на Linux или устаревших версий платформы

В некоторых случаях (особенно если сервер 1С запущен под управлением ОС Linux или используется устаревшая платформа 1С:Предприятие), 1С не использует системное хранилище ОС Windows, а проверяет сертификаты по собственному файлу cacert.pem. Этот файл располагается по пути установки платформы:

C:\Program Files\1cv8\[Номер_версии_платформы]\bin\cacert.pem

Чтобы решить проблему, откроем этот файл обычным текстовым редактором, скачаем актуальные сертификаты Минцифры/ЦРПТ в формате Base64 (PEM) и допишем их текстовое содержимое в самый конец файла cacert.pem, после чего перезапустим службу сервера 1С.

---

Проблема №4: Зачем розничным продавцам настраивать СУЗ и вводить OMS ID?

В процессе работы с маркировкой у розничных продавцов обуви и одежды часто возникает вопрос: почему система 1С при продаже или проверке товара настойчиво просит указать параметры СУЗ (Станции управления заказами), такие как OMS ID и токен авторизации?

Проанализируем логику работы системы. По закону, розничному продавцу СУЗ для повседневной работы (приемка по ЭДО и продажа через онлайн-кассу) действительно **не нужен**. Однако СУЗ становится обязательным в двух случаях:

  1. Маркировка остатков: Когда розница маркирует свои складские запасы (например, старые партии обуви), она сама выступает в роли «эмитента» кодов маркировки. Чтобы заказать коды, в личном кабинете Честного Знака необходимо создать виртуальное устройство, получить его OMS ID и токен и прописать их в настройках интеграции 1С.
  2. Перемаркировка товаров: Если покупатель вернул товар с поврежденным кодом маркировки, или код затерся на складе, розничный продавец обязан выполнить процедуру перемаркировки. Для заказа нового кода взамен утерянного 1С снова обратится к СУЗ.

Если вы не планируете заниматься перемаркировкой или вводом остатков в оборот, убедитесь, что в настройках интеграции с ИС МП (раздел Администрирование — Интеграция с ИС МП) у вас не взведены флаги обязательного контроля или заказа кодов через СУЗ для ваших товарных групп.

← На главную