В процессе интеграции торгового оборудования, в частности весов компании CAS, разработчики часто сталкиваются с трудностями при подключении библиотек типа CAScentre_DLL_AllScale.dll. Основная ошибка заключается в попытке использовать метод ПодключитьВнешнююКомпоненту, который предназначен для Native API, тогда как библиотека является COM-сервером на базе .NET Framework. Давайте разберем по шагам, как правильно настроить окружение и вызвать методы драйвера из 1С.
Поскольку библиотека написана на .NET Framework, 1С не сможет просто «увидеть» её без предварительной регистрации в системе. Стандартная команда regsvr32 здесь не поможет, так как она предназначена для классических COM-объектов. Нам потребуется утилита RegAsm.exe, входящая в состав установленного .NET Framework.
.NET Framework 2.0 (или требуемая версия, указанная в документации производителя)./codebase, который привязывает COM-объект к конкретному пути расположения файла:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe "Путь_К_Вашей_Библиотеке\CAScentre_DLL_AllScale.dll" /codebase
После этого система должна выдать сообщение о том, что типы успешно зарегистрированы. Если вы используете 64-битную Windows и 32-битный клиент 1С, регистрацию нужно проводить именно через 32-битный RegAsm (как показано в примере выше), чтобы обеспечить корректную видимость объекта для 1С.
Практика показывает, что библиотека CAS часто работает в связке с фоновым приложением (например, SendWeightValueToWinApp.exe). Оно необходимо для инициализации связи с весами через COM-порт и передачи данных в буфер.
Теперь, когда библиотека зарегистрирована, мы можем создать объект драйвера непосредственно в коде 1С. Рассмотрим, как это сделать в управляемой форме на клиенте.
&НаКлиенте
Перем Драйвер;
// Функция для инициализации подключения
Функция ПодключитьДрайвер()
Попытка
// Создаем COM-объект по его ProgID
Драйвер = Новый COMОбъект("CAScentre_DLL_AllScale.GetWeight");
// Подключаемся к весам по COM-порту
Порт = 4;
Скорость = 9600;
ТипВесов = 0;
Драйвер.ConnectRS(Порт, Скорость, ТипВесов);
Сообщить("Успешное подключение к весам!");
Возврат Истина;
Исключение
Сообщить("Ошибка подключения: " + ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецФункции
После того как соединение установлено, вы можете обращаться к методам драйвера. Для получения текущего веса необходимо сначала вызвать метод обновления данных, а затем считать свойство веса.
&НаКлиенте
Функция ПолучитьВес()
Попытка
// Метод Update опрашивает весы и обновляет свойства объекта
Драйвер.Update();
// Получаем значение веса в килограммах
ТекущийВес = Драйвер.CurrentWeightKg();
Возврат ТекущийВес;
Исключение
Сообщить("Ошибка получения данных: " + ОписаниеОшибки());
Возврат 0;
КонецПопытки;
КонецФункции
Если при попытке создания объекта возникает ошибка "Не найден указанный модуль", проверьте следующие моменты:
RegAsm.ConnectRS или Update) точно соответствуют документации вашего драйвера, так как они зависят от конкретной версии библиотеки CAScentre_DLL_AllScale.Используя этот алгоритм, вы сможете успешно интегрировать весы CAS в вашу конфигурацию 1С, избежав путаницы с типами компонент и настройкой системного окружения. Для подключения весов без регистрации COM-объектов подойдёт нативная компонента для весов с протоколом CAS-AD.