Интеграция учетных систем 1С с государственной информационной системой маркировки товаров (ГИС МТ) «Честный ЗНАК» часто сопровождается техническими трудностями. Пользователи и разработчики регулярно сталкиваются с ошибками разбора кодов DataMatrix, некорректной работой сканеров штрихкодов, сложностями при вводе остатков в оборот и сбоями при печати чеков ККМ. В этой статье мы подробно разберем, как преодолеть эти препятствия, правильно настроить торговое оборудование и оптимизировать логику работы программ 1С.
Для успешного запуска процесса маркировки остатков нам необходимо четко понимать последовательность действий. Ранее в системе «Честный ЗНАК» допускалось описание по упрощенному атрибутивному составу. Рассмотрим стандартный пошаговый алгоритм, который применяется для подготовки товарной базы:
Проанализируем ситуацию, когда пользователи пытаются загрузить описание остатков через файлы CSV напрямую в «Честный ЗНАК» и получают ошибку формата. Часто это происходит из-за несовпадения структуры колонок или кодировки файла. Если автоматическая загрузка файла дает сбой, рекомендуется использовать ручной ввод в ЛК или воспользоваться механизмами интеграции в типовых конфигурациях 1С, где отправка данных происходит через структурированные API-запросы.
Одной из наиболее частых причин возникновения ошибки «Недопустимый формат штрихкода» при сканировании марки в 1С является некорректная настройка сканера. Маркировочный код формата DataMatrix содержит специальные непечатные управляющие символы-разделители групп данных, в частности символ GS (код ASCII 29). Если сканер настроен некорректно, он либо вырезает эти символы, либо заменяет их, что делает код нечитаемым для алгоритмов 1С.
Выясним причину этой проблемы и разберем по шагам методы ее решения:
CR (возврат каретки, код 13).В типовых конфигурациях 1С (таких как «Управление торговлей», «Розница», «Комплексная автоматизация») при сканировании кодов маркировки в документах закупки или продаж система пытается выполнить сопоставление со справочником номенклатуры. Просканированные коды сохраняются в специализированном справочнике ШтрихкодыУпаковокТоваров.
Рассмотрим ситуацию, когда при упрощенной схеме маркировки остатков несколько тысяч марок были получены без жесткой привязки к конкретным карточкам номенклатуры. При первой продаже кассир сканирует марку, система предлагает вручную выбрать сопоставляемый товар и жестко записывает эту связь в базу данных. В случае ошибки при выборе товара последующие продажи этой марки (или аналогичных марок из этой группы остатков) будут автоматически подтягивать неверную номенклатуру.
Для исправления неверно сопоставленных связей или для сброса привязки марок к номенклатуре мы можем программно «экранировать» или очистить значения в справочнике ШтрихкодыУпаковокТоваров. Посмотрим на практический пример кода внешней обработки, которая находит записи по определенному документу эмиссии кодов маркировки и отвязывает их путем изменения символа в начале значения штрихкода:
&НаСервере
Процедура ЭкранироватьПривязкуМарокНаОстаткиНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ШтрихкодыУпаковокТоваров.Ссылка КАК Ссылка,
| ШтрихкодыУпаковокТоваров.ЗначениеШтрихкода КАК ЗначениеШтрихкода,
| ПулКодовМаркировкиСУЗ.GTIN КАК GTIN
|ИЗ
| РегистрСведений.ПулКодовМаркировкиСУЗ КАК ПулКодовМаркировкиСУЗ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ШтрихкодыУпаковокТоваров КАК ШтрихкодыУпаковокТоваров
| ПО ПулКодовМаркировкиСУЗ.КодМаркировки = ШтрихкодыУпаковокТоваров.ЗначениеШтрихкода
|ГДЕ
| ПулКодовМаркировкиСУЗ.ЗаказНаЭмиссию = &ЗаказНаЭмиссию
| И ШтрихкодыУпаковокТоваров.ЗначениеШтрихкода ПОДОБНО ""(01)%""";
Запрос.УстановитьПараметр("ЗаказНаЭмиссию", ВыбДокументЭмиссии);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
КоличествоИзмененных = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Попытка
ОбъектШтрихкода = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
// Добавляем префикс подчеркивания, чтобы разорвать жесткую связь с текущей номенклатурой
ОбъектШтрихкода.ЗначениеШтрихкода = "_" + ОбъектШтрихкода.ЗначениеШтрихкода;
ОбъектШтрихкода.Записать();
КоличествоИзмененных = КоличествоИзмененных + 1;
Исключение
ЗаписьЖурналаРегистрации("Маркировка.ОшибкаОчистки",
УровеньЖурналаРегистрации.Ошибка, , ,
ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Сообщить("Успешно экранировано штрихкодов: " + КоличествоИзмененных);
КонецПроцедуры
Использование этого метода позволяет кассирам повторно сопоставить отсканированную марку с корректной позицией номенклатуры при оформлении чека в интерфейсе РМК (Рабочее место кассира).
Проанализируем природу ключевых технических ошибок, с которыми часто сталкиваются системные администраторы и программисты 1С при взаимодействии со Станцией управления заказами (СУЗ) и ЛК «Честный ЗНАК».
1. Ошибка обязательности заполнения поля remainsImport
Данная ошибка возникает при попытке отправить заказ на эмиссию кодов маркировки для остатков обуви. Начиная с определенных обновлений API ГИС МТ, поле, определяющее статус импортного происхождения остатков, стало обязательным для заполнения на стороне серверов маркировки. Если конфигурация 1С не обновлена до актуального релиза, в структуре XML/JSON-запроса это поле отсутствует. Для решения этой проблемы необходимо либо обновить конфигурацию до релиза, поддерживающего актуальные форматы обмена, либо использовать расширение конфигурации, принудительно добавляющее в структуру запроса к СУЗ необходимые параметры:
// Пример принудительного добавления параметров в структуру запроса СУЗ
ПараметрыЗапроса.Вставить("remainsImport", Истина);
ПараметрыЗапроса.Вставить("remainsAvailable", Истина);
2. Ошибка 06: «Значение поля КИ ... не найдено в базе данных»
Эта ошибка возникает в процессе отправки документов ввода в оборот или документов вывода из оборота. Она означает, что запрашиваемый код маркировки отсутствует в реестрах ГИС МТ под текущим владельцем (ИНН организации) либо вообще не зарегистрирован в системе. Основные причины:
3. Проблема вывода признака маркировки [М] в печатной форме чека
Если при продаже маркированного товара на кассе в бумажном чеке отсутствует символ [М] (или соответствующий статус проверки [М+] при ФФД 1.2), необходимо проверить всю цепочку передачи данных:
1162 (или структура тегов кода товара в новых версиях ФФД). 1С передает код маркировки в драйвер кассы в процессе фискализации чека. Если драйвер или прошивка устарели, касса проигнорирует этот тег и пробьет товар как обычный немаркированный.Таким образом, для стабильной работы системы маркировки обуви требуется комплексный подход: своевременное обновление конфигураций 1С, перевод сканирующего оборудования в режим эмуляции COM-порта с использованием актуальных драйверов NativeApi, контроль корректности статусов кодов в личном кабинете «Честного ЗНАКа» и регулярное обновление встроенного ПО (прошивок) онлайн-касс.