Как исправить ошибку 405 Not Allowed при работе с API Честного ЗНАКа в 1С:УТ 11.5?

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

При работе с системой маркировки товаров "Честный ЗНАК" (ЧЗ) через интеграцию с 1С:Управление торговлей (УТ) версии 11.5 пользователи могут столкнуться с различными ошибками. Одной из распространённых проблем является ошибка с кодом состояния HTTP 405, сопровождающаяся текстом "405 Not Allowed", при выполнении запросов к API, например, к конечной точке api/v3/true-api/cises/info. Эта ошибка указывает на то, что сервер понял запрос, но HTTP-метод, который мы использовали (например, GET или POST), не разрешен для запрашиваемого ресурса. Разберем эту ситуацию подробнее и предложим комплексные шаги по ее устранению.

Анализ ошибки "405 Method Not Allowed"

Ошибка "405 Method Not Allowed" — это стандартный код ответа HTTP, который сервер отправляет, когда ему поступает запрос с методом (например, GET, POST, PUT, DELETE), который не поддерживается для указанного URL-адреса. Это отличается от ошибки 404 "Not Found", которая означает, что ресурс по данному URL вообще не существует. В нашем случае ресурс существует, но мы пытаемся выполнить с ним неподдерживаемое действие.

Причины такой ошибки могут быть разнообразны:

  1. Неактуальная версия программного обеспечения 1С, которая обращается к устаревшим или измененным конечным точкам API или использует неподдерживаемые методы взаимодействия.
  2. Неправильная конфигурация сервера или прокси-сервера (например, nginx, как указано в тексте ошибки), который обрабатывает запросы к API Честного ЗНАКа.
  3. Некорректно настроенный HTTP-метод в самом запросе из 1С, который не соответствует требованиям текущей версии API Честного ЗНАКа.
  4. Проблемы с настройками контура интеграции (тестовый/продуктивный) в 1С или Честном ЗНАКе.
  5. Ограничения безопасности или сетевые проблемы, которые влияют на прохождение запросов.

Давайте пошагово разберем, как мы можем диагностировать и устранить эту проблему.

