При самостоятельной интеграции контрольно-кассовой техники (ККТ) «Штрих-М» или доработке нетиповых конфигураций 1С разработчики часто сталкиваются с ошибкой инициализации параметров связи. При выполнении метода проверки связи ТестУстройства() драйвер возвращает ошибку вида: «FFFFFFF7h, Некорректное значение параметра "Speed"», несмотря на то, что в тесте драйвера касса определяется корректно и связь по COM-порту установлена.
Разберем детально, почему возникает данная ошибка, как правильно передавать параметры подключения во внешнюю компоненту стандарта 1С и какие подводные камни существуют при настройке оборудования.
Проанализируем механизм работы внешней компоненты драйвера «Штрих-М» (например, AddIn.SMDrvFR1C20). В отличие от драйверов других производителей (в частности, «АТОЛ», где используется имя BaudRate), компонента «Штрих-М» строго чувствительна к наименованию параметров и регистру символов:
Baudrate (со строчной буквой r), а не BaudRate и не Speed.Посмотрим на пример правильной инициализации и передачи настроек подключения к фискальному регистратору в коде 1С:
// Устанавливаем параметры подключения для внешней компоненты Штрих-М
ОбъектДрайвера.УстановитьПараметр("Port", Параметры.Порт);
ОбъектДрайвера.УстановитьПараметр("AdminPassword", Параметры.ПарольУстройства);
ОбъектДрайвера.УстановитьПараметр("UserPassword", Параметры.ПарольПользователя);
ОбъектДрайвера.УстановитьПараметр("ConnectionType", 0); // 0 - локальное подключение по COM
ОбъектДрайвера.УстановитьПараметр("ProtocolType", 0);
// Важно: имя параметра скорости пишется именно как "Baudrate"
ОбъектДрайвера.УстановитьПараметр("Baudrate", Параметры.Скорость);
ОбъектДрайвера.УстановитьПараметр("Timeout", Параметры.Таймаут);
ОбъектДрайвера.УстановитьПараметр("Model", Параметры.Модель);
// Выполняем проверку связи с устройством
РезультатТеста = "";
АктивированДемоРежим = Ложь;
Ответ = ОбъектДрайвера.ТестУстройства(РезультатТеста, АктивированДемоРежим);
Если НЕ Ответ Тогда
ВызватьИсключение "Ошибка проверки связи с ККТ: " + РезультатТеста;
КонецЕсли;
Чтобы избежать опечаток в именах свойств и узнать точный регистр написания, воспользуемся штатным методом внешней компоненты ПолучитьПараметры(). Разберем, как получить и проанализировать структуру поддерживаемых настроек:
ПараметрыXML = "";
ОбъектДрайвера.ПолучитьПараметры(ПараметрыXML);
// Выводим полученную XML-структуру в окно сообщений или анализируем через ЧтениеXML
Сообщить(ПараметрыXML);
Метод вернет XML-описание, в котором будут перечислены все допустимые имена атрибутов, их типы данных, значения по умолчанию и списки выбора. Это позволяет точно сопоставить параметры вашей конфигурации с ожиданиями драйвера.
Рассмотрим другие важные факторы, которые могут приводить к сбоям при передаче параметров скорости:
"115 200"). Для исключения ошибок строкового формата всегда форматируйте числовые значения с отключенной группировкой разрядов: Формат(Параметры.Скорость, "ЧГ=0") либо передавайте значение типа Число.1cv8.exe или 1cv8c.exe).AddIn.DrvFR (без стандартизированной 1С-обертки), обращение к параметрам происходит через свойства объекта: Объект.ComNumber, Объект.BaudRate (в прямом интерфейсе скорость может задаваться индексом от 0 до 6, где 6 соответствует 115200) и метод Объект.Connect().