Как подключить весы с чекопечатью CAS к 1С 8.3: выбираем драйвер и исправляем ошибки выгрузки

Программист 1С v8.3 (Обычные формы) Управленческий учет Торговля и дистрибуция
← На главную

При автоматизации розничной торговли и складов перед разработчиком часто возникает задача подключить весы с печатью этикеток к нетиповой конфигурации на платформе «1С:Предприятие 8.3». Одной из самых популярных, но в то же время капризных в настройке линеек оборудования являются весы CAS CL5000J и CAS CL3000. Столкнувшись с интеграцией этих устройств, можно обнаружить множество платных драйверов, ограничения демонстрационных версий и проблемы совместимости с 64-битной платформой 1С.

В этой статье мы подробно разберем, как решить проблемы с выгрузкой товаров в весы CAS, проанализируем доступные драйверы (включая решения от АТОЛ и официальные компоненты CAS) и рассмотрим альтернативные полностью бесплатные способы интеграции, которые избавят вас от необходимости покупать дорогие ключи защиты.

Почему возникает ошибка при загрузке товаров в демо-режиме?

Часто разработчики скачивают официальный драйвер с сайта дистрибьютора, пытаются выполнить тестовую выгрузку товаров из 1С и сразу же сталкиваются с ошибками. Нам заявляют, что «поддержка 1С-овских драйверов — это к 1С», и мы остаемся один на один с проблемой. Давайте проанализируем основные причины сбоев при загрузке данных:

  1. Ограничение демонстрационного режима. Большинство коммерческих драйверов (как от АТОЛ, так и от CAS) в демо-режиме имеют жесткое программное ограничение: они позволяют успешно выгружать только те товары, код PLU (или SKU) которых не превышает 10. Если в вашей таблице выгрузки из 1С присутствует хотя бы один товар с кодом 11 и выше, весь пакет данных отвергается весами с ошибкой структуры или записи. Для тестирования всегда формируйте выборку товаров с PLU от 1 до 5.
  2. Рассогласование отделов (Departments). В логике весов CAS жестко зашито разделение товаров по отделам (номера от 1 до 99). Если в настройках самих весов активен, например, только отдел №1, а в XML-файле или через COM-объект из 1С передается другой номер отдела (или это поле вовсе не заполнено), весы заблокируют запись.
  3. Префиксы штрихкодов. Настройки префикса штучного и весового товара в 1С (параметры БПО) должны строго соответствовать настройкам, запрограммированным в весах. Если в весах через сервисное меню задан префикс «21», а 1С пытается передать структуру кода с префиксом «22», возникнет ошибка валидации данных драйвером.
  4. Блокировка полей в сервисном меню. Физическая ошибка записи в весы может происходить из-за попытки передать необязательные поля (например, подробный состав товара, срок годности или текстовое описание), если редактирование этих полей заблокировано во внутренней памяти весов. Чтобы решить эту проблему, необходимо зайти в сервисное меню весов под паролем 011 и разрешить запись всех передаваемых параметров.

Вариант №1: Официальный COM-драйвер CAS и проблема 64-битной платформы

Для интеграции весов можно использовать официальный 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 предназначены только для простых фасовочных весов без печати этикеток).

Вариант №2: Использование Frontol Driver Unit (драйверы АТОЛ)

Драйвер весов с чекопечатью от компании АТОЛ — это мощное и функциональное решение («полный фарш»), которое отлично интегрируется со стандартной Библиотекой Подключаемого Оборудования (БПО) 1С. Однако у этого варианта есть существенные минусы, о которых предупреждают опытные специалисты.

В актуальных версиях драйверов АТОЛ (10-я версия) используется жесткая служба лицензирования. Лицензия привязывается к аппаратной конфигурации компьютера (Hardware ID). При работе в виртуальных средах (Hyper-V, VMware), где сетевые карты и ID процессоров могут динамически меняться, или после крупных обновлений операционной системы Windows лицензия АТОЛ регулярно «слетает». Если весы работают на складе или в торговой точке без постоянного доступа к интернету, повторная активация лицензии превратится в головную боль для системных администраторов.

Вариант №3: Полностью бесплатный способ через утилиту CL-Works

Если вы хотите избежать покупки дорогостоящих драйверов и HASP-ключей, обратите внимание на официальное бесплатное программное обеспечение от производителя — утилиту CL-Works (или ее современную версию CL-Works Pro).

Давайте разберем по шагам схему интеграции 1С с этой программой:

  1. Мы пишем в 1С процедуру, которая выгружает список товаров из нашей базы в текстовый файл формата CSV (или TXT с разделителями) в структурированном виде, который понимает программа CL-Works.
  2. В каталоге установки CL-Works мы находим консольную утилиту для автоматического импорта файлов.
  3. Из кода 1С с помощью встроенного языка мы инициируем запуск этой утилиты в фоновом режиме, передавая ей путь к нашему созданному файлу и IP-адрес весов в локальной сети.

Посмотрим на пример кода 1С, который формирует текстовый файл для последующей загрузки через CL-Works:


Процедура ВыгрузитьТоварыВФайлДляCAS(ПутьКФайлу, ТаблицаТоваров) Экспорт
    
    ТекстовыйДокумент = Новый ТекстовыйДокумент;
    
    // Формируем строки файла в формате: PLU;Код;Наименование;Цена;СрокГодности;Отдел
    Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
        
        СтрокаВыгрузки = Строка(СтрокаТовара.PLU) + ";" +
                         Строка(СтрокаТовара.Код) + ";" +
                         СтрокаТовара.Наименование + ";" +
                         Формат(СтрокаТовара.Цена, "ЧЦ=15; ЧДЦ=2; ЧГ=0") + ";" +
                         Строка(СтрокаТовара.СрокГодности) + ";" +
                         "1"; // По умолчанию 1-й отдел
                         
        ТекстовыйДокумент.ДобавитьСтроку(СтрокаВыгрузки);
        
    КонецЦикла;
    
    Попытка
        ТекстовыйДокумент.Записать(ПутьКФайлу, КодировкаТекста.ANSI);
    Исключение
        ЗаписьЖурналаРегистрации("Выгрузка в весы CAS", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        ВызватьИсключение "Не удалось записать файл выгрузки для весов!";
    КонецПопытки;
    
КонецПроцедуры

Этот способ абсолютно легален, стабилен, не зависит от разрядности платформы 1С (так как мы работаем просто с текстовыми файлами) и не требует дополнительных финансовых затрат.

Вариант №4: Прямой сетевой обмен по TCP/IP (UDP) без внешних компонент

Для самых требовательных разработчиков существует продвинутый способ интеграции — прямой сетевой обмен. Весы CAS серий CL5000J работают по открытому сетевому протоколу. По умолчанию они принимают пакеты данных по протоколу UDP на порт 22304.

Используя встроенные механизмы работы с сокетами в 1С (или простые кроссплатформенные консольные утилиты отправки сетевых пакетов), мы можем формировать байтовые посылки напрямую из кода 1С и слать их в сокет весов. Это решение идеально подходит для работы под управлением операционных систем Linux (на которых часто крутятся современные серверы 1С) и полностью исключает любые промежуточные драйверы и библиотеки dll.

Какое бы решение вы ни выбрали — коммерческий драйвер АТОЛ, официальный COM-объект или бесплатную связку с CL-Works — детальное понимание структуры данных весов CAS и их внутренних настроек позволит вам быстро запустить оборудование в эксплуатацию.

← На главную