При внедрении обязательной маркировки обуви, одежды, табака и других товарных групп в конфигурации 1С:Управление торговлей (редакция 11) пользователи часто сталкиваются с техническими препятствиями. Одной из наиболее распространенных проблем является появление диалогового окна с ошибкой «Недопустимый формат штрихкода» при попытке ввести или сосканировать код маркировки (КМ). Данная ошибка делает невозможным добавление маркированного товара в документ продажи или документ подбора.
В этой статье мы подробно разберем, почему возникает данная неполадка при ручном копировании кодов и при сканировании, как правильно перенастроить торговое оборудование, где найти скрытые параметры интеграции в личном кабинете «Честного ЗНАКа» и как решить проблему с непередачей маркировочных данных в фискальный чек ККТ.
Рассмотрим ситуацию, когда пользователь копирует код маркировки из текстового файла, накладной или личного кабинета ЦРПТ и пытается вручную вставить его в поле ввода КМ в 1С. В этот момент система моментально выдает ошибку формата. Выясним причину этого поведения алгоритмов 1С.
Полный код маркировки формата GS1 DataMatrix представляет собой сложную структурированную строку, содержащую не только видимые символы (идентификаторы применения, серийный номер, криптохвост), но и непечатные служебные символы-разделители. Основным из них является символ <GS> (Group Separator, ASCII-код 29). Этот символ сообщает парсеру 1С о переходе от одной группы данных к другой (например, отделяет серийный номер от ключа и кода проверки).
Когда вы копируете КМ как обычный текст через буфер обмена Windows, операционная система физически не может передать непечатный символ ASCII 29. Он либо полностью вырезается, либо преобразуется в обычный пробел. Получив строку без разделителей, встроенный в 1С модуль интеграции с ИС МП (Информационной системой маркировки пива и табака / обуви) теряет ориентиры для разбора строки и сообщает о неверном формате штрихкода.
Кроме того, в старых релизах 1С:УТ 11 (например, в ветке 11.4.11) регулярные выражения встроенного парсера имели внутренние ограничения. Если криптохвост кода содержал спецсимволы, такие как знак процента %, скобки или точки, парсер ошибочно воспринимал их как начало новых служебных тегов, что приводило к аварийному завершению процедуры разбора КМ.
Единственным надежным способом работы с маркировкой является чтение кодов с помощью правильно настроенного 2D-сканера. Проанализируем схему настройки оборудования по шагам:
ASCII 29 теряется точно так же, как и при копировании из буфера. Переведите сканер в режим виртуального COM-порта (USB-COM / Virtual COM). Для этого необходимо найти инструкцию к вашей модели сканера (Honeywell, Zebra, Datalogic, Mertech и др.) и считать специальный настроечный штрихкод из раздела «USB OEM» или «USB Serial Emulation».COM3 или COM4). При необходимости установите официальный драйвер виртуального COM-порта от производителя вашего сканера.'GS' или спецсимволы в угловых скобках).Для понимания того, как система должна обрабатывать корректный поток данных со сканера на программном уровне, приведем пример кода, который выполняется при получении данных от внешнего события оборудования в Управлении торговлей:
// Пример обработки входящих данных от сканера NativeAPI в модуле формы РМК
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник = "BarCodeScanner" Или Событие = "BarCode" Тогда
// Отключаем обработку событий на время разбора
ПолученныеДанные = СокрЛП(Данные);
// В COM-режиме символ ASCII 29 передается корректно как Символ(29)
Если Найти(ПолученныеДанные, Символ(29)) > 0 Тогда
// Вызываем стандартный парсер библиотеки интеграции с ИС МП
ПараметрыШтрихкода = МаркировкаКлиент.РазобратьШтрихкодDataMatrix(ПолученныеДанные);
Если ПараметрыШтрихкода.ФорматВерный Тогда
// Добавляем маркированную продукцию в корзину
ОбработатьДобавлениеМаркированногоТовара(ПараметрыШтрихкода);
Иначе
ВызватьИсключение "Не удалось распознать структуру GS1!";
КонецЕсли;
Иначе
Предупреждение("Внимание! Сканер вернул код без разделителей GS. Проверьте настройки COM-порта.");
EndIf;
КонецЕсли;
КонецПроцедуры
Для полноценной работы с маркировкой в 1С (особенно если требуется не только продавать, но и заказывавать коды маркировки, вводить их в оборот или проверять их статусы напрямую в ГИС МТ) необходимо заполнить параметры подключения к Станции управления заказами (СУЗ).
Пользователи часто заходят в тупик, не находя кнопку «Устройства» в интерфейсе СУЗ на сайте ГИС МТ. Разберем по шагам, как получить параметры СУЗ в обновленном интерфейсе личного кабинета ЦРПТ:
OMS ID, токен соединения и укажите используемый порт (по умолчанию для обмена используется защищенный сетевой порт 443).Рассмотрим проблему, описанную в Сообщении 10: пользователь успешно добавил товар в чек в 1С, но при пробитии чека на кассовом аппарате маркировка не уходит в ОФД, а сам код маркировки не печатается в фискальном документе. На это влияют три системных фактора:
КодМаркировкиBase64, который необходим для передачи структуры КМ в ККТ через XML-пакет. Касса просто проигнорирует неполные данные и пробьет товар как обычный (немаркированный).Проанализируем крайне важный нюанс, упомянутый в обсуждении. Пользователь пытался настроить передачу маркировки по формату фискальных данных ФФД 1.05.
Обратите внимание! В соответствии с действующим законодательством РФ, розничные продавцы маркированных товаров (за исключением некоторых специфических групп, например, пива на первых этапах) обязаны работать строго по формату ФФД 1.2. Работа по ФФД 1.05 для маркировки полностью запрещена!
Для перехода на ФФД 1.2 и обеспечения легальной работы розничной точки вам потребуются:
Своевременная перенастройка торгового оборудования, обновление конфигурации 1С:Управление торговлей до актуального релиза и переход на формат фискальных данных ФФД 1.2 гарантируют отсутствие ошибок формата штрихкодов и полную юридическую чистоту розничных продаж маркированной продукции.