Как перейти на драйвер Штрих-М 4.17/5.17 для работы с маркировкой ФФД 1.2 в 1С 7.7?

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

С введением формата фискальных данных (ФФД) 1.2 владельцы кассовой техники Штрих-М столкнулись с необходимостью обновления драйверов и пересмотра программного кода в 1С 7.7. Старые методы, такие как Sale() и ReturnSale(), которые годами верой и правдой служили в версии 4.15, в новых реалиях становятся неактуальными или вовсе перестают работать при продаже маркированного товара. В качестве базового примера для адаптации кода можно взять обработку печати чеков для кассы Штрих Онлайн, где реализованы основные принципы взаимодействия. Разберем подробно, какие изменения необходимо внести в конфигурацию, чтобы обеспечить корректную передачу данных в систему «Честный знак».

Переход на универсальный метод FNOperation

Проанализируем основное изменение: в драйверах версии 5.16 и выше для работы с ФФД 1.2 разработчики рекомендуют отказаться от специализированных методов продажи в пользу универсальной команды FNOperation(). Это связано с тем, что новый формат требует более сложной структуры данных, которую старые методы не всегда могут корректно транслировать в фискальный накопитель.

Выясним, как теперь определять тип операции. За это отвечает свойство CheckType. Рассмотрим соответствие значений:

  1. CheckType = 1 — Приход (обычная продажа товара).
  2. CheckType = 2 — Возврат прихода.
  3. CheckType = 3 — Расход.
  4. CheckType = 4 — Возврат расхода.

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


// Старый подход (драйвер 4.15)
Объект.Quantity = Колво;
Объект.Price = Цена;
Объект.Sale();

// Новый подход (драйвер 5.17, ФФД 1.2)
Объект.CheckType = 1; // Приход
Объект.Quantity = Колво;
Объект.Price = Цена;
Объект.Tax1 = 0; // Настройка НДС
Объект.FNOperation();

Алгоритм работы с маркировкой (Проверка КМ)

Главное отличие ФФД 1.2 — это необходимость предварительной проверки кода маркировки (КМ) перед тем, как позиция будет добавлена в чек. Теперь это не просто запись текстового тега 1162, а интерактивный процесс взаимодействия кассы, фискального накопителя и серверов «Честного знака». В современных условиях крайне важно правильно реализовать разрешительный режим на кассах, который требует онлайн-проверки статуса товара.

Рассмотрим по шагам правильную последовательность действий в коде 1С 7.7:

  1. Инициализация проверки: Перед продажей товара мы должны передать код маркировки в ККТ. Для этого заполняем свойство MarkingCode (полная строка кода) и устанавливаем ItemStatus = 1 (товар реализуется).
  2. Запуск проверки: Вызываем метод FNCheckItemBarcode(). В этот момент касса связывается с ОФД для получения статуса кода. Для обеспечения отказоустойчивости при отсутствии связи полезно настроить локальный модуль Честный знак для 1С 7.7.
  3. Получение результата: Проверяем свойство ItemBarcodeCheckResult. Если результат положительный, мы можем продолжать.
  4. Подтверждение реализации: Вызываем метод FNAcceptMarkingCode(). Это критически важный шаг, который подтверждает, что данный код будет использован в текущем чеке.
  5. Оформление позиции: Только после этого заполняем данные о цене, количестве и вызываем FNOperation().

Проанализируем пример реализации данного алгоритма:


// 1. Передаем код маркировки
Объект.MarkingCode = СокрЛП(ТекМаркировка);
Объект.ItemStatus = 1;

// 2. Запускаем проверку в ФН
Если Объект.FNCheckItemBarcode() <> 0 Тогда
    Предупреждение("Ошибка проверки кода: " + Объект.ResultDescription);
    Возврат;
КонецЕсли;

// 3. Ждем ответа и подтверждаем (упрощенно)
// Здесь можно добавить паузу или проверку результата через ItemBarcodeCheckResult
Объект.FNAcceptMarkingCode();

// 4. Добавляем позицию в чек
Объект.CheckType = 1;
Объект.Quantity = 1;
Объект.Price = ТекЦена;
Объект.FNOperation();

Работа с мерой количества (Тег 2106)

В ФФД 1.2 обязательным реквизитом стала мера количества предмета расчета. Если раньше мы могли просто передать количество, то теперь касса требует четкого указания: штуки это, килограммы, метры или иные единицы. В драйвере Штрих-М за это отвечает свойство MeasureUnit.

Посмотрим на основные значения MeasureUnit:

Если это свойство не заполнить, драйвер может вернуть ошибку «Неверный формат данных» при вызове метода закрытия чека или операции по позиции.

Настройка таймаутов и каналов связи

Важно понимать, что проверка маркировки — это сетевая операция. Касса отправляет запрос в ОФД, который перенаправляет его в систему маркировки. Это занимает время. При работе из 1С 7.7 стандартные таймауты ожидания ответа от драйвера (обычно 150-300 мс) могут оказаться недостаточными.

Разберем, что нужно сделать в настройках:

Контроль результата: признаки [M+], [M] и [M-]

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

Важный момент: Для достижения статуса [M+] необходимо использовать именно связку FNCheckItemBarcode + FNAcceptMarkingCode + FNOperation. Использование записи напрямую в таблицы более не является легитимным.

Подводя итог, переход на драйвер 5.17 и выше требует от программиста 1С 7.7 не просто обновления файлов DrvrFr.dll, но и существенной переработки логики формирования чека. Основной упор следует сделать на замену методов продажи и внедрение цикла проверки кодов маркировки.

← На главную