Переход на обязательную маркировку табачной продукции часто сопровождается техническими трудностями. Распространенный сценарий: накладная (УПД) успешно подтверждается в системе ЭДО (например, СБИС), документ загружается в программу 1С:Розница, однако при попытке проверить продукцию возникает ошибка 500, строки горят розовым цветом, а на кассе при сканировании DataMatrix-кода товар попросту не распознается. Рассмотрим подробно, почему так происходит, как устроена эта цепочка и как решить возникшие проблемы по шагам.
При импорте УПД через обработку СБИС в документ поступления 1С загружаются только «сырые» текстовые значения кодов маркировки. Они записываются в реквизит ЗначениеШтрихкода. Однако сама ссылка в поле ШтрихкодУпаковки, ведущая на элемент справочника «Штрихкоды упаковок и товаров», на данном этапе остается пустой.
Розовая (или красная) подсветка строк в документе поступления сигнализирует о том, что проверка поступивших марок еще не выполнена, а связь между полученными кодами и номенклатурой базы данных 1С не зафиксирована окончательно.
Решение: Чтобы заполнить реквизит ШтрихкодУпаковки и окрасить строки в зеленый цвет, необходимо успешно выполнить сопоставление номенклатуры и завершить проверку. Если вы доверяете поставщику и не хотите сканировать каждую пачку при приемке, в форме проверки выберите команду «Принять все без проверки» (доверительная приемка). В этот момент 1С автоматически создаст записи в справочнике штрихкодов упаковок, свяжет их с карточками номенклатуры и запишет ссылки в документ поступления.
Ошибка HTTP 500 (внутренняя ошибка сервера) при нажатии на гиперссылку «Проверить поступившую табачную продукцию» указывает на сбой при попытке программы 1С связаться с серверами ГИС МТ («Честный Знак»). ЭДО СБИС здесь ни при чем — запрос идет напрямую из 1С в систему маркировки.
Проанализируем основные причины этой ошибки:
1С:Розница (например, релизы середины 2020 года), программа отправляет запросы по устаревшим схемам API. Необходимо обновить конфигурацию до актуального релиза.Выясним, каким образом программа понимает, какой именно товар сканирует кассир. Рассмотрим структуру табачного кода DataMatrix, который выглядит примерно так: 046062030975005,K:ktdAB4UfJ0r.
Проанализируем этот код по частям:
04606203097500).При сканировании DataMatrix на кассе или в документе алгоритм 1С вырезает из него 14-значный GTIN. Далее программа ищет этот GTIN в справочнике штрихкодов номенклатуры. Для сопоставления 14-значного GTIN с обычным 13-значным штрихкодом EAN-13 система отбрасывает лидирующий ноль. Таким образом, GTIN 04606203097500 превращается в EAN-13: 4606203097500.
Важнейшее правило: Чтобы 1С мгновенно находила товар по QR-коду (DataMatrix), в карточке номенклатуры в регистре «Штрихкоды номенклатуры» обязательно должен быть прописан стандартный штрихкод EAN-13, соответствующий GTIN этой пачки. Если этого штрихкода в карточке нет, система не сможет связать марку с товаром.
Рассмотрим логику работы сопоставления на уровне кода:
// Упрощенный пример алгоритма поиска номенклатуры по коду маркировки
Функция НайтиТоварПоКодуМаркировки(СтрокаМаркировки)
// Выделяем GTIN (символы с 2 по 15)
GTIN = Сред(СтрокаМаркировки, 2, 14);
// Преобразуем GTIN в формат EAN-13 (убираем лидирующий ноль)
Если Лев(GTIN, 1) = "0" Тогда
ШтрихкодПоиска = Сред(GTIN, 2);
Иначе
ШтрихкодПоиска = GTIN;
КонецЕсли;
// Ищем штрихкод в базе данных
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Номенклатура КАК Номенклатура,
| Штрихкоды.Характеристика КАК Характеристика
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
|ГДЕ
| Штрихкоды.Штрихкод = &Штрихкод";
Запрос.УстановитьПараметр("Штрихкод", ШтрихкодПоиска);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Номенклатура;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Крупные поставщики (например, Мегаполис) часто присылают в УПД продукцию в блоках (единица измерения «БЛК»), в то время как розничные магазины продают сигареты исключительно пачками (штуками). Это приводит к расхождению цен и количеств при автоматической загрузке.
Существует два пути решения этой проблемы:
Важный нюанс агрегации: Если поставщик передал в накладной только коды блоков, то при нажатии кнопки «Проверить поступившую табачную продукцию» программа 1С отправляет запрос в ГИС МТ для получения кодов маркировки всех пачек, входящих в эти блоки (так называемая виртуальная разупаковка). Если этот запрос завершается ошибкой (например, HTTP 500), то 1С не получит индивидуальные коды пачек, и продать их по отдельности на кассе станет невозможно, так как кодов не будет в локальной базе данных.
Если в документе поступления или в обычной форме нового чека сигареты распознаются, а в Рабочем месте кассира (РМК) сканер выдает ошибку, проанализируем настройки оборудования.
РМК предъявляет жесткие требования к чтению спецсимволов внутри DataMatrix (таких как разделитель групп данных GS, он же FNC1). Если сканер штрихкодов настроен в режиме эмуляции клавиатуры, он считывает марку как единую текстовую строку, «проглатывая» управляющие символы. Обычные документы могут обработать такую упрощенную строку, но модуль проверки маркировки в РМК её отклонит.
Как исправить: Переведите сканер штрихкодов в режим эмуляции COM-порта (USB-OTG / USB-POS). Установите соответствующий драйвер в 1С («1С:Сканеры штрихкода (COM)») и настройте порт. Только в режиме эмуляции COM-порта сканер корректно передает структуру маркированных кодов, что гарантирует стабильную работу РМК при продаже.
Чтобы табачная продукция без проблем принималась и продавалась, проверьте выполнение следующих условий:
ШтрихкодУпаковки заполнены).