При работе с маркировкой в конфигурации 1С:Управление торговлей 10.3 пользователи часто сталкиваются с ситуацией, когда при сканировании кодов DataMatrix в форме «Проверка поступившей продукции» система не узнает товар. Вместо того чтобы отметить существующую позицию в документе, программа либо создает новую строку, либо подсвечивает текущую красным цветом, требуя ручного сопоставления. Рассмотрим подробнее причины этого поведения и разберем по шагам, как настроить систему для корректной автоматической работы.
Для начала проанализируем структуру кодов, которые участвуют в процессе. В системе маркировки «Честный знак» используется международный формат GS1 DataMatrix. Внутри этого кода обязательно присутствует идентификатор GTIN (Global Trade Item Number), который обычно начинается с признака 01.
Проанализируем пример, приведенный в обсуждении:
(01)04610142926173(21)W2hG/UFWR.uW9GTIN — это 04610142926173 (14 знаков).2000133268597.Выясним причину конфликта: штрихкоды, начинающиеся на 20–29, относятся к диапазону для внутреннего использования (Local Use). Поставщик мог использовать их годами для внутреннего учета. Однако для регистрации товара в системе «Честный знак» он обязан получить глобальный GTIN, который в России чаще всего начинается на 46.
Проблема возникает в тот момент, когда в вашей базе 1С товар заведен под внутренним кодом 200..., а в коде маркировки зашит 046.... Для программы это два совершенно разных товара, даже если физически это одна и та же коробка. При сканировании 1С ищет в регистре штрихкодов именно тот номер, который пришел в DataMatrix, не находит его и «выбрасывает» позицию в новую строку.
Чтобы автоматика начала срабатывать правильно, нам необходимо «подружить» карточку номенклатуры с тем GTIN, который использует поставщик в маркировке. Рассмотрим, как это сделать правильно:
Штрихкоды).GTIN из маркировки. Важный нюанс: GTIN часто содержит ведущий ноль (всего 14 цифр). В 1С:УТ 10.3 штрихкод может храниться как в 14-значном, так и в 13-значном формате (без первого нуля). Попробуйте добавить 4610142926173.Теперь при сканировании DataMatrix система обратится к регистру, найдет соответствие по GTIN и автоматически сопоставит его с нужной позицией в документе поступления.
В последних обновлениях УТ 10.3 (версии 10.3.59 и выше) логика работы с маркировкой была существенно расширена. Посмотрим на работу регистра Штрихкоды и упаковки товаров. В отличие от старого регистра штрихкодов, этот механизм специально заточен под требования ИС МП (Информационной системы маркировки продукции).
Если после добавления обычного штрихкода проблема сохраняется, проанализируем справочник Единицы измерения. В форме единицы измерения для маркируемых товаров должна появиться возможность указать «Параметры упаковки» или «GTIN».
Выполним следующие действия:
GTIN.Проанализируем ситуацию с точки зрения бизнес-процесса. Если на товаре наклеен один штрихкод (EAN-13), а внутри маркировки зашит другой (GTIN), это считается плохой практикой. Согласно рекомендациям «Честного знака», линейный штрихкод на упаковке должен совпадать с тем GTIN, который передается в составе DataMatrix.
Если такие ситуации носят массовый характер, рекомендуем связаться с поставщиком. Однако на практике проще один раз внести GTIN в свою базу 1С как дополнительный штрихкод для этой номенклатуры. Это позволит принимать товар без ручного вмешательства в будущем.
Для программистов, желающих понять, как 1С обрабатывает эти данные «под капотом», приведем пример логики поиска номенклатуры по считанному коду. В модулях обработки проверки поступления часто используется поиск по входящему штрихкоду. Разберем упрощенную схему того, что происходит при сканировании:
// Упрощенная логика поиска номенклатуры по GTIN из маркировки
Функция НайтиНоменклатуруПоМаркировке(ДанныеМаркировки)
// Извлекаем GTIN (первые 14 цифр после идентификатора 01)
СтрокаGTIN = ИзвлечьGTIN(ДанныеМаркировки);
// Поиск в регистре штрихкодов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Владелец КАК Номенклатура,
| Штрихкоды.ЕдиницаИзмерения
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Штрихкод = &Штрихкод";
// Пробуем найти и как 14 знаков, и как 13 (отсекая ведущий ноль)
Запрос.УстановитьПараметр("Штрихкод", СтрокаGTIN);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
// Если не нашли, пробуем без ведущего нуля
Если Лев(СтрокаGTIN, 1) = "0" Тогда
Запрос.УстановитьПараметр("Штрихкод", Сред(СтрокаGTIN, 2));
Результат = Запрос.Выполнить();
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Из этого кода становится ясно, что если в вашем регистре Штрихкоды нет записи с этим числовым значением, сопоставление гарантированно провалится. Программа не «знает», что ваш внутренний код 200... и пришедший 461... — это одно и то же, пока вы явно не укажете это в регистре.
Чтобы «забороть» проблему разлетающихся строк в УТ 10.3 при проверке маркировки, выполните следующие шаги:
(01).Штрихкоды для соответствующей номенклатуры.Следуя этой методике, мы добьемся того, что форма проверки поступления будет отрабатывать корректно, подсвечивая строки зеленым и автоматически подтверждая наличие товара на складе.