Внедрение обязательной маркировки обуви в систему «Честный ЗНАК» — это комплексный процесс, включающий настройку интеграции с государственной информационной системой (ГИС МТ), подготовку торгового оборудования и адаптацию бизнес-процессов в 1С. Разберем по шагам, как решить технические трудности, с которыми сталкиваются специалисты при запуске системы.
Для заказа кодов маркировки необходимо наладить связь между 1С и СУЗ. Часто пользователи сталкиваются с тем, что проверка связи не проходит. Проанализируем правильный порядок действий:
OMSID и уникальный Токен (идентификатор соединения).Важно: Если соединение не устанавливается, проверьте наличие установленного криптопровайдера (КриптоПро CSP) на сервере или клиенте, где выполняется обмен, и актуальность сертификата УКЭП.
Одной из главных проблем является ошибка «Недопустимый формат кода маркировки» при сканировании в РМК или документах 1С. Выясним причину: часто сканеры в режиме эмуляции клавиатуры (HID) некорректно передают спецсимволы-разделители или искажают регистр букв. Рассмотрим варианты решения:
01 (GTIN) и 21 (серийный номер). Некоторые сканеры обрезают лидирующие нули. Настройте сканер так, чтобы он передавал полный код.GS (ASCII 29) перед идентификаторами 91 и 92. Если сканер их «съедает», 1С не сможет распознать структуру кода.Проверим формат данных, которые считывает сканер в режиме клавиатуры. Правильная последовательность выглядит так:
(01)GTIN(21)SERIAL(91)KEY(92)CRYPTO
В типовых конфигурациях 1С (Розница 2.3, УТ 11) установлена защита от повторной печати кодов из документа «Заказ на эмиссию». Если принтер зажевал бумагу или этикетки были утеряны, 1С не даст напечатать их снова штатным способом. Проанализируем ситуацию: информация о печати хранится в регистре сведений ПулКодовМаркировкиСУЗ.
Для того чтобы разрешить повторную печать, мы можем воспользоваться небольшим кодом, который очищает дату печати для выбранных марок. Разберем пример реализации:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПулКодовМаркировкиСУЗ.КодМаркировки,
| ПулКодовМаркировкиСУЗ.Организация
|ИЗ
| РегистрСведений.ПулКодовМаркировкиСУЗ КАК ПулКодовМаркировкиСУЗ
|ГДЕ
| ПулКодовМаркировкиСУЗ.ДатаПечатиУниверсальная <> ДАТАВРЕМЯ(0001, 01, 01)";
Выборка = Запрос.Выполнить().Выбрать();
НачатьТранзакцию();
Пока Выборка.Следующий() Цикл
Запись = РегистрыСведений.ПулКодовМаркировкиСУЗ.СоздатьМенеджерЗаписи();
Запись.КодМаркировки = Выборка.КодМаркировки;
Запись.Организация = Выборка.Организация;
Запись.Прочитать();
Если Запись.Выбран() Тогда
Запись.ДатаПечатиУниверсальная = '00010101'; // Сбрасываем дату печати
Запись.Записать();
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
После выполнения этого кода статус марок вернется к значению «Готов к печати».
Для ускорения процесса маркировки остатков часто эффективнее использовать прямую печать команд на языке ZPL вместо формирования тяжелых графических макетов 1С. Рассмотрим на примере принтера Zebra LP 2824 Plus.
Посмотрим на пример кода формирования этикетки. Для вывода символов GS1 (FNC1) необходимо использовать подмену символов. В командах ZPL символ _ часто используется для обозначения управляющих последовательностей.
^XA
^CI33
^FO10,30^A@N,30,18,E:TT0003M_.FNT^FDНаименование товара^FS
^FO10,65^A@N,30,18,E:TT0003M_.FNT^FDАртикул: 8882000201^FS
^BXN,4,200,,,,]
^FO30,110^FH[^FD]101GTIN21SERIAL[1D91KEY[1D92CRYPTO^FS
^XZ
В данном примере ]1 интерпретируется принтером как символ FNC1 в начале кода DataMatrix, а [1D — как разделитель групп GS. Это позволяет печатать валидные коды, которые будут корректно считываться любым проверяющим приложением.
При маркировке остатков часто возникают ситуации, когда марок тысячи, а 1С заставляет сканировать каждую для заполнения документа «Маркировка товаров». Чтобы автоматизировать этот процесс, можно создать обработку, которая заполнит табличную часть документа КодыМаркировки данными напрямую из регистра ПулКодовМаркировкиСУЗ.
Алгоритм действий следующий:
ШтрихкодыУпаковок в документе.Совет: При заказе марок на остатки старайтесь группировать заказы по типам (мужская, женская, детская, унисекс) и способу ввода в оборот (произведено в РФ / импорт). Это значительно упростит сопоставление номенклатуры при массовом вводе в оборот.
В процессе работы с заказами на эмиссию пользователи часто сталкивались с ошибкой Поле объекта не обнаружено (declineReason). Это связано с тем, что сервер ЦРПТ изменил структуру ответа, а типовой код 1С не содержал проверки на наличие этого поля. Если вы работаете на релизе УТ 11.4 или Розница 2.3 начала 2020 года, проверьте общий модуль ИнтеграцияИСМПСлужебный.
Необходимо добавить проверку свойства перед обращением к нему:
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(СтрокаЗаказа, "declineReason")
И ЗначениеЗаполнено(СтрокаЗаказа.declineReason) Тогда
ТекстОшибки = СокрЛП(ТекстОшибки + Символы.ПС + СтрокаЗаказа.declineReason);
КонецЕсли;
Проанализируем итоги: запуск маркировки требует внимательного отношения к деталям формирования кода DataMatrix и настроек торгового оборудования. Использование прямой печати и автоматизированных обработок заполнения документов позволяет сократить время на запуск системы в разы.