При интеграции современного торгового оборудования с устаревшими конфигурациями «1С:Предприятие» технические специалисты часто сталкиваются с ситуацией, когда физически драйвер в операционной системе установлен, но сама программа 1С «не видит» его в списке доступного оборудования. С такой проблемой часто сталкиваются пользователи весов Масса-К серии R с печатью этикеток при работе в конфигурации 1С:Розница редакции 2.0 (например, на старых релизах вроде 2.0.3.4).
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем внутренние механизмы Библиотеки подключаемого оборудования (БПО) и рассмотрим три практических способа решения: от правильной ручной упаковки драйвера до его программного вызова в обход стандартной БПО.
Разберем детально, почему стандартная установка драйвера от производителя в Windows не приводит к его автоматическому появлению в диалоговых окнах 1С:Розница 2.0. Причина кроется в архитектуре конфигурации и истории развития БПО:
Драйверы оборудования в режиме «1С:Предприятие» либо отсутствует вовсе, либо работает по устаревшим протоколам.MassaKDriverR1C_710.rar) напрямую в макеты конфигурации через Конфигуратор обречена на неудачу. Платформа 1С работает исключительно с zip-архивами определенной структуры и не умеет распаковывать формат rar «из коробки».manifest.xml. Этот файл сообщает платформе, какие именно dll-библиотеки предназначены для 32-битных (x86) и 64-битных (x64) клиентов, а также указывает программный идентификатор внешней компоненты.Ниже мы рассмотрим последовательные варианты решения этой проблемы в зависимости от ваших возможностей по изменению конфигурации.
Если вы работаете в обновленной версии конфигурации (например, перешли на Розницу 2.2 или обновили Розницу 2.0 до релиза, где уже присутствует полноценный справочник драйверов), но нужного драйвера все равно нет в предустановленном списке, мы можем добавить его вручную. Для этого необходимо правильно подготовить архив компоненты.
Проанализируем структуру правильного архива драйвера для БПО. Шаг за шагом выполним следующие действия:
MassaKDriverR1C.dll).manifest.xml. Вставьте в него xml-структуру, описывающую компоненту. Пример корректного манифеста для платформы:
<?xml version="1.0" encoding="UTF-8"?>
<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle">
<component os="Windows" cpu="x86" path="MassaKDriverR1C.dll" type="native" SharedBoundary="IConnection" />
</bundle>
MassaKDriverR1C.dll и созданный файл manifest.xml, нажмите правой кнопкой мыши и упакуйте их в **ZIP-архив** (использование RAR-архивов недопустимо!).Рассмотрим ситуацию, когда конфигурация «1С:Розница» является сильно доработанной (кастомизированной), обновить ее до версии 2.2 не представляется возможным, а встроенная БПО слишком стара и не поддерживает ручную загрузку драйверов через интерфейс. В этом случае программист может реализовать прямое подключение внешней компоненты через код.
Существует два основных программных механизма работы с компонентами весов «Масса-К»:
Это наиболее современный и стабильный метод, работающий непосредственно в сессии 1С без предварительной регистрации библиотек в операционной системе Windows. Разберем пример кода для подключения компоненты:
// Определим путь к файлу библиотеки на диске
ПутьКБиблиотеке = "C:\Program Files\MassaK\Drivers\MassaKDriverR1C.dll";
// Пытаемся подключить внешнюю компоненту
РезультатПодключения = ПодключитьВнешнююКомпоненту(ПутьКБиблиотеке, "MassaK", ТипВнешнейКомпоненты.Native);
Если РезультатПодключения Тогда
Попытка
// Создаем экземпляр объекта драйвера весов
ДрайверВесов = Новый("AddIn.MassaK.MassaKDriverR1C");
Сообщить("Драйвер Масса-К успешно подключен и готов к работе!");
Исключение
ВызватьИсключение "Не удалось инициализировать объект драйвера: " + ОписаниеОшибки();
КонецПопытки;
Иначе
Сообщить("Ошибка загрузки файла внешней компоненты. Проверьте путь к файлу!");
КонецЕсли;
Если используется старая библиотека, работающая по COM-технологии, алгоритм интеграции меняется. Сначала нам необходимо зарегистрировать библиотеку в реестре Windows. Откройте командную строку (cmd) от имени администратора и выполните команду:
regsvr32 "C:\Program Files\MassaK\Drivers\TerminalMassaK.dll"
После успешной регистрации в операционной системе, мы можем обращаться к драйверу напрямую из программного кода 1С:
Попытка
// Подключаем зарегистрированную в системе компоненту
ПодключитьВнешнююКомпоненту("MassaKDriverR1C");
ДрайверВесов = Новый("AddIn.MassaKDriverR1C");
Сообщить("COM-драйвер весов Масса-К успешно инициализирован.");
Исключение
Сообщить("Ошибка подключения драйвера по технологии COM: " + ОписаниеОшибки());
КонецПопытки;
Если вы не хотите вносить изменения в программный код конфигурации 1С, рассмотрим альтернативный путь, предусмотренный производителем весов. Компания «МАССА-К» поставляет готовый пакет под названием «МАССА-К: Унифицированная обработка 1С».
Этот пакет содержит внешние обработки с расширением .epf (или устаревшие .epo для старого механизма торгового оборудования). Схема работы с ними выглядит следующим образом:
.epf.Проанализируем ключевые особенности физического подключения весов Масса-К серии R, без учета которых даже правильно установленный драйвер не сможет установить связь с устройством:
MassaKDriverR1C (версии 7.1.0 и выше) внутренняя прошивка весового терминала серии R должна быть не ниже версии 6.21. При использовании старой прошивки вы будете регулярно получать ошибки прерывания связи или некорректного формата пакета данных. При необходимости обновите прошивку весов с помощью утилиты от производителя.Таким образом, мы детально разобрали все возможные варианты подключения весов Масса-К серии R в условиях устаревшего релиза конфигурации «1С:Розница». Выберите наиболее подходящий для вашей ситуации метод — от настройки БПО до прямого вызова внешней компоненты через программный код — и приступайте к настройке оборудования.