Как настроить и запустить маркировку обуви в 1С:Розница и 1С:Управление торговлей

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

Внедрение обязательной маркировки обуви в систему «Честный ЗНАК» — это комплексный процесс, включающий настройку интеграции с государственной информационной системой (ГИС МТ), подготовку торгового оборудования и адаптацию бизнес-процессов в 1С. Разберем по шагам, как решить технические трудности, с которыми сталкиваются специалисты при запуске системы.

Настройка подключения к СУЗ (Станция управления заказами)

Для заказа кодов маркировки необходимо наладить связь между 1С и СУЗ. Часто пользователи сталкиваются с тем, что проверка связи не проходит. Проанализируем правильный порядок действий:

  1. Зайдите в личный кабинет (ЛК) на сайте ЦРПТ (Честный ЗНАК) в режиме администратора.
  2. Перейдите в раздел управления устройствами и добавьте новое устройство.
  3. Система присвоит вам OMSID и уникальный Токен (идентификатор соединения).
  4. В 1С (УТ 11 или Розница) в настройках интеграции с ИС МП укажите эти данные.

Важно: Если соединение не устанавливается, проверьте наличие установленного криптопровайдера (КриптоПро CSP) на сервере или клиенте, где выполняется обмен, и актуальность сертификата УКЭП.

Решение проблем со сканированием кодов GS1 DataMatrix

Одной из главных проблем является ошибка «Недопустимый формат кода маркировки» при сканировании в РМК или документах 1С. Выясним причину: часто сканеры в режиме эмуляции клавиатуры (HID) некорректно передают спецсимволы-разделители или искажают регистр букв. Рассмотрим варианты решения:

  1. Перевод сканера в режим COM-порта: Это наиболее надежный способ. 1С будет получать данные через драйвер напрямую, игнорируя раскладку клавиатуры.
  2. Проверка префиксов: Код маркировки обуви должен начинаться с идентификатора применения 01 (GTIN) и 21 (серийный номер). Некоторые сканеры обрезают лидирующие нули. Настройте сканер так, чтобы он передавал полный код.
  3. Использование символов GS: Настоящий GS1 DataMatrix содержит непечатный символ GS (ASCII 29) перед идентификаторами 91 и 92. Если сканер их «съедает», 1С не сможет распознать структуру кода.

Проверим формат данных, которые считывает сканер в режиме клавиатуры. Правильная последовательность выглядит так:

(01)GTIN(21)SERIAL(91)KEY(92)CRYPTO

Программный сброс флага печати для повторного вывода этикеток

В типовых конфигурациях 1С (Розница 2.3, УТ 11) установлена защита от повторной печати кодов из документа «Заказ на эмиссию». Если принтер зажевал бумагу или этикетки были утеряны, 1С не даст напечатать их снова штатным способом. Проанализируем ситуацию: информация о печати хранится в регистре сведений ПулКодовМаркировкиСУЗ.

Для того чтобы разрешить повторную печать, мы можем воспользоваться небольшим кодом, который очищает дату печати для выбранных марок. Разберем пример реализации:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ПулКодовМаркировкиСУЗ.КодМаркировки,
    |	ПулКодовМаркировкиСУЗ.Организация
    |ИЗ
    |	РегистрСведений.ПулКодовМаркировкиСУЗ КАК ПулКодовМаркировкиСУЗ
    |ГДЕ
    |	ПулКодовМаркировкиСУЗ.ДатаПечатиУниверсальная <> ДАТАВРЕМЯ(0001, 01, 01)";

Выборка = Запрос.Выполнить().Выбрать();
НачатьТранзакцию();
Пока Выборка.Следующий() Цикл
    Запись = РегистрыСведений.ПулКодовМаркировкиСУЗ.СоздатьМенеджерЗаписи();
    Запись.КодМаркировки = Выборка.КодМаркировки;
    Запись.Организация = Выборка.Организация;
    Запись.Прочитать();
    Если Запись.Выбран() Тогда
        Запись.ДатаПечатиУниверсальная = '00010101'; // Сбрасываем дату печати
        Запись.Записать();
    КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();

После выполнения этого кода статус марок вернется к значению «Готов к печати».

Прямая печать на принтеры Zebra (язык ZPL)

Для ускорения процесса маркировки остатков часто эффективнее использовать прямую печать команд на языке 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С заставляет сканировать каждую для заполнения документа «Маркировка товаров». Чтобы автоматизировать этот процесс, можно создать обработку, которая заполнит табличную часть документа КодыМаркировки данными напрямую из регистра ПулКодовМаркировкиСУЗ.

Алгоритм действий следующий:

  1. Создаем документ «Маркировка товаров ИС МП» с видом операции «Маркировка остатков».
  2. Программно выбираем все эмитированные коды по данной организации и виду продукции, у которых статус «Напечатан».
  3. Заполняем коллекцию ШтрихкодыУпаковок в документе.
  4. Проводим документ и передаем данные в ИС МП.

Совет: При заказе марок на остатки старайтесь группировать заказы по типам (мужская, женская, детская, унисекс) и способу ввода в оборот (произведено в РФ / импорт). Это значительно упростит сопоставление номенклатуры при массовом вводе в оборот.

Исправление ошибок API в старых релизах

В процессе работы с заказами на эмиссию пользователи часто сталкивались с ошибкой Поле объекта не обнаружено (declineReason). Это связано с тем, что сервер ЦРПТ изменил структуру ответа, а типовой код 1С не содержал проверки на наличие этого поля. Если вы работаете на релизе УТ 11.4 или Розница 2.3 начала 2020 года, проверьте общий модуль ИнтеграцияИСМПСлужебный.

Необходимо добавить проверку свойства перед обращением к нему:


Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(СтрокаЗаказа, "declineReason") 
    И ЗначениеЗаполнено(СтрокаЗаказа.declineReason) Тогда
    ТекстОшибки = СокрЛП(ТекстОшибки + Символы.ПС + СтрокаЗаказа.declineReason);
КонецЕсли;

Проанализируем итоги: запуск маркировки требует внимательного отношения к деталям формирования кода DataMatrix и настроек торгового оборудования. Использование прямой печати и автоматизированных обработок заполнения документов позволяет сократить время на запуск системы в разы.

← На главную