При автоматизации розничной торговли и складов перед разработчиком часто возникает задача подключить весы с печатью этикеток к нетиповой конфигурации на платформе «1С:Предприятие 8.3». Одной из самых популярных, но в то же время капризных в настройке линеек оборудования являются весы CAS CL5000J и CAS CL3000. Столкнувшись с интеграцией этих устройств, можно обнаружить множество платных драйверов, ограничения демонстрационных версий и проблемы совместимости с 64-битной платформой 1С.
В этой статье мы подробно разберем, как решить проблемы с выгрузкой товаров в весы CAS, проанализируем доступные драйверы (включая решения от АТОЛ и официальные компоненты CAS) и рассмотрим альтернативные полностью бесплатные способы интеграции, которые избавят вас от необходимости покупать дорогие ключи защиты.
Часто разработчики скачивают официальный драйвер с сайта дистрибьютора, пытаются выполнить тестовую выгрузку товаров из 1С и сразу же сталкиваются с ошибками. Нам заявляют, что «поддержка 1С-овских драйверов — это к 1С», и мы остаемся один на один с проблемой. Давайте проанализируем основные причины сбоев при загрузке данных:
011 и разрешить запись всех передаваемых параметров.Для интеграции весов можно использовать официальный COM-объект. Однако здесь разработчики сталкиваются с серьезным препятствием: старые библиотеки (такие как CLVsd.dll или Cas_AD_AP_DB_EM.dll) разработаны исключительно под 32-разрядную архитектуру. Если ваш сервер 1С или клиентское приложение запущены под 64-битной платформой, операционная система просто не сможет зарегистрировать и вызвать эти библиотеки напрямую.
Рассмотрим, как обойти это ограничение. Мы можем написать внешнюю «прокладку» — небольшое 32-битное консольное приложение (например, на C# или Delphi), которое будет принимать параметры выгрузки от 1С, взаимодействовать с 32-битным COM-объектом драйвера весов и возвращать результат.
В коде 1С запуск такой утилиты будет выглядеть следующим образом:
ПутьКПрокладке = "C:\CAS_Utility\CasSender.exe";
ПараметрыЗапуска = "/ip 192.168.1.105 /file C:\temp\goods.txt";
ЗапуститьПриложение(ПутьКПрокладке + " " + ПараметрыЗапуска, , Истина, КодВозврата);
Если КодВозврата <> 0 Тогда
ВызватьИсключение "Ошибка при загрузке данных в весы CAS! Код ошибки: " + КодВозврата;
КонецЕсли;
Если же вы используете 32-битную версию платформы 1С, то вызов COM-объекта можно выполнить напрямую в коде конфигурации. Обязательно убедитесь, что на компьютере установлен физический USB-ключ защиты HASP с правильной маркировкой (для торговых весов с чекопечатью требуется маркировка YBYIK, в то время как ключи EMXEG предназначены только для простых фасовочных весов без печати этикеток).
Драйвер весов с чекопечатью от компании АТОЛ — это мощное и функциональное решение («полный фарш»), которое отлично интегрируется со стандартной Библиотекой Подключаемого Оборудования (БПО) 1С. Однако у этого варианта есть существенные минусы, о которых предупреждают опытные специалисты.
В актуальных версиях драйверов АТОЛ (10-я версия) используется жесткая служба лицензирования. Лицензия привязывается к аппаратной конфигурации компьютера (Hardware ID). При работе в виртуальных средах (Hyper-V, VMware), где сетевые карты и ID процессоров могут динамически меняться, или после крупных обновлений операционной системы Windows лицензия АТОЛ регулярно «слетает». Если весы работают на складе или в торговой точке без постоянного доступа к интернету, повторная активация лицензии превратится в головную боль для системных администраторов.
Если вы хотите избежать покупки дорогостоящих драйверов и HASP-ключей, обратите внимание на официальное бесплатное программное обеспечение от производителя — утилиту CL-Works (или ее современную версию CL-Works Pro).
Давайте разберем по шагам схему интеграции 1С с этой программой:
Посмотрим на пример кода 1С, который формирует текстовый файл для последующей загрузки через CL-Works:
Процедура ВыгрузитьТоварыВФайлДляCAS(ПутьКФайлу, ТаблицаТоваров) Экспорт
ТекстовыйДокумент = Новый ТекстовыйДокумент;
// Формируем строки файла в формате: PLU;Код;Наименование;Цена;СрокГодности;Отдел
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
СтрокаВыгрузки = Строка(СтрокаТовара.PLU) + ";" +
Строка(СтрокаТовара.Код) + ";" +
СтрокаТовара.Наименование + ";" +
Формат(СтрокаТовара.Цена, "ЧЦ=15; ЧДЦ=2; ЧГ=0") + ";" +
Строка(СтрокаТовара.СрокГодности) + ";" +
"1"; // По умолчанию 1-й отдел
ТекстовыйДокумент.ДобавитьСтроку(СтрокаВыгрузки);
КонецЦикла;
Попытка
ТекстовыйДокумент.Записать(ПутьКФайлу, КодировкаТекста.ANSI);
Исключение
ЗаписьЖурналаРегистрации("Выгрузка в весы CAS", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение "Не удалось записать файл выгрузки для весов!";
КонецПопытки;
КонецПроцедуры
Этот способ абсолютно легален, стабилен, не зависит от разрядности платформы 1С (так как мы работаем просто с текстовыми файлами) и не требует дополнительных финансовых затрат.
Для самых требовательных разработчиков существует продвинутый способ интеграции — прямой сетевой обмен. Весы CAS серий CL5000J работают по открытому сетевому протоколу. По умолчанию они принимают пакеты данных по протоколу UDP на порт 22304.
Используя встроенные механизмы работы с сокетами в 1С (или простые кроссплатформенные консольные утилиты отправки сетевых пакетов), мы можем формировать байтовые посылки напрямую из кода 1С и слать их в сокет весов. Это решение идеально подходит для работы под управлением операционных систем Linux (на которых часто крутятся современные серверы 1С) и полностью исключает любые промежуточные драйверы и библиотеки dll.
Какое бы решение вы ни выбрали — коммерческий драйвер АТОЛ, официальный COM-объект или бесплатную связку с CL-Works — детальное понимание структуры данных весов CAS и их внутренних настроек позволит вам быстро запустить оборудование в эксплуатацию.