При интеграции современного торгового оборудования с устаревшими конфигурациями «1С:Предприятие» (например, «1С:Общепит 2.5» или старыми версиями «1С:Управление торговлей 10.3», работающими на обычных формах) разработчики часто сталкиваются с техническими трудностями. Одна из самых распространенных проблем — невозможность открыть кассовую смену из интерфейса программы при использовании старых обработок обслуживания, таких как ShtrihMFiscalPrinters_v2.epf.
В этой статье мы подробно разберем, почему возникает данная проблема, рассмотрим физику взаимодействия торгового оборудования с платформой «1С» под требования 54-ФЗ и изучим несколько практических способов решения: от простых ручных манипуляций до изменения программного кода и прямого управления драйвером ККТ через COM-объект.
Для того чтобы понять суть проблемы, проанализируем разницу в законодательстве и технологиях до и после введения 54-ФЗ:
ОткрытьЧек (OpenCheck) драйвера. Именно под эту логику и проектировалась обработка ShtrihMFiscalPrinters_v2.epf.Поскольку в старой обработке обслуживания ShtrihMFiscalPrinters_v2.epf просто отсутствует программный вызов команды открытия смены, ККТ выдает ошибку, а пользователь не может начать работу. Ниже мы разберем четыре эффективных метода решения этой задачи.
Если вам нужно запустить работу кассы «прямо сейчас», а времени на переписывание кода конфигурации нет, можно воспользоваться стандартной утилитой от производителя ККТ.
Разберем этот процесс по шагам:
Пуск -> ШТРИХ-М -> Тест драйвера ФР).Важно помнить: Этот метод является временным костылем, так как кассиру придется выполнять эти действия ежедневно при начале работы.
Если вы разрабатываете собственную доработку (например, рабочее место кассира или модуль расчета обедов для сотрудников по табельным номерам, как у автора темы), самым надежным решением будет прямое управление кассовым аппаратом через COM-объект драйвера AddIn.DrvFR.
Рассмотрим пример кода на встроенном языке «1С», который можно поместить в модуль вашей обработки перед вызовом процедуры печати чека:
// Инициализируем подключение к драйверу ККТ Штрих-М
Попытка
ПодключитьВнешнююКомпоненту("AddIn.DrvFR");
ФР = Новый COMОбъект("AddIn.DrvFR");
Исключение
Предупреждение("Не удалось загрузить драйвер ККТ Штрих-М! Проверьте установку локального драйвера.");
Возврат;
КонецПопытки;
// Устанавливаем параметры связи (в реальном коде параметры лучше считывать из настроек торгового оборудования)
ФР.Password = 30; // Пароль системного администратора по умолчанию для Штрих-М
// Подключаемся к физическому устройству
ФР.Connect();
Если ФР.ResultCode <> 0 Тогда
Сообщить("Ошибка подключения к ККТ: " + ФР.ResultCodeDescription);
Возврат;
КонецЕсли;
// Запрашиваем текущее состояние ККТ, чтобы проверить статус смены
ФР.GetECRStatus();
// Анализируем текущий режим работы кассы (свойство ECRMode)
// Режим 3 означает, что смена закрыта.
// Режим 2 означает, что смена открыта и длится менее 24 часов.
// Режим 4 означает, что смена превысила 24 часа (требуется Z-отчет).
Если ФР.ECRMode = 3 Тогда
Сообщить("Кассовая смена закрыта. Выполняем автоматическое открытие...");
// Вызываем команду открытия смены на фискальном накопителе
ФР.OpenSession();
Если ФР.ResultCode <> 0 Тогда
Сообщить("Не удалось открыть смену на ККТ! Код ошибки: " + ФР.ResultCode + " (" + ФР.ResultCodeDescription + ")");
Иначе
Сообщить("Кассовая смена успешно открыта программно!");
КонецЕсли;
ИначеЕсли ФР.ECRMode = 4 Тогда
Предупреждение("Смена превысила 24 часа! Сначала снимите Z-отчет с гашением.");
Иначе
Сообщить("Смена на ККТ уже открыта, можно продолжать продажи.");
КонецЕсли;
// Отключаемся от ККТ, чтобы освободить порт для других процессов
ФР.Disconnect();
Данный подход полностью решает проблему автоматизации. Перед каждой операцией продажи программа сама проверяет статус кассы и при необходимости открывает смену без участия человека.
Если вы хотите использовать типовой механизм работы с торговым оборудованием в старой конфигурации «1С», вам потребуется доработать используемую внешнюю обработку обслуживания.
Разберем этот процесс подробнее:
ShtrihMFiscalPrinters_v2.epf в режиме Конфигуратора «1С».AddIn.DrvFR1C на новую библиотеку драйвера AddIn.SMDrvFR1C (компонента smDrvFR1CLib.dll), которая поставляется вместе с современными драйверами «Штрих-М» версии 4.13–4.15.
Результат = Объект.Драйвер.ОткрытьСмену(Объект.ИДУстройства);
regsvr32 "C:\Program Files (x86)\SHTRIH-M\DrvFR 4.15\Bin\1C\smDrvFR1CLib.dll"
После такой модернизации старая конфигурация «1С» сможет полноценно взаимодействовать с онлайн-кассой по новым протоколам 54-ФЗ.
Этот способ является наиболее радикальным, но гарантирует стабильную работу в будущем. В современных конфигурациях «1С» механизмы работы с торговым оборудованием вынесены в отдельную подсистему — БПО.
Все обработки обслуживания для БПО содержат в своем названии префикс kkt (например, kktShtrihMFiscalPrinters.epf). При использовании этого механизма:
Если вы планируете долгосрочно использовать вашу конфигурацию «1С:Общепит 2.5», рассмотрите возможность интеграции элементов БПО или обновление конфигурации до актуальной редакции, где этот функционал поддерживается разработчиками по умолчанию.
Выбор конкретного решения зависит от ваших задач и квалификации:
OpenSession() (Способ 2). Это даст вам полный контроль над кассой.