Как обновить интерфейс ККТ Штрих-М до ревизии 3000 в 1С:Управление торговлей 10.3

Программист 1С v8.3 (Обычные формы) Управленческий учет Торговля и дистрибуция
← На главную

При работе с контрольно-кассовой техникой (ККТ) «Штрих-М» в устаревших конфигурациях на обычных формах, таких как 1С:Управление торговлей 10.3, специалисты часто сталкиваются с ситуацией, когда даже при установке свежих драйверов система продолжает использовать старую ревизию интерфейса (например, 2005). Это становится критической проблемой при необходимости перехода на ФФД 1.2 или при использовании новых требований маркировки товаров. Рассмотрим подробно, как перевести оборудование на ревизию 3000 и выше.

Различие между версией API и ревизией интерфейса

Прежде всего, проанализируем важный технический нюанс: версия API драйвера (например, 2.05 или 2.06) не является эквивалентом ревизии интерфейса. Ревизия 3000 — это стандарт взаимодействия между 1С и драйвером, который накладывает строгие требования к структуре передаваемых данных в формате XML. Чтобы 1С увидела ККТ как устройство с поддержкой 3000-й ревизии, недостаточно просто обновить прошивку или установить Драйвер ККТ в операционной системе. Требуется комплексное обновление внешней компоненты внутри самой обработки обслуживания 1С.

Шаг 1: Подготовка необходимых компонентов

Для успешной модернизации нам потребуется набор инструментов, совместимых с новыми требованиями. Разберем, что именно нужно подготовить:

  1. Обработка обслуживания: Нам необходима версия обработки не ниже 2.6. Несмотря на то что УТ 10.3 находится на ограниченной поддержке, актуальные обработки можно найти на портале ИТС или в составе последних релизов БСП.
  2. Актуальный драйвер: Рекомендуется использовать драйвер «Штрих-М» версии 4.15 (сборка 837 и выше) или современную ветку 5.16/5.17.
  3. Компонента для 1С: Нам понадобится файл shtrih-m_32.zip, который обычно располагается по пути установки драйвера: C:\Program Files (x86)\SHTRIH-M\DrvFR 4.15\Bin\1C\.

Шаг 2: Замена компоненты в обработке обслуживания

Процесс обновления интерфейса заключается в замене бинарных данных внутри макета обработки. Рассмотрим эту процедуру пошагово:

Откроем обработку обслуживания (версия 2.6) в конфигураторе. Найдем макет, в котором хранится драйвер (обычно это двоичные данные). Нам необходимо импортировать туда файл shtrih-m_32.zip, взятый из папки установленного драйвера. Это обеспечит использование Native-компоненты вместо устаревшей COM-модели.

Далее проанализируем программный код подключения компоненты. В модуле объекта обработки найдем процедуру инициализации. Нам нужно убедиться, что подключение происходит с типом Native и используется правильный идентификатор класса.

Пример корректировки кода:


// Указываем тип Native для новой компоненты
Результат = ПодключитьВнешнююКомпоненту(Адрес, "ИнтеграционнаяКомпонента", ТипВнешнейКомпоненты.Native);

// Создаем объект драйвера с правильным именем класса
Если Результат Тогда
    Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.SMDrvFR1C3");
КонецЕсли;

Шаг 3: Исправление ошибок формирования XML (VATAmount и VATRate)

После обновления компоненты вы можете столкнуться с тем, что касса определяется как ревизия 3002, но при попытке пробития чека возникает ошибка: ffffff8h no xml attribute VATAmount. Выясним причину: ревизия 3000 требует обязательного наличия атрибутов налога в XML-пакете, даже если сумма налога равна нулю (например, для ОСНО с 0% НДС или для спецрежимов без НДС). Типовая логика 1С часто опускает пустые теги, что недопустимо для нового интерфейса.

Нам необходимо доработать механизм формирования XML в общем модуле (например, МенеджерОборудованияВызовСервера) или непосредственно в обработке обслуживания. Рассмотрим пример кода, который гарантирует передачу атрибута VATAmount:


// Принудительная запись атрибута налога
ЗаписьXML.ЗаписатьАтрибут("VATRate", XMLСтрока(ЗначениеСтавкаНДС)); 

Если ТекущаяПозиция.Свойство("СуммаНДС") И НЕ ПустаяСтрока(ТекущаяПозиция.СуммаНДС) Тогда
    ЗаписьXML.ЗаписатьАтрибут("VATAmount", XMLСтрока(ТекущаяПозиция.СуммаНДС));
Иначе
    // Если сумма не заполнена, передаем явный ноль
    ЗаписьXML.ЗаписатьАтрибут("VATAmount", XMLСтрока(0));
КонецЕсли;

Важный момент: Аналогичную проверку следует провести для всех обязательных тегов ФФД 1.2, таких как PaymentMethod (признак способа расчета) и PaymentSubject (признак предмета расчета). Они должны передаваться числовыми кодами.

Шаг 4: Устранение ошибки DeviceID

В некоторых случаях при использовании ревизии 3000 драйвер может возвращать ошибку отсутствия deviceID. Это связано с тем, что новые компоненты поддерживают работу с несколькими логическими устройствами через один экземпляр драйвера. Посмотрим на ситуацию: если ваша конфигурация старая, она может не передавать идентификатор устройства в методы ОткрытьЧек или СформироватьЧек. В этом случае необходимо проверить, заполняется ли параметр ИдентификаторУстройства при вызове команд к оборудованию.

Шаг 5: Проверка прошивки ККТ

Проанализируем состояние прошивки. Если на устройстве установлена прошивка начала 2020 года (например, от 13.02.2020), она может некорректно обрабатывать команды ревизии 3000, даже если драйвер в 1С настроен верно. Для стабильной работы, особенно с маркированными товарами, рекомендуется обновить прошивку ККТ до актуальной (не ниже конца 2021 года). В новых прошивках реализована полная поддержка таблиц, необходимых для работы через Native-компоненту SMDrvFR1C3.

Итоги и рекомендации

Подводя итог, можно сказать, что переход на ревизию 3000 в 1С 8.3 (обычные формы) требует не просто обновления ПО, а ручной интеграции актуальной компоненты в макеты обработок. Основные этапы: использование обработки 2.6, замена макета на файл из папки Bin\1C драйвера, переключение на Native подключение и обязательная доработка формирования XML для передачи "нулевых" атрибутов налогов. После выполнения этих шагов в параметрах оборудования в 1С версия ревизии должна измениться на 3002 или выше, что позволит работать в соответствии с современными требованиями законодательства.

← На главную