Как правильно передавать данные маркировки в ККТ при интеграции через БПО?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При работе с маркированными товарами через БПО (Библиотеку подключаемого оборудования) у разработчиков часто возникают вопросы о том, как правильно заполнять структуру ДанныеКодаТоварнойНоменклатуры, нужно ли передавать все поля и как обрабатывать позиции с количеством больше единицы. Давайте разберем эти нюансы по порядку.

Основные принципы передачи данных маркировки

Первое, что важно усвоить: при продаже маркированного товара через ККТ, работающую по стандарту ФФД 1.2, необходимо обеспечивать поэкземплярный учет. Это означает, что даже если в корзине покупателя находится несколько единиц одного и того же товара, каждая единица должна быть отражена в чеке отдельной строкой.

Золотое правило: всегда устанавливайте Количество = 1 для каждой строки, содержащей код маркировки. Попытка передать количество больше единицы при заполненных данных маркировки приведет к ошибке драйвера или некорректной фискализации чека.

Обязательны ли поля КиЗ, GTIN и Серийный номер?

Хотя в документации БПО эти поля могут быть помечены как «необязательные», на практике для маркируемого товара они становятся критически важными. Разберем их роль:

  1. КиЗ (Контрольный идентификационный знак): используется для товаров легкой промышленности и других категорий, где предусмотрен специальный идентификатор.
  2. GTIN (Глобальный идентификатор торговой единицы): международный код, идентифицирующий товар.
  3. Серийный номер: уникальный идентификатор конкретного экземпляра товара.

Если ваша ККТ и версия драйвера поддерживают «сырые» данные, возможно, не потребуется вручную парсить код, однако современные конфигурации 1С стремятся передавать уже разобранные поля. Важно помнить, что наличие лицензии «Маркировка» в самой ККТ — это обязательное условие. Без актуальной прошивки и лицензии аппарат просто не примет эти данные, даже если вы их корректно передадите из 1С.

Как правильно разобрать код DataMatrix?

Существует распространенное заблуждение, что GTIN всегда находится «со 2-го по 16-й символ». Это не так. Код маркировки — это сложная структура стандарта GS1 DataMatrix, содержащая идентификаторы применения (AI) и специальные разделители GS (Group Separator).

Рассмотрим структуру подробнее:

Попытки «резать» строку по индексам символов неизбежно приведут к ошибкам, так как из-за разделителей длина полей плавает. Используйте специализированные методы парсинга, которые учитывают идентификаторы применения (AI). Не забывайте, что GTIN не всегда совпадает с привычным EAN-13: иногда для маркировки остатков система «Честный ЗНАК» генерирует уникальные префиксы, которые требуют отдельной обработки в справочнике номенклатуры.

Пример заполнения данных в 1С

При заполнении строки табличной части документа реализации или чека, используйте следующий подход для заполнения объекта СтрокаПозицииЧека:


// Пример заполнения структуры маркировки
СтрокаПозицииЧека.ДанныеКодаТоварнойНоменклатуры.ТипМаркировки = ТипМаркировки;
СтрокаПозицииЧека.ДанныеКодаТоварнойНоменклатуры.КонтрольныйИдентификационныйЗнак = КиЗ;
СтрокаПозицииЧека.ДанныеКодаТоварнойНоменклатуры.ГлобальныйИдентификаторТорговойЕдиницы = GTIN;
СтрокаПозицииЧека.ДанныеКодаТоварнойНоменклатуры.СерийныйНомер = СерийныйНомер;
СтрокаПозицииЧека.Количество = 1;

Помните, что для обеспечения бесперебойной работы необходимо:

  1. Обновить прошивку ККТ до последней версии.
  2. Убедиться, что на фискальном накопителе активирована поддержка ФФД 1.2.
  3. Использовать актуальную библиотеку БПО, которая умеет правильно транслировать данные в драйвер устройства.

Если вы столкнулись с тем, что код не считывается, первым делом проверьте, не потерялись ли спецсимволы (FNC1, GS) при передаче данных из сканера в 1С. В 90% случаев проблема кроется в некорректной настройке сканера штрихкодов, который «отбрасывает» управляющие символы при считывании DataMatrix.

← На главную