В процессе работы с системой маркировки «Честный ЗНАК» многие разработчики сталкиваются с тем, что структура кода DataMatrix может варьироваться. Изначально сложилось представление, что для молочной продукции серийный номер имеет фиксированную длину в 6 знаков. Однако при сканировании кодов, особенно импортного производства, мы видим, что общая длина строки увеличивается, а серийный номер может составлять 8 знаков. Давайте разберемся, почему так происходит и как правильно настроить программный код 1С для обработки таких данных.
Основная причина различий кроется в национальных стандартах маркировки стран-участниц ЕАЭС. В Российской Федерации для молочной продукции установлен стандарт, где серийный номер (идентификатор применения «21») состоит из 6 символов. В Республике Беларусь требования к формированию криптохвоста и серийного номера могут отличаться, в частности, длина серийного номера часто составляет 8 знаков.
Важно понимать, что система «Честный ЗНАК» принимает такие коды как валидные, так как они соответствуют требованиям трансграничного взаимодействия в рамках ЕАЭС. Проблема заключается не в самих кодах, а в жестких ограничениях, которые иногда закладываются в алгоритмы парсинга (разбора) строк внутри учетных систем.
При написании логики разбора кода маркировки необходимо отойти от жесткого задания длины полей. Алгоритм должен опираться на идентификаторы применения (ИП), которые указывают, какие данные следуют далее. В 1С для работы с маркировкой рекомендуется использовать типовые механизмы, которые уже учитывают специфику продукции из других стран.
Рассмотрим пример того, как описываются правила разбора для различных сценариев в типовых конфигурациях. При анализе кода мы должны динамически определять структуру элемента:
// Пример описания элементов для российской молочной продукции
ОписаниеЭлементовКМ = Новый Структура("GTIN, СерийныйНомер, ГоденДо, КодПроверки, МассаНеттоВКг");
ОписаниеЭлементовКМ.GTIN = ОписаниеЭлементаКодаМаркировки("01", "GTIN", 14);
ОписаниеЭлементовКМ.СерийныйНомер = ОписаниеЭлементаКодаМаркировки("21", "СерийныйНомер", 6, Алфавит.БуквыЦифрыЗнаки);
ОписаниеЭлементовКМ.КодПроверки = ОписаниеЭлементаКодаМаркировки("93", "КодПроверки", 4, Алфавит.БуквыЦифрыЗнаки);
// Пример описания элементов для белорусской молочной продукции
ОписаниеЭлементовКМБел = Новый Структура("GTIN, СерийныйНомер, ГоденДо, КодПроверки");
ОписаниеЭлементовКМБел.GTIN = ОписаниеЭлементаКодаМаркировки("01", "GTIN", 14);
ОписаниеЭлементовКМБел.СерийныйНомер = ОписаниеЭлементаКодаМаркировки("21", "СерийныйНомер", 8, Алфавит.БуквыЦифрыЗнаки);
Для корректной работы всегда используйте методы типового функционала РазборКодаМаркировкиИСМПСлужебный. Разработчики 1С регулярно обновляют библиотеку подключаемого оборудования и модули ИС МП, добавляя шаблоны для разных стран. Если ваша система выдает ошибку на 8-значном номере, проверьте, актуализированы ли у вас алгоритмы разбора в соответствии с последними обновлениями конфигурации.
Часто возникают вопросы, почему при продаже белорусской продукции в личном кабинете «Честного ЗНАКа» появляются ошибки или пустые поля. Это связано с механизмом интеграции данных ЕАЭС:
GTIN и количество, а не индивидуальный код маркировки.True API для взаимодействия с операторами стран ЕАЭС.Если вы видите, что марка передается в ОФД корректно, но в личном кабинете информация неполная, это зачастую является особенностью текущего межгосударственного обмена данными, а не ошибкой вашего программного обеспечения. В подобных ситуациях рекомендуется обращаться в техническую поддержку «Честного ЗНАКа» для уточнения статуса конкретного кода, если это критически важно для вашего учета.
Чтобы избежать проблем в будущем, придерживайтесь следующих правил:
21, 93 и т.д.).FNC1), которые позволяют системе точно определить окончание блока данных.Таким образом, нестандартная длина кода — это не ошибка, а требование национальных систем маркировки стран ЕАЭС. Правильная настройка алгоритмов 1С с учетом этих особенностей позволит вам бесперебойно работать как с отечественной, так и с импортной продукцией.