Как получить коды маркировки (DataMatrix) проданных товаров в 1С:Розница

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

При работе с маркированными товарами (обувь, одежда, табак) в программе 1С:Розница пользователи часто сталкиваются с проблемой: товар успешно продан через РМК, данные ушли в «Честный Знак», но при попытке выгрузить отчет для поставщика выясняется, что в самом документе Чек ККМ табличная часть с кодами маркировки кажется пустой или содержит неполные данные. Разберем подробно, где физически хранятся эти коды и как их извлечь для формирования отчетности.

Где искать коды маркировки в базе данных 1С

Для начала проанализируем ситуацию: почему в табличной части «Коды маркировки» документа Чек ККМ зачастую ничего нет? В типовых конфигурациях 1С, начиная с версий 2.3 и выше, архитектура хранения данных оптимизирована. Полный код DataMatrix (включая криптохвост) занимает много места, поэтому программа часто записывает только идентификаторы, необходимые для связи со справочниками.

Рассмотрим основные места хранения:

  1. Справочник «Штрихкоды упаковок и товаров»: Это основное хранилище. При сканировании марки в РМК создается запись в этом справочнике. Однако стоит учесть, что структура хранения здесь разбита на поля. Поле SerialNumber часто содержит серийный номер (блок 21), а поле GTIN — международный код товара (блок 01).
  2. Регистр сведений «Статусы кодов маркировки»: Здесь фиксируется жизненный цикл кода. Когда чек пробивается, статус кода меняется на «Продан». Именно через этот регистр можно отследить связь между конкретным документом продажи и маркой.
  3. Объект «Фискальная операция»: Это наиболее надежный источник. В момент печати чека 1С передает драйверу кассы полную строку кода. Эта информация сохраняется в связанном с чеком объекте фискальной операции в формате XML.

Способ 1: Извлечение кода из фискальных данных (XML)

Если нам нужно получить именно тот код, который ушел в ОФД и «Честный Знак», мы можем обратиться к истории фискальных операций. Посмотрим, как это сделать вручную в интерфейсе программы:

  1. Перейдем в список документов Чек ККМ или Отчет о розничных продажах.
  2. Откроем нужный документ и нажмем кнопку Отчеты — Фискальные операции.
  3. В открывшемся окне найдем запись о пробитии чека и нажмем «Изменить» (или просто откроем просмотр).
  4. Перейдем на вкладку XML.

Проанализируем содержимое XML. Нас интересуют теги, отвечающие за маркировку. В зависимости от версии ФФД (1.05, 1.1 или 1.2), это могут быть теги 1162 или 2108. Внутри этих тегов в кодировке Base64 или в виде шестнадцатеричной строки хранится код маркировки. Программное чтение этого узла позволит выгрузить точные данные, которые были физически считаны сканером в момент продажи.

Способ 2: Сбор кода из компонентов справочника

Выясним причину, по которой 1С разделяет код на части. Согласно стандарту GS1, код DataMatrix состоит из групп данных (Application Identifiers — AI). Посмотрим на пример структуры для обуви:

01 (GTIN) + 21 (Серийный номер) + 91 (Ключ) + 92 (Криптохвост)

В справочнике ШтрихкодыУпаковокТоваров 1С обычно хранит:

Чтобы собрать полный DataMatrix для поставщика, мы можем использовать следующий алгоритм в коде:


// Пример логики сборки кода
СтрокаКода = "01" + СокрЛП(СсылкаНаШтрихкод.GTIN) + "21" + СокрЛП(СсылкаНаШтрихкод.SerialNumber);
// Если в системе настроено хранение криптохвоста:
Если ЗначениеЗаполнено(СсылкаНаШтрихкод.ЗначениеШтрихкода) Тогда
    Результат = СсылкаНаШтрихкод.ЗначениеШтрихкода;
Иначе
    Результат = СтрокаКода;
КонецЕсли;

Важно помнить, что для отчетности перед поставщиком или для возврата товара поставщику чаще всего достаточно связки GTIN + SerialNumber, так как криптохвост (блок 92) требуется только для проверки подлинности при выбытии на кассе и не участвует в обороте между контрагентами в ЭДО.

Способ 3: Программное получение через регистры

Для массовой выгрузки проданных кодов за период проанализируем ситуацию через запрос к базе данных. Нам понадобится связь между документом ЧекККМ и справочником штрихкодов. Рассмотрим пример запроса, который можно использовать в консоли отчетов или внешней обработке:


ВЫБРАТЬ
    ЧекККМТовары.Ссылка КАК ДокументПродажи,
    ЧекККМТовары.Номенклатура,
    ШтрихкодыУпаковок.ЗначениеШтрихкода КАК ПолныйКод,
    ШтрихкодыУпаковок.СерийныйНомер КАК Серия
ИЗ
    Документ.ЧекККМ.Товары КАК ЧекККМТовары
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ШтрихкодыУпаковокТоваров КАК ШтрихкодыУпаковок
    ПО ЧекККМТовары.КлючСвязи = ШтрихкодыУпаковок.КлючСвязи // Уточните поле связи для вашей версии
ГДЕ
    ЧекККМТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца

Обратите внимание, что в последних версиях 1С:Розница связь может быть реализована через промежуточный регистр сведений СтатусыКодовМаркировкиИСМП. Проанализируем этот регистр: в нем хранятся измерения Организация, Номенклатура и ШтрихкодУпаковки, а также ресурс Статус (например, «Выбыл»).

Почему коды могут не записываться в документ?

Если вы обнаружили, что в Чек ККМ данные отсутствуют даже на уровне технических полей, проверим настройки системы:

  1. Зайдем в раздел Администрирование — Настройки ИС МП (Маркировка).
  2. Проверим, включена ли опция «Вести учет маркируемых товаров».
  3. Проанализируем настройки РМК: если установлена «упрощенная» передача кодов, 1С может отправлять код сразу в драйвер ККТ, не создавая записи в базе данных для экономии ресурсов. В этом случае единственным способом получения кода остается разбор XML из фискальных данных, описанный в Способе 1.

Рекомендации по выгрузке для поставщика

Если поставщик требует список проданных марок, а в 1С данные хранятся разрозненно, рассмотрим альтернативный вариант через Личный Кабинет (ЛК) «Честного Знака»:

1. Выгрузка из ЛК Честный Знак: В разделе «Коды маркировки» можно установить фильтр по статусу «Выбыл» и дате совершения операции. Система позволит выгрузить CSV или Excel файл со всеми кодами, которые ваша организация вывела из оборота через розничные продажи.

2. Личный кабинет ОФД: Операторы фискальных данных хранят полную копию чека, включая тег 1162. Почти все современные ОФД предоставляют услугу выгрузки отчета по маркировке, где коды представлены в чистом текстовом виде.

Подводя итог, отметим: несмотря на то, что интерфейс 1С:Розница не всегда отображает полный DataMatrix в привычном виде в документе продажи, данные физически присутствуют в системе либо в справочнике ШтрихкодыУпаковокТоваров, либо в XML-логах фискальных операций. Выбор метода зависит от того, нужен ли вам полный код с криптохвостом или достаточно идентификаторов GTIN и серийного номера.

← На главную