Основные причины и пошаговые решения проблемы

  1. 1. Проверяем актуальность версии 1С:УТ и адресов 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), это будет веским аргументом в пользу обновления конфигурации или, в крайнем случае, корректировки кода (если это кастомизированная конфигурация).

  2. 2. Проверяем используемый HTTP-метод для запроса

    Ошибка 405 "Method Not Allowed" напрямую указывает на то, что используемый HTTP-метод не разрешен для конкретного ресурса. Мы должны точно знать, какой HTTP-метод (GET, POST, PUT, DELETE) ожидает API "Честного ЗНАКа" для запроса api/v3/true-api/cises/info и какой метод фактически отправляется из нашей системы 1С.

    Как правило, запрос информации (/info) выполняется методом GET. Однако, если для этого API по каким-то причинам требуется POST-запрос (например, если он принимает тело запроса с параметрами), а мы отправляем GET, то получим ошибку 405. Чтобы проверить это, мы можем:

    1. Изучить официальную документацию API Честного ЗНАКа. Это самый надежный источник информации о том, какой метод ожидает каждый эндпоинт.
    2. Использовать отладчик 1С. Как и в случае с проверкой URL, мы можем поставить точку останова в месте формирования HTTP-запроса и проверить значение свойства Метод объекта HTTPЗапрос.
    
    // Пример, как мы можем проверить HTTP-метод в отладчике
    Перем HTTPЗапросОбъект; // Объект HTTPЗапроса
    // Мы можем вывести текущий метод:
    Сообщить(HTTPЗапросОбъект.Метод); // Ожидаем "GET" или "POST"
    
    // Если мы обнаружим, что метод не соответствует ожидаемому,
    // и это происходит в доработанном коде, то нам нужно его скорректировать:
    // HTTPЗапросОбъект.Метод = "POST"; // Или "GET", в зависимости от требований API
    

    Если в нашей конфигурации 1С есть кастомизация, которая формирует эти запросы, мы должны убедиться, что используемый метод соответствует спецификации API Честного ЗНАКа. В типовых конфигурациях 1С, как правило, методы заданы корректно для текущего релиза, поэтому проблема чаще всего кроется в устаревании релиза или внешних факторах. Для быстрой проверки отправки GET- и POST-запросов с нужными параметрами можно использовать обработку для тестирования HTTP-запросов из 1С.

  3. 3. Проверяем настройки тестового/продуктивного контура в 1С

    В интеграции с ИС МП критически важно правильно указать, с каким контуром мы работаем: тестовым или продуктивным. Мы должны проверить в настройках нашей 1С, не стоит ли случайно галка "Тестовый контур", если мы работаем с продуктивным окружением Честного ЗНАКа. Использование неверного контура (тестового вместо продуктивного или наоборот) с соответствующими адресами и учетными данными приведет к ошибкам.

    Для проверки и настройки контура, выполним следующие действия в 1С:

    1. Перейдем в раздел "НСИ и Администрирование".
    2. Выберем пункт "Интеграция с ИС МП" (или "Интеграция с государственными информационными системами" → "Маркировка ИС МП").
    3. В открывшихся настройках внимательно посмотрим на флаг (чекбокс) "Тестовый контур".

    Если мы работаем в реальной (продуктивной) базе и хотим взаимодействовать с продуктивным контуром Честного ЗНАКа, этот флаг должен быть снят. Если же мы сознательно работаем в тестовой базе или выполняем пробные операции, флаг должен быть установлен, и при этом должны быть настроены соответствующие учетные данные для тестового контура Честного ЗНАКа.

    Ошибка 405 может возникнуть, если, например, тестовый контур ЧЗ не поддерживает определенный метод для запрошенного API, или если мы пытаемся использовать учетные данные продуктивного контура с адресами тестового.

  4. 4. Проверяем корректность работы электронной цифровой подписи (ЭЦП) и токенов авторизации

    Для работы с Честным ЗНАКом усиленная квалифицированная электронная подпись (УКЭП) является обязательным инструментом. Мы должны убедиться, что наша УКЭП корректно установлена на компьютере, зарегистрирована в личном кабинете Честного ЗНАКа и правильно настроена в 1С для подписания сообщений и авторизации на сервере.

    Хотя напрямую не ведет к ошибке 405, некорректная ЭЦП может препятствовать успешной авторизации, что в свою очередь может привести к ошибкам сервера, включая иногда и "Method Not Allowed", если сервер не может идентифицировать пользователя и отклоняет запрос на уровне авторизации, а не только по методу.

    Мы должны проверить следующие моменты:

    1. Работает ли ЭЦП на сайте Честного ЗНАКа? Как упоминалось в сообщениях, если по ней входит на сайт ЧЗ, это хороший признак, но не гарантирует работу через API, так как API может иметь свои нюансы.
    2. Корректно ли настроен сертификат УКЭП в 1С? В 1С в разделе "Администрирование" -> "Обмен электронными документами" -> "Настройки электронной подписи и шифрования" мы должны убедиться, что наш сертификат выбран и действителен.
    3. Актуален ли токен авторизации Честного ЗНАКа? Токен авторизации является динамическим и обновляется каждые 9 часов. Если он устарел и автоматическое обновление не произошло, это может вызвать проблемы с доступом к API. В 1С предусмотрена возможность актуализации токена вручную. Мы найдем ее в настройках интеграции ИС МП.
  5. 5. Детальная проверка конфигурации интеграции в 1С

    Помимо общих настроек, мы должны внимательно проверить все параметры интеграции с ИС МП в нашей 1С. Для этого:

    1. Перейдем в раздел "НСИ и Администрирование".
    2. Выберем пункт "Интеграция с ИС МП".
    3. Мы проверим следующие параметры:
      • Выбор категорий товаров: Убедимся, что для нужных нам категорий товаров (например, Молочная продукция, Обувь и т.д.) включена интеграция.
      • Идентификатор OMS ID: Этот идентификатор (Order Management System ID) получаем в личном кабинете Честного ЗНАКа в разделе "Маркировка" -> "Управление заказами" -> "Устройства". Мы должны убедиться, что он правильно введен в 1С.
      • Сертификат УКЭП: Проверим, какой сертификат выбран для взаимодействия с ИС МП.
    4. Карточки номенклатуры: Важно, чтобы в карточке номенклатуры был корректно указан GTIN (14 цифр, с дополнением нулями слева при необходимости), и чтобы карточка товара была создана в Национальном каталоге Честного ЗНАКа. Хотя это не прямая причина 405 ошибки, некорректные данные могут приводить к проблемам на следующих этапах обмена.
    5. Ввод товаров в оборот: Товары должны быть введены в оборот через документ "Маркировка товаров ИС МП" в 1С перед попыткой работы с ними через API Честного ЗНАКа.

    Любые несоответствия в этих настройках могут приводить к невалидным запросам, которые сервер Честного ЗНАКа может отклонять различными ошибками, включая 405.

  6. 6. Учитываем влияние копии базы данных

    В сообщениях упоминалось, что работа ведется в копии базы данных ("признак копия"). Хотя использование копии базы данных само по себе не является прямой причиной ошибки 405, некорректная настройка параметров интеграции Честного ЗНАКа в такой копии может привести к проблемам с подключением. Мы должны проверить, что:

    1. В копии базы настройки интеграции (адреса, сертификаты, логины/пароли, флаг "Тестовый контур") соответствуют тому окружению, с которым мы пытаемся взаимодействовать.
    2. Если копия предназначена для тестов, убедимся, что она настроена на тестовый контур Честного ЗНАКа с соответствующими тестовыми учетными данными. Попытка использования продуктивных данных с тестовыми адресами или наоборот приведет к ошибкам.
  7. 7. Диагностика сетевых проблем и рекомендации Честного ЗНАКа

    Иногда проблемы могут быть вызваны внешними факторами, такими как сетевые ограничения, блокировка фаерволом на нашей стороне или даже DDoS-атаками на инфраструктуру Честного ЗНАКа. Мы должны убедиться, что:

    1. Настройки фаервола и антивируса не блокируют исходящие запросы от 1С к серверам Честного ЗНАКа.
    2. Очистим кэш DNS на компьютере и, по рекомендации Честного ЗНАКа, настроим резервный DNS-сервер (например, Яндекс.DNS с адресом 77.88.8.8), чтобы исключить проблемы с разрешением доменных имен.
    3. Все взаимодействия с API происходят по протоколу HTTPS. Это стандарт безопасности, и попытки использовать HTTP могут быть отклонены.
    4. Если проблема сохраняется, мы можем выполнить трассировку до 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 и каким методом обращается система. При сохранении проблемы, глубокая сетевая диагностика и обращение в техническую поддержку Честного ЗНАКа с предоставлением всех собранных данных будут наиболее эффективными шагами. Только системный подход к поиску причины позволит нам успешно восстановить работоспособность интеграции.

← На главную