Как реализовать продажу маркированной продукции по ФФД 1.2 в 1С 7.7 для ККТ Штрих-М

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

Переход на ФФД 1.2 существенно изменил порядок работы с маркированным товаром. В отличие от версий 1.05 и 1.1, где передача данных была упрощенной, ФФД 1.2 требует обязательной онлайн-проверки кода маркировки (КМ) через фискальный накопитель. Рассмотрим пошагово, как реализовать этот процесс в среде 1С 7.7.

Подготовка данных и проверка КМ

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

Для каждой марки необходимо выполнить процедуру предварительной проверки. Одной из частых проблем является ошибка «Неразрешенные реквизиты» при повторных вызовах. Решается она принудительной очисткой свойства TLVDataHEX перед каждым вызовом метода проверки.


// Пример подготовки и проверки марки
КМ = СтрЗаменить(ДанныеСканнера, "<0x1D>", Симв(29));
FR.BarCode = КМ;
FR.ItemStatus = 1; // 1 - реализация, 3 - возврат
FR.CheckItemMode = 0; // Полная проверка
FR.TLVDataHEX = ""; // ОБЯЗАТЕЛЬНО для предотвращения ошибки параметров
FR.FNCheckItemBarcode(); 

Принятие марки и формирование позиции чека

После успешной проверки (статус 15 означает положительный результат) необходимо зафиксировать выбор в ФН. После этого можно приступать к формированию самого чека. Важно правильно заполнить признаки способа и предмета расчета.

Для ФФД 1.2 обязательными стали теги 1212 (признак предмета расчета) и 2108 (мера количества). Для штучного товара без акциза признак предмета расчета обычно равен 31, а признак способа расчета — 4.


// Принятие кода в ККТ
FR.FNAcceptMarkingCode();

// Формирование позиции
FR.StringForPrinting = "Наименование товара";
FR.Quantity = 1;
FR.Price = Цена;
FR.PaymentTypeSign = 4;   // Полный расчет
FR.PaymentItemSign = 31;  // Маркированный безакцизный товар
FR.MeasureUnit = 0;       // Штучный товар
FR.FNOperation();

// Привязка марки к позиции чека
FR.BarCode = КМ;
FR.FNSendItemBarcode();

Настройка ККТ для печати тегов

Чтобы в бумажном чеке корректно отображались признаки маркировки (буква [М] и статус проверки), необходимо настроить внутренние параметры фискального регистратора через таблицу 17 (в драйвере Штрих-М):

Важные рекомендации и предостережения

  1. Работа с сессией: Некоторые разработчики предпочитают подключаться к ККТ при старте системы и держать порт открытым, другие — подключаться непосредственно перед печатью чека. Оба варианта допустимы, но при разрыве связи всегда проверяйте код возврата ResultCode.
  2. Алкогольная продукция: На текущий момент закон не обязывает передавать коды маркировки алкоголя (в формате ЕГАИС) в тег 1162, так как они не входят в систему «Честный ЗНАК». Достаточно учета в УТМ ЕГАИС.
  3. Обновление драйверов: Рекомендуется использовать драйвер версии 5.16 и выше. В старых версиях (4.x) многие методы ФФД 1.2 могут отсутствовать или работать некорректно.
  4. Обработка ошибок: Всегда анализируйте ответ KMServerCheckingStatus. Если код проверки не прошел, выводите соответствующее сообщение кассиру, чтобы он мог принять решение об исключении товара из чека до его закрытия методом FNCloseCheckEx.

Соблюдение этого алгоритма позволит вам успешно интегрировать работу с маркировкой в конфигурацию на 1С 7.7, обеспечив корректную передачу данных в систему «Честный ЗНАК» через ОФД.

← На главную