При внедрении системы обязательной маркировки в старых конфигурациях, таких как УПП 1.3, многие разработчики сталкиваются с вопросом поиска товара по коду DataMatrix. Часто возникает ошибочное предположение, что для получения наименования или GTIN товара необходимо обращаться к API «Честного знака». Давайте разберемся, как реализовать эту задачу эффективно и без лишних сетевых запросов.
Прежде всего, важно понимать, что DataMatrix — это не просто «штрихкод», а сложная структура данных, соответствующая стандарту GS1. Внутри кода уже содержатся все необходимые идентификаторы:
GTIN (глобальный номер товарной позиции, 14 цифр).Вам не нужно отправлять запрос в Честный знак, чтобы узнать, что за товар перед вами. Достаточно считать код сканером, который настроен на передачу спецсимволов, и программно выделить подстроку, следующую за идентификатором (01).
Для реализации этого механизма рассмотрим алгоритм парсинга. Сканер 2D передает данные в виде строки, где группы данных разделены специальным непечатным символом GS (ASCII 29). Обычное текстовое поле в 1С может «съедать» этот символ, поэтому важно настроить Подключаемое оборудование так, чтобы оно корректно обрабатывало поток данных.
Рассмотрим пример того, как можно логически представить процесс извлечения GTIN из строки сканирования:
// Пример упрощенного парсинга строки DataMatrix
Функция ПолучитьGTINИзКодаМаркировки(СтрокаКода)
// Ищем идентификатор 01, который означает начало GTIN
Позиция01 = Найти(СтрокаКода, "01");
Если Позиция01 > 0 Тогда
// GTIN в DataMatrix всегда состоит из 14 цифр
GTIN = Сред(СтрокаКода, Позиция01 + 2, 14);
Возврат GTIN;
КонецЕсли;
Возврат "";
КонецФункции
При работе с маркированными товарами необходимо учитывать важный нюанс, касающийся «остатков». В системе Честный знак товары, которые маркировались как товарные остатки, могут иметь префиксы GTIN, отличные от привычного EAN-13, напечатанного на упаковке. Например, если код начинается на 029, он может не соответствовать обычному штрихкоду производителя (46х...).
Чтобы ваша система работала корректно:
Номенклатура добавьте поле GTIN_Маркировки.GTIN, а значением — ссылка на Номенклатуру.GTIN из DataMatrix, а затем выполнить поиск товара в этом регистре, а не в стандартном поиске по Штрихкодам.Использование API для каждой продажи — это тупиковый путь. Во-первых, API Национального каталога требует сложной авторизации с использованием ЭЦП, что невозможно обеспечить на каждом рабочем месте кассира. Во-вторых, ограничения на количество запросов в минуту быстро приведут к остановке работы кассы при большой очереди. И, наконец, скорость ответа API всегда будет ниже, чем скорость локального поиска по базе 1С.
Помните, что для целей вывода товара из оборота на кассе, вам необходимо не просто «узнать товар», но и провести проверку целостности кода (наличие крипто-хвоста). Это является требованием законодательства для обеспечения безопасности и исключения оборота контрафакта.
Для внедрения функционала в вашу конфигурацию УПП 1.3 придерживайтесь следующих шагов:
GS в систему.(01).GTIN и Номенклатуры, уделив особое внимание товарам из «остатков».Библиотеку подключаемого оборудования, чтобы корректно распознавать тип DataMatrix и отделять его от обычных EAN-13.Таким образом, вы получите надежный инструмент, который работает локально, быстро и соответствует всем требованиям системы Честный знак.