Настройка обмена между программными продуктами 1С (например, 1С:Розница или 1С:УНФ) и Станцией управления заказами (СУЗ) системы «Честный знак» часто вызывает у технических специалистов и администраторов множество вопросов. В процессе настройки можно столкнуться с необходимостью ввода различных токенов, заполнением реквизитов договоров, а также с рядом специфических ошибок API.
В этой статье мы подробно рассмотрим, где получить необходимый токен авторизации СУЗ, как правильно настроить параметры обмена, обойти ошибку неподдерживаемого способа ввода в оборот, а также разберем причины возникновения популярных системных сбоев при эмиссии кодов маркировки.
---
При настройке обмена с СУЗ в 1С (раздел Администрирование — Интеграция с ИС МП — Параметры подключения к СУЗ) система требует указать уникальный идентификатор устройства и токен соединения. Многие пользователи путают статические и динамические токены, из-за чего авторизация завершается ошибкой.
Давайте разберем по шагам правильный алгоритм получения токена СУЗ:
Скопированные данные (OMS ID и Токен соединения) перенесите в настройки обмена СУЗ в 1С. После этого программа сможет автоматически в фоновом режиме запрашивать временные динамические сессионные токены для выполнения операций заказа кодов без ручного вмешательства пользователя.
Важное примечание для розничных касс (Разрешительный режим): Не путайте токен СУЗ для заказа кодов с Токеном для ККТ. Если вам нужно настроить проверку кодов на кассе в реальном времени (разрешительный режим), токен генерируется в основном ЛК «Честного знака» в разделе Профиль — Данные участника — Токен для ККТ. Этот токен вставляется в настройки сканирования кодов в кассовом модуле 1С.
---
При создании документа Заказ на эмиссию кодов маркировки СУЗ программа может затребовать номер и дату договора с оператором маркировки (ЦРПТ).
Выясним, как поступить в этой ситуации:
Если вы находитесь на этапе тестирования или маркируете товарные остатки в переходный период (когда эмиссия кодов бесплатна), в поля номера и даты договора в 1С можно ввести любые произвольные символы (например, номер "1" и текущую дату). Система успешно пропустит документ.
Однако, когда маркировка переходит в коммерческий режим (платный заказ кодов — 50 копеек + НДС за один код), вам потребуется указать реквизиты реального договора на эмиссию. Найти эти данные можно в Личном кабинете «Честного знака»:
---
Часто при заполнении документа Заказ на эмиссию кодов маркировки и попытке получить GTIN на остатки, программа выдает критическую ошибку с подробным логом в общем модуле ИнтеграцияИСМПСлужебный.
Проанализируем причину этой проблемы:
Маркировка остатков товаров (например, обуви, одежды, парфюмерии) — это временная процедура с жестко ограниченными сроками проведения, устанавливаемыми законодательством. Как только период маркировки остатков для конкретной товарной группы завершается, ЦРПТ на уровне серверов СУЗ отключает техническую возможность заказа кодов по упрощенной схеме «Маркировка остатков».
Поскольку 1С отправляет запрос по API именно с признаком остатков, сервер «Честного знака» отклоняет его, а конфигурация выводит ошибку.
Решение проблемы по шагам:
Заказ на эмиссию кодов маркировки.---
В процессе активного обмена данными вы можете столкнуться со сбоями в очереди отправки сообщений.
Этот код ответа сервера означает, что Станция управления заказами или серверное API ГИС МТ временно перегружены либо на стороне ЦРПТ проводятся технические работы. Никаких настроек в 1С менять в этом случае не нужно. Единственное верное решение — приостановить отправку запросов и повторить операцию через некоторое время (от нескольких минут до пары часов), пока серверное оборудование провайдера не вернется в штатный режим работы.
Это классическая ошибка программного кода платформы 1С, которая возникает из-за несовпадения версий формата обмена API «Честного знака» и релиза вашей конфигурации. Программа отправляет заказ на эмиссию, сервер ЦРПТ отклоняет его по какой-то внутренней причине и возвращает JSON-пакет с ошибкой. В старых релизах общего модуля ИнтеграцияИСМПСлужебный разработчики 1С жестко прописали обращение к свойству declineReason (причина отклонения) в структуре ответа сервера.
Если «Честный знак» изменил структуру возвращаемого JSON и убрал или переименовал это поле, обработчик ошибок 1С падает с критическим исключением, не позволяя пользователю увидеть реальный текст отказа.
Рассмотрим, как это исправить в коде 1С, если у вас есть права на редактирование конфигурации:
// Пример безопасного извлечения причины отклонения в общем модуле
Если СвойствоДанных.Свойство("declineReason") Тогда
ТекстОшибки = СвойствоДанных.declineReason;
ИначеЕсли СвойствоДанных.Свойство("error") Тогда
ТекстОшибки = СвойствоДанных.error;
Иначе
ТекстОшибки = "Причина отклонения не указана сервером СУЗ";
КонецЕсли;
Для пользователей закрытых типовых конфигураций решение этой проблемы выглядит так:
---
После успешного получения кодов маркировки (КМ) в 1С, статус документа меняется на «Коды маркировки эмитированы». На этапе вывода кодов на печать пользователи часто видят предупреждение о том, что распечатать коды можно только один раз, и обоснованно боятся потерять оплаченные марки.
Давайте разберем, как устроен этот механизм безопасности и как минимизировать риски:
Практический совет для надежности: Перед отправкой большой партии этикеток (от нескольких сотен штук) на термотрансферный принтер, выберите в диалоговом окне печати 1С принтер «Microsoft Print to PDF» или любой другой виртуальный PDF-принтер. Сохраните готовые этикетки в один файл. Если физический принтер даст сбой или оборвется лента, вы сможете безболезненно допечатать испорченные страницы из сохраненного файла PDF без риска безвозвратно потерять коды маркировки в системе.