Как исправить передачу кода типа маркировки и ошибку Отсутствует при продаже в 1С:УТ 10.3

Программист 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе с маркируемой продукцией (табак, обувь, одежда) в устаревших или типовых конфигурациях 1С, таких как Управление торговлей 10.3, пользователи часто сталкиваются с двумя критическими проблемами. Первая — некорректное формирование тега 1162 (код типа маркировки), когда система по старинке передает специфические байты вместо универсального префикса. Вторая — загадочное сообщение «Отсутствует» при сканировании маркированного товара на кассе. В этой статье мы подробно разберем механику работы системы с маркировкой и выясним, как привести работу программы в соответствие с актуальными требованиями закона.

Разбираем проблему тега 1162 и префикса 44 4D

Рассмотрим ситуацию с передачей кода маркировки в ККТ. Согласно актуальным требованиям (особенно в рамках ФФД 1.2), формат передачи данных в чеке претерпел изменения. Раньше для каждой товарной группы использовался свой идентификатор: например, для обуви это были байты 15 20, а для табачных изделий — 00 05. Однако современный стандарт предполагает использование универсального кода типа маркировки 44 4D (что соответствует шестнадцатеричному представлению символов «DM» — DataMatrix).

Проанализируем, почему типовые релизы 1С, такие как УТ 10.3.60, могут продолжать передавать старые значения. Проблема кроется в том, что логика формирования структуры тега жестко прописана в коде конфигурации или в используемой обработке обслуживания ККТ. Если программа видит, что товар относится к категории «Обувь», она принудительно подставляет старый префикс. Чтобы исправить это в кастомных решениях или при использовании самописных обработок, мы можем перехватить структуру тега перед отправкой на драйвер ККТ.

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


// Пример подмены типа маркировки в структуре чека
Если СтрНайти(ПараметрыЧека.ТипМаркировки, "15 20") > 0 
   Или СтрНайти(ПараметрыЧека.ТипМаркировки, "00 05") > 0 Тогда
    // Заменяем на универсальный код 44 4D для ФФД 1.2
    ПараметрыЧека.ТипМаркировки = "44 4D"; 
КонецЕсли;

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

Выясняем причину неинформативной ошибки Отсутствует

Теперь разберем вторую проблему: при сканировании маркированной пачки сигарет или пары обуви система выдает сообщение «Отсутствует». Это крайне неудачный вариант локализации ошибки в типовых решениях, который вводит пользователей в заблуждение. Проанализируем, что происходит «под капотом» 1С в этот момент.

В конфигурации УТ 10.3 реализован механизм упрощенного учета марок. Алгоритм работы следующий:

  1. Сканируется DataMatrix.
  2. Из него программно выделяется GTIN (14 символов).
  3. Система отсекает ведущие нули и получает стандартный EAN-13.
  4. По этому Штрих-коду в справочнике Номенклатура ищется товар.
  5. При первой продаже этой конкретной марки (кода упаковки) система сохраняет её в справочник КодыУпаковок (или аналогичный регистр).

Ошибка «Отсутствует» возникает ровно в тот момент, когда вы пытаетесь продать эту же марку второй раз. Система находит этот код в базе, видит, что он уже помечен как «проданный» (или просто существует в базе, хотя при первом сканировании его там быть не должно), и блокирует добавление в чек. Сообщение «Отсутствует» в данном контексте означает: «Данная марка отсутствует в свободном остатке, так как была реализована ранее».

Как бороться с дублями марок и ошибками поиска

Если вы столкнулись с такой ситуацией на тестовом стенде или в результате ошибки кассира, решение заключается в очистке локального кэша марок. Рассмотрим, как это сделать программно или через интерфейс:

Для исправления ситуации необходимо найти справочник, где хранятся считанные коды (в УТ 10.3 это часто справочник КодыУпаковок или специализированный регистр сведений). Найдите в нем запись, соответствующую вашему DataMatrix, и удалите её. После этого система позволит повторно добавить товар в чек, так как для неё эта марка снова станет «новой».

Проанализируем также ситуацию, когда товар вообще не ищется по DataMatrix. Часто это происходит из-за некорректной настройки сканера (он может не передавать управляющие символы или префиксы). В типовых формах за обработку сканирования отвечает процедура ВнешнееСобытие. Чтобы система успешно находила товар, убедитесь, что в коде реализован разбор марки:


// Фрагмент разбора DataMatrix для поиска номенклатуры
Если МаркировкаПродукции.ЭтоКодМаркировки(ДанныеСканера) Тогда
    GTIN = МаркировкаПродукции.ПолучитьGTINИзМарки(ДанныеСканера);
    // Преобразование GTIN в EAN13 для поиска в базе
    ШтрихКодПоиска = СокрЛП(Сред(GTIN, 2, 13)); 
    НайденнаяСсылка = Справочники.Номенклатура.НайтиПоШтрихкоду(ШтрихКодПоиска);
КонецЕсли;

Практические советы по настройке

Подведем итог и составим план действий для администратора или программиста 1С:

  1. Обновите платформу и драйверы: Даже если конфигурация старая, драйвер ККТ должен быть последней версии (например, АТОЛ 10.10+ или аналогичный для Штрих-М). Это снимет часть проблем с формированием тега 1162.
  2. Проверьте справочник марок: Если кассиры жалуются на сообщение «Отсутствует», проверьте, не пытаются ли они продать один и тот же код дважды. Помните, что в рознице обязанность фиксировать продажи наступила раньше, чем обязанность принимать накладные по ЭДО, поэтому база может наполняться марками «по факту» продажи.
  3. Доработка интерфейса: Если у вас есть возможность править код, замените текст ошибки «Отсутствует» на более внятный: "Код маркировки %1 уже был продан ранее!". Это сэкономит массу времени техподдержке и пользователям.
  4. Настройка сканера: Убедитесь, что сканер работает в режиме эмуляции клавиатуры или COM-порта корректно и передает полный код маркировки со всеми спецсимволами (GS1), иначе 1С не сможет корректно выделить GTIN.

Следуя этим рекомендациям, мы сможем обеспечить стабильную работу маркировки даже на таких «заслуженных» конфигурациях, как УТ 10.3, минимизируя простои на кассовой зоне.

← На главную