При работе с системой маркировки товаров "Честный ЗНАК" (ЧЗ) через интеграцию с 1С:Управление торговлей (УТ) версии 11.5 пользователи могут столкнуться с различными ошибками. Одной из распространённых проблем является ошибка с кодом состояния HTTP 405, сопровождающаяся текстом "405 Not Allowed", при выполнении запросов к API, например, к конечной точке api/v3/true-api/cises/info. Эта ошибка указывает на то, что сервер понял запрос, но HTTP-метод, который мы использовали (например, GET или POST), не разрешен для запрашиваемого ресурса. Разберем эту ситуацию подробнее и предложим комплексные шаги по ее устранению.
Ошибка "405 Method Not Allowed" — это стандартный код ответа HTTP, который сервер отправляет, когда ему поступает запрос с методом (например, GET, POST, PUT, DELETE), который не поддерживается для указанного URL-адреса. Это отличается от ошибки 404 "Not Found", которая означает, что ресурс по данному URL вообще не существует. В нашем случае ресурс существует, но мы пытаемся выполнить с ним неподдерживаемое действие.
Причины такой ошибки могут быть разнообразны:
nginx, как указано в тексте ошибки), который обрабатывает запросы к API Честного ЗНАКа.Давайте пошагово разберем, как мы можем диагностировать и устранить эту проблему.
Первым и одним из наиболее частых источников проблем при интеграции с государственными информационными системами, такими как Честный ЗНАК, является использование устаревшей версии конфигурации 1С. Система Честный ЗНАК регулярно обновляет свои API, изменяет адреса конечных точек и требования к запросам.
Мы должны убедиться, что наша версия 1С:УТ 11.5 является максимально актуальной. Например, если в обсуждении упоминается версия 11.5.12.80, то на момент возникновения проблемы она могла уже устареть. Актуальные адреса для работы с API Станции управления заказами (СУЗ) включают https://suzgrid.crpt.ru/ для продуктивного контура и https://suz.sandbox.crptech.ru/ для демонстрационного. Основной адрес для запросов к API маркировки, как правило, markirovka.crpt.ru.
С 1 апреля 2024 года, например, изменился механизм проверки кодов маркировки, и запросы к некоторым старым адресам (например, markirovka.crpt.ru/api/v4/true-api/codes/check) стали возвращать ошибку 410 Gone, что прямо указывает на необходимость обновления программного обеспечения. Это наглядно демонстрирует, почему регулярные обновления 1С являются критически важными для поддержания работоспособности интеграции.
Для корректной работы с маркировкой в 1С:УТ обычно требуется версия конфигурации 11.4 и выше, а также регулярные обновления для совместимости с последними изменениями в "Честном ЗНАКе". Если вы обнаружили, что ваша версия 1С давно не обновлялась, немедленно рассмотрите возможность обновления до последнего актуального релиза. Чтобы упростить этот процесс для нескольких баз, можно настроить автоматическое резервное копирование и обновление конфигураций 1С в тихом режиме.
Как мы можем проверить, к какому именно адресу посылается запрос из 1С? Мы воспользуемся встроенным отладчиком 1С. Для этого нам необходимо найти место в коде, где формируется HTTP-запрос к API Честного ЗНАКа. Часто за это отвечают общие модули, связанные с интеграцией ИС МП.
Поставим точку останова перед вызовом функции, которая отправляет HTTP-запрос (например, ВыполнитьHTTPЗапрос() или аналогичной). В процессе отладки мы сможем увидеть значение свойства URL объекта HTTPЗапрос или HTTPСоединение. Предполагаемый корректный адрес для запроса информации о кодах маркировки должен быть в домене markirovka.crpt.ru.
// Пример того, как мы можем получить URL запроса в отладчике
// (Предполагается, что вы находитесь в контексте формирования запроса)
// Инициализация объекта HTTPЗапрос
Перем HTTPЗапросОбъект; // Здесь будет ваш объект HTTPЗапроса
// Если запрос уже сформирован и готов к отправке, мы можем получить его URL:
Сообщить(HTTPЗапросОбъект.URL);
// Для более глубокой отладки, если мы не уверены,
// какой именно объект используется для отправки запроса,
// мы можем поставить точку останова в общих модулях,
// которые отвечают за интеграцию с ИС МП.
// Например, в функциях типа:
// ОбщиеМодули.ИнтеграцияИСМП.ПолучитьДанныеПоГИСМТ
// ОбщиеМодули.ИнтеграцияИСМПКлиентСервер.ВыполнитьHTTPЗапрос
// Внутри этих функций мы найдем использование объектов
// "HTTPСоединение" и "HTTPЗапрос".
// Мы проанализируем значения их свойств, таких как:
// HTTPСоединение.Хост (например, "markirovka.crpt.ru")
// HTTPЗапрос.АдресРесурса (например, "/api/v3/true-api/cises/info")
// Объединение этих значений даст нам полный URL, к которому обращается 1С.
Если мы обнаружим, что адрес отличается от актуального (например, содержит старый субдомен или версию API), это будет веским аргументом в пользу обновления конфигурации или, в крайнем случае, корректировки кода (если это кастомизированная конфигурация).
Ошибка 405 "Method Not Allowed" напрямую указывает на то, что используемый HTTP-метод не разрешен для конкретного ресурса. Мы должны точно знать, какой HTTP-метод (GET, POST, PUT, DELETE) ожидает API "Честного ЗНАКа" для запроса api/v3/true-api/cises/info и какой метод фактически отправляется из нашей системы 1С.
Как правило, запрос информации (/info) выполняется методом GET. Однако, если для этого API по каким-то причинам требуется POST-запрос (например, если он принимает тело запроса с параметрами), а мы отправляем GET, то получим ошибку 405. Чтобы проверить это, мы можем:
Метод объекта HTTPЗапрос.
// Пример, как мы можем проверить HTTP-метод в отладчике
Перем HTTPЗапросОбъект; // Объект HTTPЗапроса
// Мы можем вывести текущий метод:
Сообщить(HTTPЗапросОбъект.Метод); // Ожидаем "GET" или "POST"
// Если мы обнаружим, что метод не соответствует ожидаемому,
// и это происходит в доработанном коде, то нам нужно его скорректировать:
// HTTPЗапросОбъект.Метод = "POST"; // Или "GET", в зависимости от требований API
Если в нашей конфигурации 1С есть кастомизация, которая формирует эти запросы, мы должны убедиться, что используемый метод соответствует спецификации API Честного ЗНАКа. В типовых конфигурациях 1С, как правило, методы заданы корректно для текущего релиза, поэтому проблема чаще всего кроется в устаревании релиза или внешних факторах. Для быстрой проверки отправки GET- и POST-запросов с нужными параметрами можно использовать обработку для тестирования HTTP-запросов из 1С.
В интеграции с ИС МП критически важно правильно указать, с каким контуром мы работаем: тестовым или продуктивным. Мы должны проверить в настройках нашей 1С, не стоит ли случайно галка "Тестовый контур", если мы работаем с продуктивным окружением Честного ЗНАКа. Использование неверного контура (тестового вместо продуктивного или наоборот) с соответствующими адресами и учетными данными приведет к ошибкам.
Для проверки и настройки контура, выполним следующие действия в 1С:
Если мы работаем в реальной (продуктивной) базе и хотим взаимодействовать с продуктивным контуром Честного ЗНАКа, этот флаг должен быть снят. Если же мы сознательно работаем в тестовой базе или выполняем пробные операции, флаг должен быть установлен, и при этом должны быть настроены соответствующие учетные данные для тестового контура Честного ЗНАКа.
Ошибка 405 может возникнуть, если, например, тестовый контур ЧЗ не поддерживает определенный метод для запрошенного API, или если мы пытаемся использовать учетные данные продуктивного контура с адресами тестового.
Для работы с Честным ЗНАКом усиленная квалифицированная электронная подпись (УКЭП) является обязательным инструментом. Мы должны убедиться, что наша УКЭП корректно установлена на компьютере, зарегистрирована в личном кабинете Честного ЗНАКа и правильно настроена в 1С для подписания сообщений и авторизации на сервере.
Хотя напрямую не ведет к ошибке 405, некорректная ЭЦП может препятствовать успешной авторизации, что в свою очередь может привести к ошибкам сервера, включая иногда и "Method Not Allowed", если сервер не может идентифицировать пользователя и отклоняет запрос на уровне авторизации, а не только по методу.
Мы должны проверить следующие моменты:
Помимо общих настроек, мы должны внимательно проверить все параметры интеграции с ИС МП в нашей 1С. Для этого:
Любые несоответствия в этих настройках могут приводить к невалидным запросам, которые сервер Честного ЗНАКа может отклонять различными ошибками, включая 405.
В сообщениях упоминалось, что работа ведется в копии базы данных ("признак копия"). Хотя использование копии базы данных само по себе не является прямой причиной ошибки 405, некорректная настройка параметров интеграции Честного ЗНАКа в такой копии может привести к проблемам с подключением. Мы должны проверить, что:
Иногда проблемы могут быть вызваны внешними факторами, такими как сетевые ограничения, блокировка фаерволом на нашей стороне или даже DDoS-атаками на инфраструктуру Честного ЗНАКа. Мы должны убедиться, что:
77.88.8.8), чтобы исключить проблемы с разрешением доменных имен.markirovka.crpt.ru (или mdlp.crpt.ru для лекарственных препаратов) с помощью команды tracert markirovka.crpt.ru в командной строке. Результаты трассировки, если они показывают проблемы с маршрутизацией или задержки, могут быть отправлены в службу технической поддержки Честного ЗНАКа для дальнейшей диагностики.Сетевые проблемы могут проявляться разнообразными ошибками, и 405 может быть одним из косвенных проявлений, если запрос не доходит до нужного обработчика на стороне сервера Честного ЗНАКа.
Ошибка "405 Not Allowed" при работе с API Честного ЗНАКа в 1С:УТ 11.5 чаще всего является результатом устаревшей версии конфигурации 1С, неверно настроенного HTTP-метода, некорректных настроек тестового/продуктивного контура или изменения адресов API Честного ЗНАКа. Мы рассмотрели комплексный подход к диагностике и устранению этой проблемы.
Мы настоятельно рекомендуем в первую очередь убедиться в актуальности вашей версии 1С:УТ и проверить все настройки интеграции с ИС МП, обращая особое внимание на флаг "Тестовый контур" и используемые адреса API. Использование отладчика 1С поможет нам точно установить, к какому URL и каким методом обращается система. При сохранении проблемы, глубокая сетевая диагностика и обращение в техническую поддержку Честного ЗНАКа с предоставлением всех собранных данных будут наиболее эффективными шагами. Только системный подход к поиску причины позволит нам успешно восстановить работоспособность интеграции.