Как заменить устаревший метод facade/identifytools/aggregated для получения состава агрегатов в Честном Знаке?

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

С развитием системы маркировки "Честный знак" (ГИС МТ) многие разработчики столкнулись с отключением старых методов API, которые использовались годами. Одним из таких критических изменений стало отключение Facade API, в частности метода api/v4/facade/identifytools/aggregated, который позволял получать содержимое агрегатов (коробок, паллет). Рассмотрим подробнее, на что заменить этот метод, как правильно сформировать новый запрос и какие технические нюансы следует учесть при реализации в 1С.

Переход на True API: Основной метод

Проанализируем ситуацию: начиная с 1 апреля 2024 года, ЦРПТ окончательно прекратил поддержку устаревших методов "фасада". На смену им пришел True API версий v3 и v4. Для получения списка вложенных кодов идентификации (КИ), входящих в состав транспортной упаковки (агрегата), теперь необходимо использовать метод cises/aggregated/list.

Выясним основные параметры нового запроса:

  1. URL ресурса: Для стабильной работы рекомендуется использовать хост https://markirovka.crpt.ru. Полный путь к методу: /api/v3/true-api/cises/aggregated/list.
  2. Тип запроса: Важное отличие от старых версий — теперь используется исключительно метод POST. Для отладки удобно использовать инструменты тестирования http сервисов. Попытка отправить GET-запрос приведет к ошибке 405 (Not Allowed).
  3. Тело запроса: Коды маркировки агрегатов передаются в виде JSON-массива строк. Даже если вы проверяете одну коробку, её код должен быть обернут в квадратные скобки массива.

Реализация запроса в 1С

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


Функция ПолучитьСписокАгрегированныхКИ(Токен, КодМаркировки, ТоварнаяГруппа = "shoes") Экспорт
    
    // Подготовка массива кодов
    КодыМассив = Новый Массив;
    КодыМассив.Добавить(КодМаркировки);
    
    // Настройка соединения
    Сервер = "markirovka.crpt.ru";
    Ресурс = "/api/v3/true-api/cises/aggregated/list?pg=" + ТоварнаяГруппа;
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Authorization", "Bearer " + Токен);
    Заголовки.Вставить("Content-Type", "application/json");
    
    HTTPСоединение = Новый HTTPСоединение(Сервер, , , , , , Новый ЗащищенноеСоединениеOpenSSL);
    HTTPЗапрос = Новый HTTPЗапрос(Ресурс, Заголовки);
    
    // Формируем тело JSON. Код передается без экранирования для URL, но как строка JSON.
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, КодыМассив);
    СтрокаТела = ЗаписьJSON.Закрыть();
    
    HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаТела, КодировкаТекста.UTF8);
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    
    Если HTTPОтвет.КодСостояния = 200 Тогда
        // Разбор ответа
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(HTTPОтвет.ПолучитьТелоКакСтроку());
        Данные = ПрочитатьJSON(ЧтениеJSON);
        Возврат Данные;
    КонецЕсли;
    
    Возврат Неопределено;
КонецФункции

Важные технические нюансы и ограничения

При работе с методами True API следует учитывать специфику (включая обработку сжатого в Zip http-ответа), которая часто становится причиной ошибок при интеграции. Рассмотрим наиболее важные моменты:

Альтернативное решение для получения детальной информации

Проанализируем ситуацию, когда вам нужно получить не только список вложенных кодов, но и их текущие статусы или информацию о владельце. В этом случае вместо aggregated/list целесообразно использовать метод POST /api/v3/true-api/cises/short/list.

Этот метод возвращает структуру, в которой для каждого переданного кода в поле children будет содержаться массив вложенных элементов. Это позволяет за один запрос получить комплексную информацию по иерархии и состоянию кодов. Выясним, какой сервер лучше использовать: для таких "тяжелых" запросов ЦРПТ рекомендует обращаться к CDN-площадкам по адресу cdn.crpt.ru, что значительно снижает время ожидания ответа при высокой нагрузке на основную систему.

Рассмотрим пример структуры заголовков для универсального взаимодействия:


Функция ПолучитьЗаголовкиВзаимодействия(Токен)
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("accept", "*/*");
    Заголовки.Вставить("Content-Type", "application/json");
    Заголовки.Вставить("Authorization", "Bearer " + Токен);
    Возврат Заголовки;
КонецФункции

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

← На главную