С переходом системы «Честный Знак» на новый протокол обмена данными API 3.0 (Станция управления заказами), пользователи устаревших конфигураций, таких как 1С:Управление торговлей 10.3 (УТ 10.3), столкнулись с серьезной проблемой. Официальная поддержка этой конфигурации ограничена, и глубокие изменения в библиотеке интеграции с маркировкой (БИМ) туда больше не транслируются. Разберем подробно, какие существуют пути решения этой задачи и какой из них наиболее эффективен для программиста.
В версии API 3.0 существенно изменились эндпоинты (адреса методов) и структура JSON-объектов. Были усилены требования к авторизации, изменены форматы передачи идентификаторов OMS ID, а также вложенность массивов в запросах на эмиссию кодов. Если ваша система продолжает использовать протокол 2.0, со временем методы начнут возвращать ошибки «Метод не поддерживается», что полностью заблокирует процесс заказа марок и отчетов о нанесении.
Проанализируем самый стабильный с точки зрения обновлений способ. Мы можем установить рядом современную конфигурацию, например, 1С:Управление торговлей 11, УНФ или 1С:Розница 3.0. В этих программных продуктах подсистема маркировки обновляется оперативно самой фирмой «1С».
Схема работы выглядит следующим образом:
COM-соединение или HTTP-сервис.Этот метод избавляет от необходимости постоянно переписывать сложный код интеграции в старой базе при каждом изменении законодательства.
Если вариант со шлюзом не подходит по организационным причинам, рассмотрим возможность «бэкпорта» кода. Поскольку 1С:Управление производственным предприятием (УПП) все еще находится на расширенной поддержке и работает на обычных формах, ее модули маркировки архитектурно ближе к УТ 10.3, чем модули из УТ 11.
Разберем технические нюансы этого процесса. Вам потребуется найти в УПП процедуры, отвечающие за конвертацию запросов. Обратите внимание на модуль ИнтерфейсСУЗ и функцию ТелоЗапросаПоФорматуОбмена(). В актуальных релизах там реализована логика трансформации данных под формат V3.
Пример логики, которую необходимо внедрить или адаптировать:
Процедура КонвертироватьТелоЗапросаФормат_V3(СтруктураЗапроса) Экспорт
// Изменяем структуру JSON под требования API 3.0
// Например, перенос параметров авторизации или переименование полей
Если СтруктураЗапроса.Свойство("products") Тогда
Для Каждого СтрокаТовара Из СтруктураЗапроса.products Цикл
// Логика преобразования полей товара
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Важно: Перенос кода из УТ 11 практически невозможен из-за использования там управляемых форм, асинхронных вызовов и библиотеки стандартных подсистем (БСП) новых версий. Выбирайте УПП как донорский ресурс.
Если вам требуется только базовый функционал (заказ кодов и печать), проанализируем возможность написания собственной мини-подсистемы. Это позволит не загромождать базу тяжелыми библиотеками 1С. Выясним, какие объекты 1С нам понадобятся.
Для реализации прямого обмена используем объект HTTPСоединение. Документация API 3.0 открыта в личном кабинете «Честного Знака». Вам нужно реализовать формирование JSON вручную и отправку его методом POST.
Посмотрим на пример инициализации соединения:
Сервер = "субдомен.crpt.ru"; // Адрес СУЗ
OMSID = "ваш_идентификатор_омс";
Токен = "полученный_токен_авторизации";
ЗаголовокЗапроса = Новый Соответствие;
ЗаголовокЗапроса.Вставить("Content-Type", "application/json");
ЗаголовокЗапроса.Вставить("X-OMS-Token", Токен);
Соединение = Новый HTTPСоединение(Сервер, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/api/v3/orders?omsId=" + OMSID, ЗаголовокЗапроса);
Запрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Этот путь требует четкого следования документации «Честного Знака», но он делает вашу систему независимой от обновлений типовых конфигураций 1С.
Для пользователей «клюшек» ситуация сложнее. Поскольку встроенные средства работы с JSON и HTTP в 7.7 крайне ограничены, рекомендуем использовать внешние компоненты (DLL) или скрипты-прокладки на языке Python или C#. Скрипт может считывать файл выгрузки из 1С 7.7, выполнять обмен с СУЗ API 3.0 и возвращать результат в виде текстового файла или таблицы.
Выясним причину, по которой стоит выбрать тот или иной метод. Если ваша УТ 10.3 сильно кастомизирована, лучшим выбором будет Вариант 1 (Шлюз), так как он минимизирует риски поломки существующего учета. Если вы опытный разработчик и хотите оставить все внутри одной базы, выбирайте Вариант 2, используя код из УПП как образец. Вариант 3 подходит для узкоспециализированных задач с небольшим объемом операций.
Помните, что использование устаревшего протокола 2.0 для новых товарных групп (молоко, вода, пиво) уже сейчас может приводить к отказам в обработке отчетов о нанесении и агрегации.