При автоматизации торговых точек и фасовочных зон на базе платформы 1С:Предприятие 7.7 часто возникает задача передачи расширенной информации о товаре (состав, срок годности, условия хранения, сертификаты) на весы с печатью этикеток, такие как CAS LP-15. Весы данной модели поддерживают загрузку текстовых блоков (до 8 строк по 50 символов в каждой), однако при разработке механизма выгрузки разработчики нередко сталкиваются с путаницей в методах драйвера.
Разберем детально, как устроена архитектура хранения текстов в весах CAS LP, какую внешнюю компоненту использовать и как программно реализовать передачу информации из справочника номенклатуры.
Главная ошибка при первой реализации обмена — попытка выгрузить состав товара через методы общего текста этикетки. Проанализируем разницу между типами данных в весах:
ПередатьТекстЭтик) и является единым для всех печатаемых этикеток на конкретных весах (например, название магазина или слоган).Таким образом, процесс выгрузки всегда должен строиться в два последовательных этапа: сначала в память весов отправляется текст с присвоением номера сообщения, а затем выгружается карточка PLU, где указывается данный номер.
Для работы с сетевыми весами 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 Тогда
Сообщить("Ошибка разрыва связи с весами: " + Объект.ТекстОшибки(КодОшибки));
Объект.СбросОшибки();
КонецЕсли;
КонецПроцедуры
Разберем по шагам, как правильно реализовать выгрузку расширенного описания из справочника номенклатуры:
СокрЛП.При практической настройке взаимодействия обратим внимание на следующие ключевые нюансы: