При модернизации кассового узла и переходе со старых фискальных регистраторов с ЭКЛЗ (таких как ШТРИХ-М-ФР-К) на современную онлайн-технику с фискальным накопителем (например, Ритейл-01Ф) часто возникает вопрос: сможет ли прежняя внешняя обработка обслуживания пробивать чеки без переписывания исходного кода? Разберем подробно технические аспекты работы драйвера, архитектурные изменения и нюансы взаимодействия 1С с кассовой техникой по требованиям 54-ФЗ.
Аппаратная линейка «Ритейл» разработана и функционирует на базе протоколов и решений компании «Штрих-М». Для управления обеими моделями используется общий драйвер («Штрих-М: Драйвер ККТ») и низкоуровневая COM-библиотека DrvFR.dll (программный идентификатор AddIn.DrvFR).
Рассмотрим фрагмент стандартной инициализации объекта драйвера и цикла печати чека, который часто встречается в самописных обработках:
Попытка
ЗагрузитьВнешнююКомпоненту("DrvFR.dll");
ФР = Новый("AddIn.DrvFR");
Исключение
Предупреждение(ОписаниеОшибки());
Возврат;
КонецПопытки;
// Регистрация товарных позиций
Для Каждого стр Из Объект.Товары Цикл
ФР.Password = Пароль;
ФР.StringForPrinting = Строка(стр.Наименование);
ФР.Price = стр.Цена;
ФР.Quantity = стр.Количество;
ФР.Department = 1;
ФР.Tax1 = 1;
ФР.Tax2 = 0;
ФР.Tax3 = 0;
ФР.Tax4 = 0;
ФР.Sale();
КонецЦикла;
С точки зрения вызова методов драйвер сохраняет базовую обратную совместимость. Метод Sale() физически присутствует в новых версиях драйвера и будет выполнен. Однако между старым фискальным регистратором и онлайн-ККТ есть существенные концептуальные различия, из-за которых обработка «вслепую» без минимальной адаптации может работать с ошибками или нарушать законодательство.
Проанализируем основные факторы, влияющие на работоспособность кода:
FNBeginOpenSession или OpenSession), а ее длительность строго ограничена 24 часами. Если смена превысит 24 часа, драйвер заблокирует вызов Sale() ошибкой переполнения смены.- признак способа расчета (тег 1214, например, полный расчет);
- признак предмета расчета (тег 1212, например, товар или услуга);
- ставка НДС (тег 1199);
- реквизиты кассира и его ИНН (теги 1021 и 1203).
Если код вызывает только методSale() без предварительной инициализации этих свойств, аппарат либо подставит значения по умолчанию из таблиц кассы, либо вернет ошибку некорректных параметров. Для полноценной онлайн-фискализации производитель рекомендует использовать расширенный метод регистрации FNOperation().
Tax1...Tax4. В онлайн-кассах таблицы драйвера сопоставляют налоги напрямую со ставками 20%, 10%, 0% или «Без НДС». Если номера налогов в таблицах аппарата «Ритейл-01Ф» не совпадут со старыми секциями, чек будет пробит с неверной ставкой или операция завершится отказом.Sale() в принципе не сможет передать криптографический код маркировки и проверить его статус. Для этого требуются специализированные команды протокола ФН.DrvFR.dll является 32-разрядной (x86). При работе в 64-битном клиенте «1С:Предприятие» метод ЗагрузитьВнешнююКомпоненту("DrvFR.dll") вызовет системное исключение. Вызовы должны выполняться строго из 32-разрядного сеанса платформы.Выясним, какие пути перехода доступны разработчику, и разберем каждый из них:
Если бизнес-логика жестко завязана на нестандартную обработку и нет возможности переписать модуль с нуля, выполним следующие шаги:
Tax1–Tax4).Такой подход позволит кассе пробивать базовые чеки, однако он ограничен при работе с маркировкой и сложными форматами расчетов (авансы, кредиты).
Рассмотрим наиболее надежный и перспективный вариант. Типовые конфигурации 1С (УТ 10.3 последних версий, УТ 11, Розница, ERP, БП) давно перешли с низкоуровневых команд драйвера на механизм БПО (Библиотека подключаемого оборудования).
Преимущества перехода:
Итог: Онлайн-ККТ «Ритейл-01Ф» полностью аппаратно и программно совместима с драйвером «Штрих-М». Базовые команды вроде Sale() сработают, но для корректного соблюдения законодательства 54-ФЗ потребуется актуализировать версию драйвера, настроить передачу чеков в ОФД и доработать передачу обязательных фискальных реквизитов либо перевести кассу на работу через типовые механизмы БПО.