Как настроить выгрузку дополнительных текстовых сообщений в весы CAS LP-15 из 1С 7.7?

Программист 1С v7.7 Торговля и дистрибуция
← На главную

При автоматизации торговых точек и фасовочных зон на базе платформы 1С:Предприятие 7.7 часто возникает задача передачи расширенной информации о товаре (состав, срок годности, условия хранения, сертификаты) на весы с печатью этикеток, такие как CAS LP-15. Весы данной модели поддерживают загрузку текстовых блоков (до 8 строк по 50 символов в каждой), однако при разработке механизма выгрузки разработчики нередко сталкиваются с путаницей в методах драйвера.

Разберем детально, как устроена архитектура хранения текстов в весах CAS LP, какую внешнюю компоненту использовать и как программно реализовать передачу информации из справочника номенклатуры.

Архитектура хранения текстов в весах CAS LP

Главная ошибка при первой реализации обмена — попытка выгрузить состав товара через методы общего текста этикетки. Проанализируем разницу между типами данных в весах:

  1. Рекламный текст этикетки (шапка/подвал): загружается общим методом (например, ПередатьТекстЭтик) и является единым для всех печатаемых этикеток на конкретных весах (например, название магазина или слоган).
  2. Таблица специальных сообщений (ингредиенты / состав): это отдельная независимая таблица памяти весов. Каждая запись в ней имеет свой уникальный номер (индекс).
  3. Таблица товаров (PLU): содержит основные реквизиты (код, штрихкод, цена, срок годности). В структуре данных товара присутствует числовое поле привязки, в которое записывается номер ранее загруженного специального сообщения.

Таким образом, процесс выгрузки всегда должен строиться в два последовательных этапа: сначала в память весов отправляется текст с присвоением номера сообщения, а затем выгружается карточка PLU, где указывается данный номер.

Подключение внешней компоненты драйвера в 1С 7.7

Для работы с сетевыми весами CAS LP версии 1.6 и выше используется штатная внешняя компонента CASV16.dll. Инициализация объекта драйвера в программном коде 1С 7.7 выполняется стандартным образом:


Если ЗагрузитьВнешнююКомпоненту("CASV16.dll") <> 0 Тогда
    Объект = СоздатьОбъект("AddIn.CASLPv16");
Иначе
    Предупреждение("Не удалось загрузить компоненту CASV16.dll!");
    Возврат;
КонецЕсли;

Документация и описание всех доступных методов и свойств поставляются вместе с установочным дистрибутивом драйвера весов (обычно в формате CHM или PDF в каталоге установки ПО от производителя).

Пример работы с общим текстом этикетки

Рассмотрим типовую процедуру загрузки общего текста этикетки, где строки объединяются через служебный символ-разделитель (с кодом 1):


Процедура ЗагрузитьТекстЭтикетки(РеклСтр1, РеклСтр2)
    Если ПустоеЗначение(Объект) = 1 Тогда
        Предупреждение("Неудачная попытка обращения к драйверу весов");   
        Возврат;
    КонецЕсли;    
    
    СтрПодключения = СформироватьСтрокуПодключения();
    Если ПустоеЗначение(СтрПодключения) = 1 Тогда
        Сообщить("Не удалось сформировать строку подключения весов!"); 
        Возврат;
    КонецЕсли;
    
    КодОшибки = Объект.Подключить(СокрЛП(СтрПодключения));
    Если КодОшибки <> 0 Тогда
        Сообщить("Ошибка установления связи с весами: " + Объект.ТекстОшибки(КодОшибки));
        Объект.СбросОшибки();
        Возврат;
    КонецЕсли;     
    
    смв = Симв(1);  
    СтрокиРекламнойИнформации = РеклСтр1 + смв + РеклСтр2; 
    
    КодОшибки = Объект.ПередатьТекстЭтик(СтрокиРекламнойИнформации);
    
    Если КодОшибки <> 0 Тогда    
        Сообщить("Ошибка загрузки текста этикетки: " + Объект.ТекстОшибки(КодОшибки));
        Объект.СбросОшибки();  
    Иначе
        Сообщить("Рекламная информация для этикетки успешно загружена");
    КонецЕсли; 
    
    КодОшибки = Объект.Отключить();
    Если КодОшибки <> 0 Тогда
        Сообщить("Ошибка разрыва связи с весами: " + Объект.ТекстОшибки(КодОшибки)); 
        Объект.СбросОшибки();
    КонецЕсли; 
КонецПроцедуры

Пошаговый алгоритм выгрузки сообщений и товаров

Разберем по шагам, как правильно реализовать выгрузку расширенного описания из справочника номенклатуры:

  1. Подготовка и форматирование строк: текстовое описание товара из базы 1С необходимо разбить на массив или список строк. Важно: длина каждой строки не должна превышать 50 символов, а общее количество строк для одного сообщения не должно быть больше 8. Все лишние пробелы в конце строк следует обрезать с помощью функции СокрЛП.
  2. Запись сообщения в весы: вызываем метод компоненты для передачи сообщения по его индексу (например, номеру позиции или коду товара).
  3. Запись карточки PLU: при формировании структуры данных о товаре (код, наименование, цена, срок годности) передаем в поле привязки сообщения номер, использованный на предыдущем шаге.

Важные технические особенности и ограничения

При практической настройке взаимодействия обратим внимание на следующие ключевые нюансы:

  1. Настройка формата этикетки на весах: стандартные фиксированные шаблоны весов CAS LP часто не содержат полей для вывода спецсообщений. Для печати многострочного состава необходимо на самих весах выбрать и настроить свободный (пользовательский) формат этикетки, где размещен блок ингредиентов.
  2. Кодировка текста: в зависимости от прошивки весов строковые данные могут приниматься в кодировке Windows (CP1251) или DOS (CP866). Если драйвер не производит автоконвертацию, в 1С необходимо предусмотреть перекодирование строк перед отправкой.
  3. Сетевые задержки при выгрузке: контроллер Ethernet в весах CAS LP имеет ограниченный буфер приема. При циклической пакетной загрузке большого справочника товаров рекомендуется вставлять небольшую программную паузу между отправкой порций данных, чтобы избежать потери пакетов и разрыва соединения по таймауту.
  4. Контроль свободного места: память сообщений в весах ограничена. Рекомендуется периодически выполнять полную очистку неиспользуемых индексов сообщений перед масштабным обновлением каталога.
← На главную