При доработке конфигурации 1С:Управление нашей фирмой часто возникает задача программно определить, подлежит ли конкретная позиция номенклатуры обязательной маркировке (Честный ЗНАК). Рассмотрим подробнее, как менялась логика работы с маркированными товарами в последних релизах программы (начиная с редакции 3.0) и какие реквизиты следует анализировать в вашем коде.
Исторически в некоторых конфигурациях 1С признак маркировки мог определяться через свойства вида номенклатуры (например, через перечисление ОсобенностиУчетаНоменклатуры). Однако, проанализируем структуру 1С:УНФ: здесь такого реквизита у вида номенклатуры нет, хотя в системе предусмотрены множественные свойства номенклатуры.
В современных релизах (например, 3.0.13.292 и выше) структура метаданных справочника номенклатуры претерпела изменения. Разберем по шагам, что появилось нового:
ВидМаркировки — ссылается на перечисление ВидыМаркировки.ВидПродукцииГИСМТ (в интерфейсе часто отображается как Вид продукции ИС).Казалось бы, достаточно проверить реквизит ВидМаркировки. Но на практике разработчики сталкиваются с неожиданным поведением системы.
Выясним причину частой ошибки. При программном анализе карточки товара выясняется, что у реально маркируемой продукции реквизит ВидМаркировки может быть установлен в значение Не маркируется. Почему так происходит?
Дело в том, что в системе существует разделение учетной и фискальной логики. Обратим внимание на реквизит ПризнакПредметаРасчета (тип — перечисление ПризнакиПредметаРасчета). Пользователи часто устанавливают для него значение Товар маркируемый средством идентификации, имеющий код маркировки.
Важно понимать разницу:
ПризнакПредметаРасчета необходим кассовому модулю. Он сообщает ККМ, как правильно сформировать теги в чеке для передачи в ОФД при розничной продаже.Опираться в программном коде исключительно на фискальный ПризнакПредметаРасчета рискованно: товар может продаваться только оптом, и этот реквизит пользователь просто забудет заполнить.
Посмотрим на ситуацию шире. В 1С:УНФ признак того, что товар является маркируемым, задается не только в самой карточке номенклатуры, но и наследоваться от справочника Категории номенклатуры.
Если в категории (в разделе настроек «Маркировка ИС МП») заполнен реквизит Вид продукции ИС (например, «Обувная продукция»), то все товары внутри этой категории система автоматически считает маркируемыми.
Следовательно, правильная программная функция для проверки должна анализировать цепочку данных. Рассмотрим пример реализации такого алгоритма:
Функция ЭтоМаркируемыйТовар(СсылкаНаНоменклатуру) Экспорт
// Шаг 1. Проверяем саму карточку номенклатуры
Если ЗначениеЗаполнено(СсылкаНаНоменклатуру.ВидПродукцииГИСМТ) Тогда
Возврат Истина;
КонецЕсли;
// Шаг 2. Проверяем категорию номенклатуры
Категория = СсылкаНаНоменклатуру.КатегорияНоменклатуры;
Если ЗначениеЗаполнено(Категория) Тогда
// Обращаемся к реквизитам категории
// Имя реквизита может отличаться в зависимости от точного релиза,
// обычно это ВидПродукцииИС или аналогичный
Если ЗначениеЗаполнено(Категория.ВидПродукцииИС) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
// Опционально: можно добавить проверку фискального признака
// как запасной вариант, если учетные настройки не заполнены
Если СсылкаНаНоменклатуру.ПризнакПредметаРасчета = Перечисления.ПризнакиПредметаРасчета.ТоварМаркируемыйСредствомИдентификации Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Проанализируем дополнительные условия, при которых программная логика работы с марками может не сработать. Даже если вы корректно заполнили все реквизиты в номенклатуре и категории, система не будет запрашивать статусы кодов или открывать форму проверки марок, если отключены глобальные настройки. — поможет контроль сканирования и идентификация марок в 1С.
Всегда проверяйте константы и настройки в разделе «Администрирование» -> «Маркировка» -> «Интеграция с ИС МП». Для каждой товарной группы (обувь, табак, одежда) должна быть включена соответствующая опция.
Также, в новых версиях УНФ (включая механизмы строгого контроля при ЭДО в релизах 3.0.11+), система активно использует сопоставление кодов. Если вы программно обрабатываете сканирование, учитывайте, что система извлекает GTIN из считанного кода маркировки DataMatrix. — для этого есть обработка программного извлечения GTIN из DataMatrix. Если этот GTIN совпадает со стандартным штрихкодом EAN13, сохраненным в регистре штрихкодов номенклатуры, и для товара указан вид продукции ИС, товар однозначно идентифицируется системой как маркируемый.
Резюме: При программном определении маркируемости товара в 1С:УНФ не доверяйте одному лишь реквизиту ВидМаркировки. Проверяйте наличие заполненного вида продукции ИС (ГИС МТ) как в самой карточке номенклатуры, так и в её категории. — для этой задачи есть инструмент создания карточек в Национальном каталоге. Фискальные признаки используйте только для задач, связанных с пробитием чеков.