При настройке интеграции 1С с государственной системой маркировки «Честный знак» (ГИС МТ), а именно при работе со Станцией управления заказами (СУЗ), специалисты часто сталкиваются с критической ошибкой. Она проявляется при выполнении запроса к методу api/v3/true-api/auth/simpleSignIn. Часто такая проблема возникает, когда механизм взаимодействия 1С с Честным знаком настроен некорректно — для настройки пригодится готовое решение для интеграции 1С с Честным знаком. Система возвращает код состояния HTTP: 400 с пояснением: "{ "error_message": "Ошибка аутентификации СУЗ: Сервис вернул пустой ответ" }". Рассмотрим подробно, почему это происходит и как пошагово решить данную проблему.
Ошибка 400 (Bad Request) в контексте работы с API СУЗ версии v3 обычно означает, что сервер не смог обработать запрос из-за некорректных параметров. «Пустой ответ» от сервиса аутентификации указывает на то, что на стороне ГИС МТ произошел сбой при проверке связки параметров: сертификат электронной подписи, ИНН организации и идентификаторы устройства.
Выясним основные причины:
Идентификатор соединения (Connection ID), а не ОМС ID.Если типовые механизмы 1С выдают ошибку, проанализируем, как должен выглядеть корректный HTTP-запрос к сервису. Программисту важно понимать структуру формирования заголовков и тела запроса. Рассмотрим пример кода, который позволяет выполнить авторизацию вручную для проверки доступности сервиса:
Соединение = Новый HTTPСоединение("markirovka.crpt.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json; charset=UTF-8");
Заголовки.Вставить("Accept", "application/json");
// Формируем запрос к методу авторизации
HTTPЗапрос = Новый HTTPЗапрос("/api/v3/true-api/auth/simpleSignIn", Заголовки);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку;
// Структура параметров должна содержать UUID, данные подписи и ИНН
ДанныеДляЗапроса = Новый Структура;
ДанныеДляЗапроса.Вставить("uuid", УИД); // УИД - уникальный идентификатор запроса
ДанныеДляЗапроса.Вставить("data", ДанныеДляПолученияТокена); // Подписанные данные в Base64
ДанныеДляЗапроса.Вставить("inn", СокрЛП(Настройки.ИНН));
ЗаписатьJSON(ЗаписьJSON, ДанныеДляЗапроса);
СтрокаДляЗапроса = ЗаписьJSON.Закрыть();
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбъекта(HTTPЗапрос);
В этом фрагменте кода мы используем объект ЗащищенноеСоединениеOpenSSL, что является обязательным требованием. Правильное формирование подписанных данных критично.
Если вы работаете в типовой конфигурации (например, 1С:УНФ или 1С:ERP), механизмы интеграции обычно скрыты в общих модулях. Однако часто поддержка маркировки требуется в устаревших системах. Например, когда используется древняя УТ 10.3 и маркировка товара, приходится самостоятельно дорабатывать механизмы формирования запросов к СУЗ — для решения этой задачи есть готовая обработка маркировки Честный Знак для УТ 10.3.
Чтобы найти, где именно происходит сбой, выполним глобальный поиск по строке auth/simpleSignIn — для этого пригодится утилита логирования и анализа HTTP-запросов в 1С. Обычно этот ключ встречается в следующих функциях:
ПараметрыЗапросаКлючаСессии — здесь формируются базовые параметры для авторизации в системе маркировки.ПараметрыЗапросаКлючаСессииСУЗ — именно эта функция отвечает за параметры подключения к Станции управления заказами.Проанализируем фрагмент кода, отвечающий за формирование адреса в 1С:
ПараметрыЗапроса.АдресЗапросаКлючаСессии = СтрШаблон(
"api/v3/true-api/auth/simpleSignIn/%1",
ПараметрыСУЗ.ИдентификаторСоединения
);
Здесь %1 заменяется на ИдентификаторСоединения. Если это поле в настройках 1С заполнено неверно (например, туда по ошибке внесен ОМС ID или ИНН), сервер «Честного знака» вернет ошибку 400, так как URL не пройдет валидацию на стороне ГИС МТ.
Часто проблема кроется не в коде 1С, а в некорректных данных, скопированных из личного кабинета. Особенно остро это ощущается, когда выполняется маркировка остатков в распределенной рознице, где нужно настроить десятки устройств в разных магазинах без хаоса и ошибок — для этого подойдёт готовый модуль для маркировки остатков и заказа кодов.
OMS ID и Идентификатор соединения (Connection ID).Если настройки в ЛК верны и код 1С актуален, но ошибка «Пустой ответ» сохраняется, проанализируем системное окружение:
Корневые сертификаты: Поскольку ГИС МТ использует российские алгоритмы шифрования, на сервере 1С должны быть установлены актуальные корневые сертификаты Минцифры. Без них установка TLS-соединения может обрываться до передачи данных, что платформа 1С воспринимает как пустой ответ.
Синхронизация времени: Сервер ГИС МТ проверяет метку времени в запросе. Если время на сервере 1С расходится с точным временем более чем на 30 секунд, запрос на получение токена будет отклонен сервером с кодом 400.
Кэширование авторизации: В 1С данные об авторизации сохраняются в параметрах сеанса или специальных регистрах. Попробуйте очистить настройки СУЗ в 1С, перезапустить сеанс и заново заполнить данные, скопировав их из ЛК без лишних пробелов.
Для устранения ошибки 400 при интеграции СУЗ выполним следующие действия:
Connection ID из раздела «Устройства» ЛК, а не OMS ID.Соблюдение этих шагов позволяет успешно пройти этап simpleSignIn и получить токен для дальнейшего заказа кодов маркировки и работы с документами ИС МП.