При настройке обмена между конфигурацией 1С:Управление торговлей и весами с печатью этикеток (в частности, Штрих-Принт М) специалисты часто сталкиваются со следующей ситуацией: тестирование оборудования проходит успешно, весы отображаются в подключаемом оборудовании, однако при выгрузке товаров процесс доходит до 100% и прерывается ошибкой «Неверный тип данных».
Рассмотрим подробно причины возникновения этой ошибки и шаг за шагом разберем способы её устранения.
Проанализируем механику работы 1С с драйвером электронных весов. Ошибка несоответствия типа данных обычно возникает в момент передачи структуры данных из платформы 1С во внешнюю компоненту драйвера оборудования. Основными причинами служат:
Выясним, корректно ли сформированы коды PLU для выгружаемых весовых товаров. Выполним следующие проверки в 1С:Управление торговлей:
PLU. Убедимся, что значение не превышает 99999.PLU отсутствовали буквенные префиксы, пробелы или спецсимволы. Значение должно быть строго числовым.Null или Неопределено), что вызовет ошибку типа данных в драйвере.Разберем ситуацию, когда штатный модуль 1С скрадывает детальное сообщение об ошибке от весов. По умолчанию Библиотека Подключаемого Оборудования (БПО) может перехватывать исключение и выдавать обобщенное сообщение. Чтобы увидеть точную причину, проанализируем код выгрузки и внесем изменения во внешнюю обработку или расширение.
Посмотрим на пример перехвата ошибки при передаче структуры данных драйверу весов:
Попытка
Результат = ОбъектДрайвера.ЗагрузитьТовар(ИдентификаторУстройства, ПараметрыТовара);
Если НЕ Результат Тогда
ОписаниеОшибки = "";
ОбъектДрайвера.ПолучитьОшибку(ОписаниеОшибки);
ВызватьИсключение "Ошибка весов: " + ОписаниеОшибки;
КонецЕсли;
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации("ВыгрузкаВВесы", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
Сообщить("Ошибка при выгрузке товара PLU " + Строка(ПараметрыТовара.PLU) + ": " + ОшибкуОписание(ИнформацияОбОшибке));
КонецПопытки;
Благодаря такой отладке мы сможем точно определить, на каком именно товаре (и каком PLU) происходит сбой типа данных.
Проанализируем совместимость платформы 1С и компоненты драйвера. Если драйвер Штрих-М установлен как 32-битная COM-библиотека (drvmob.dll или shtrih_m.dll), а сеанс 1С запущен в 64-разрядном режиме:
NativeAPI.dcomcnfg).Иногда ошибка выгрузки на 100% связана с тем, что память весов переполнена или содержит поврежденную структуру таблиц после предыдущих сбоев. Очистим память весов перед повторной выгрузкой: