При обновлении парка кассового оборудования или переходе на новые требования законодательства (например, поддержку НДС 20% или ФФД 1.2 для маркировки) администраторы и программисты 1С часто сталкиваются с необходимостью замены старых драйверов ККТ на современные. Одной из таких современных библиотек является poscenter_drvkkt. В этой статье мы подробно разберем, как интегрировать эту компоненту в старые конфигурации, такие как «Управление торговлей 10.3», и почему простым переименованием объекта в коде проблему решить не удастся.
Рассмотрим типичную ситуацию: в старой версии 1С использовался драйвер SMDrvFR1C22 (традиционный COM-объект). После обновления прошивки кассы и установки драйвера версии 5.21 и выше, вы пытаетесь инициализировать новый объект:
Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.PoscenterDrvKKT1C");
Объект создается успешно, однако при первой же попытке вызвать привычный метод, например, Драйвер.ПолучитьНомерВерсии, система выдает ошибку «Метод объекта не обнаружен». Проанализируем причину: современные драйверы Poscenter и Штрих-М строятся на базе технологии Native API и соответствуют актуальному стандарту 1С «Требования к разработке драйверов подключаемого оборудования». В этом стандарте состав методов и их названия существенно отличаются от тех, что использовались в эпоху 1С 8.1 и ранней 8.2.
Если вам нужно запустить кассу «здесь и сейчас», а функционал версии драйвера в коде используется только для проверки связи, можно применить временное решение. Как показывает практика, старые обработки часто используют номер версии для логирования или условий инициализации. Мы можем заменить вызов метода на жесткое присвоение значения.
Найдем в обработке обслуживания строку:
мВерсияИзДрайвера = Драйвер.ПолучитьНомерВерсии;
И заменим ее на строковое значение:
мВерсияИзДрайвера = "5.21"; // Укажите реальную версию установленного драйвера
Однако стоит понимать, что это лишь маскировка проблемы. Если далее по коду вызываются методы печати чека или открытия смены старого образца, касса работать не будет.
Разберем, что именно изменилось в программном интерфейсе. Новая компонента poscenter_drvkkt требует иного подхода к управлению устройством. Вместо прямого обращения к низкоуровневым свойствам (порт, скорость), параметры передаются единым блоком в формате XML.
Для корректной работы, включая взаимодействие через веб-сервер, нам необходимо реализовать следующую последовательность действий в коде обработки:
ПодключитьВнешнююКомпоненту. Рекомендуется хранить компоненту в макете конфигурации, чтобы 1С могла сама выбрать нужную разрядность (x32 или x64).Драйвер.Порт = 1; теперь используется метод УстановитьПараметры(ПараметрыXML).СформироватьЧек, НапечататьОтчетБезГашения, НапечататьОтчетСГашением.Проанализируем пример формирования XML для параметров связи, который ожидает компонента:
ПараметрыСвязи =
"<Settings>
<Page Name=""Основные"">
<Parameter Name=""Port"" Value=""1"" />
<Parameter Name=""BaudRate"" Value=""115200"" />
</Page>
</Settings>";
Драйвер.УстановитьПараметры(ПараметрыСвязи);
Для конфигурации «Управление торговлей 10.3» существуют готовые пакеты обновлений, которые внедряют современные механизмы БПО (Библиотеки подключаемого оборудования) непосредственно в старую архитектуру. Это наиболее надежный путь, так как он обеспечивает:
Если ваша конфигурация сильно кастомизирована, попробуйте найти обновленную внешнюю обработку обслуживания (ShtrihMkkt.epf), которая уже переписана под стандарт Native API. В таких обработках обычно реализован «мост», который принимает команды в старом формате УТ 10.3 и транслирует их в новые методы компоненты poscenter_drvkkt.
Выясним, какие еще факторы могут влиять на работоспособность компоненты:
poscenter_drvkkt_win_32 как раз предназначена для такого случая.Подводя итог, можно сказать, что переход на poscenter_drvkkt в УТ 10.3 — задача трудоемкая, требующая либо правки кода обработки обслуживания, либо интеграции актуальных механизмов БПО. Использование «костылей» в коде допустимо только как временная мера для обхода простых проверок версии драйвера.