Как подключить и настроить онлайн-кассу Штрих-М-01Ф в 1С 7.7?

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

Переход на применение контрольно-кассовой техники по требованиям 54-ФЗ вызвал множество вопросов у пользователей и разработчиков конфигураций на платформе 1С:Предприятие 7.7. Рассмотрим подробно, как подключить фискальный регистратор Штрих-М-01Ф к 1С 7.7, какой драйвер использовать, как настроить сетевую печать и что необходимо доработать в обработках обслуживания.

Выбор драйвера: DrvFR.dll или smDrvFR1CLib20.dll

Проанализируем доступные компоненты от производителя ККТ «Штрих-М»:

  1. Библиотека smDrvFR1CLib20.dll разработана по стандарту «1С:Совместимо» в рамках Библиотеки подключаемого оборудования (БПО) исключительно для платформы 1С 8. В среде 1С 7.7 архитектура торгового оборудования принципиально отличается, поэтому данная компонента напрямую не поддерживается.
  2. Классический COM-драйвер DrvFR.dll (входит в дистрибутив «Тест драйвера ККТ», стабильная версия — DrvFR 4.13 и выше). Это проверенное решение для 1С 7.7. Инициализация объекта в программном коде выполняется стандартным вызовом:
    
    Попытка
        ДрайверККМ = СоздатьОбъект("AddIn.DrvFR");
    Исключение
        Сообщить("Не удалось загрузить внешнюю компоненту DrvFR.dll!", "!");
    КонецПопытки;
    

Назначение файлов описания торгового оборудования (.efd)

При настройке оборудования в каталоге DB\ExtForms\Equip\ используются текстовые файлы с расширением .efd. Выясним причину, по которой в списке отсутствует модель Штрих-М-01Ф: на момент выхода типовых конфигураций 1С 7.7 онлайн-касс нового образца не существовало.

Файлы .efd служат лишь текстовыми описателями для диалоговых форм торгового оборудования. Отсутствие явного пункта «Штрих-М-01Ф» не является блокирующей проблемой. Для подключения можно использовать два варианта:

  1. Выбрать в настройках торгового оборудования совместимую базовую модель линейки (например, «Штрих-ФР-К» или «Штрих-Элвес-ФР-К»), так как протокол взаимодействия драйвера с кассой сохраняет преемственность.
  2. Открыть файл fr_shtr.efd обычным текстовым редактором и вручную добавить строку с наименованием «Штрих-М-01Ф» в список моделей.

Отправка фискальных данных в ОФД и налоговую

Важно понимать разделение зон ответственности между учетной системой и кассовым аппаратом:

  1. Задача 1С 7.7: передать состав чека (номенклатуру, цены, количество, ставки НДС, реквизиты покупателя и признак способа расчета) в драйвер кассы и дать команду фискализации.
  2. Задача ККТ: фискальный регистратор «Штрих-М-01Ф» самостоятельно формирует фискальный признак документа на установленном фискальном накопителе (ФН) и напрямую передает данные оператору фискальных данных (ОФД).

Следовательно, учетная система 1С 7.7 не занимается отправкой чеков в налоговую или ОФД. Однако для успешной отправки чеков кассой необходимо предварительно через утилиту «Тест драйвера ККТ» настроить сетевые параметры связи (IP-адрес, маску, шлюз, DNS) и параметры подключения к серверу вашего ОФД (адрес хоста и порт).

Доработка типовой обработки обслуживания (fr_elves.ert / fr_shtr.ert)

Штатные обработки из старых релизов конфигураций (например, «Торговля и Склад 7.7», релиз 9.2) «из коробки» работать с онлайн-кассой по 54-ФЗ не смогут. В старых алгоритмах отсутствуют обязательные теги форматов фискальных документов (ФФД). Попытка пробить чек по старым методам приведет к ошибкам фискализации.

Разберем по шагам, какие изменения необходимо внести в модуль обработки:

  1. Передача тегов ФФД: перед печатью и закрытием чека в драйвер необходимо передавать теги (система налогообложения, признак предмета расчета, признак способа расчета, данные покупателя). В драйвере DrvFR для этого используются специализированные свойства и методы:
    
    // Пример передачи тега через интерфейс DrvFR
    ДрайверККМ.TagNumber = 1055; // Применяемая система налогообложения
    ДрайверККМ.TagType = 1;     // Тип реквизита (байт)
    ДрайверККМ.TagValueInt = 1;  // Код СНО (например, ОСН)
    ДрайверККМ.FNSendTag();
    
  2. Методы регистрации позиций: проверьте вызовы методов печати строк. Для корректной фиксации ставок НДС и признаков позиций в онлайн-кассах используются обновленные методы драйвера (например, FNOpenCheck, FNCheckSubTotal, FNCloseCheckEx).

Сетевое подключение по TCP/IP

Аппарат «Штрих-М-01Ф» оснащен сетевым интерфейсом Ethernet, что позволяет подключать его без дополнительных аппаратных COM-переходников и без покупки устаревшего лицензионного «Сервера ФР». Драйвер ККТ поддерживает работу через прямое TCP-сокет соединение.

Рассмотрим правила организации сетевой печати чеков:

  1. Настройка порта: по умолчанию сокетное подключение драйвера к кассе осуществляется по порту 7778. В параметрах драйвера выбирается тип подключения «TCP сокет», указывается статический IP-адрес кассы и порт.
  2. Монопольный доступ к сокету: сетевая плата кассы не поддерживает одновременные сессии от нескольких клиентов. Если с одним аппаратом работают несколько рабочих мест или сеансов терминального сервера, программный код 1С обязан строго придерживаться сессионной модели:
    
    // Подключение перед пробитием
    ДрайверККМ.ConnectionType = 6; // TCP-сокет
    ДрайверККМ.IPAddress = "192.168.1.150";
    ДрайверККМ.TCPPort = 7778;
    ДрайверККМ.Timeout = 3000;
    
    Если ДрайверККМ.Connect() = 0 Тогда
        // Печать фискального чека
        // ...
        // Обязательное отключение для освобождения сокета другим клиентам
        ДрайверККМ.Disconnect();
    Иначе
        Сообщить("Касса занята или недоступна по сети!", "!");
    КонецЕсли;
    

Альтернативный вариант: печать через локальный HTTP-сервис

Если доработка старых типовых обработок 1С 7.7 под сложные требования ФФД (включая работу с маркировкой «Честный ЗНАК») вызывает затруднения, разберем альтернативный архитектурный подход. Вместо прямого взаимодействия через COM-объект DrvFR.dll на компьютере разворачивается локальный кассовый микросервер.

В этом случае платформа 1С 7.7 формирует текстовую структуру с данными чека и отправляет ее локальной службе через системный HTTP-клиент:


Http = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
Http.Open("POST", "http://127.0.0.1:5000/print_check", 0);
Http.SetRequestHeader("Content-Type", "application/json; charset=utf-8");
Http.Send(ТекстЗапросаJSON);

Если Http.Status = 200 Тогда
    Сообщить("Чек успешно отправлен на печать.");
Иначе
    Сообщить("Ошибка печати чека: " + Http.ResponseText, "!");
КонецЕсли;

Такой подход полностью снимает проблемы блокировок сокетов и обновления драйверов внутри устаревшей среды 1С 7.7, перенося логику работы с актуальными требованиями закона на сторону промежуточного сервиса.

← На главную