Интеграция современных государственных систем маркировки (ГИС МТ «Честный ЗНАК») в старые, «нетиповые» конфигурации — одна из самых болезненных задач для программистов и владельцев бизнеса. Часто мы сталкиваемся с ситуацией, описанной в обсуждении: есть база на платформе 1С 8.2 или 8.3 (обычные формы), например, «Управление торговлей 10.3», которая годами дорабатывалась под нужды компании. Обновление такой системы до актуального релиза невозможно или экономически нецелесообразно из-за огромного объема изменений.
В этом материале мы подробно разберем стратегии решения этой задачи, объединив опыт участников профессионального сообщества и технические требования оператора ЦРПТ.
Задача заключается в реализации обмена данными с системой «Честный ЗНАК» (ЧЗ) для отправки информации о вводе в оборот, перемещении и выбытии маркированной продукции. Основные сложности при работе с устаревшими конфигурациями (УТ 10.3, УПП 1.3, КА 1.1):
Рассмотрим три основных пути решения, предложенных в ходе обсуждения.
Это наиболее надежное и рекомендуемое решение, к которому склоняется большинство экспертов. Суть метода заключается в разделении учетной системы на две базы.
Как это работает:
Алгоритм действий:
КД 2.0 — Конвертацию Данных).Преимущества: Вы не тратите сотни часов на попытки «подружить» старый движок с новым API. Обновления законодательства приходят в новую базу автоматически вместе с релизами от 1С.
Если руководство категорически против второй базы, придется внедрять функционал в существующую конфигурацию. Здесь важно понимать, что просто «сформировать файл» недостаточно. Современный обмен строится на HTTP-запросах (REST API).
В обсуждении справедливо замечено, что описание форматов обмена не является тайной. Если вы решили писать обмен самостоятельно, вам понадобятся:
Для реализации HTTP-запросов на старых платформах часто приходится использовать COM-объекты Windows, так как встроенный метод HTTPСоединение в старых версиях платформы может не поддерживать нужные протоколы безопасности.
Пример того, как может выглядеть инициализация запроса через COM-объект:
Попытка
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2) = 1251; // Кодировка
WinHttp.Open("POST", "https://markirovka.crpt.ru/api/v3/true-api/...", 0);
// Установка заголовков, включая токен авторизации
WinHttp.SetRequestHeader("Content-Type", "application/json; charset=UTF-8");
WinHttp.SetRequestHeader("Authorization", "Bearer " + ВашТокен);
WinHttp.Send(ТелоЗапросаJSON);
Если WinHttp.Status = 200 Тогда
Ответ = WinHttp.ResponseText;
// Парсинг ответа
Иначе
Сообщить("Ошибка соединения: " + WinHttp.StatusText);
КонецЕсли;
Исключение
Сообщить("Не удалось создать COM-объект: " + ОписаниеОшибки());
КонецПопытки;
Важно: Вам также потребуется внешняя компонента для работы с криптографией (подписание данных УКЭП) на стороне сервера 1С или клиента, так как отправлять данные нужно в подписанном виде.
Чтобы не писать код с нуля (что, как отмечено, может занять "огромное время"), можно поискать готовые коммерческие решения.
Существуют разработчики, предлагающие подсистемы «Маркировка для обычных форм». Обычно это:
Этот вариант дешевле перехода на новую УТ 11, но дороже самостоятельного написания «на коленке».
В теме обсуждается в основном отправка информации (ввод в оборот, отгрузка). Однако, важно помнить про разрешительный режим на кассах, который становится обязательным для многих товарных групп.
Если ваша старая УТ 10.3 используется как кассовая программа (РМК), то задача усложняется многократно. Касса должна онлайн (в момент сканирования) стучаться в ЧЗ, получать разрешение на продажу и только потом печатать чек.
Реализовать этот механизм в старой конфигурации своими силами крайне сложно, так как это требует глубокой интеграции с драйверами ККТ на низком уровне. В этом случае рекомендация однозначна: заменить кассовый софт на современный (например, поставить «1С:Розница» или фронтол на кассы), а старую УТ оставить только как бэк-офис.
Попытка «в лоб» дописать работу с «Честным ЗНАКом» в старую УТ 10.3 — это путь больших трудозатрат и постоянной поддержки изменений API. Оптимальные решения в порядке приоритета: