Как исправить ошибку «Неверный тип данных» при выгрузке в весы Штрих-М из 1С:Управление торговлей?

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

При настройке обмена между конфигурацией 1С:Управление торговлей и весами с печатью этикеток (в частности, Штрих-Принт М) специалисты часто сталкиваются со следующей ситуацией: тестирование оборудования проходит успешно, весы отображаются в подключаемом оборудовании, однако при выгрузке товаров процесс доходит до 100% и прерывается ошибкой «Неверный тип данных».

Рассмотрим подробно причины возникновения этой ошибки и шаг за шагом разберем способы её устранения.

Причины возникновения ошибки «Неверный тип данных»

Проанализируем механику работы 1С с драйвером электронных весов. Ошибка несоответствия типа данных обычно возникает в момент передачи структуры данных из платформы 1С во внешнюю компоненту драйвера оборудования. Основными причинами служат:

  1. Выход кода PLU (SKU) за пределы допустимого диапазона. В большинстве моделей весов Штрих-М под номер PLU отведено фиксированное значение памяти (обычно от 1 до 99999). Если в 1С весовому товару присвоен PLU, превышающий 5 знаков, либо содержащий тире и буквы, драйвер возвращает ошибку приведения типов.
  2. Некорректные реквизиты номенклатуры. В правило выгрузки или отбор попали позиции без признака «Весовой», товары с некорректной единицей измерения или позиция с незаполненной/нулевой ценой.
  3. Формат разделителя дробных чисел. Использование неверного знака разделителя (запятая вместо точки или наоборот) при передаче веса, цены или сроков годности.
  4. Превышение длины наименования. Передача наименования товара или состава ингредиентов, длина которых превышает лимит драйвера весов (от 28 до 64 символов в зависимости от прошивки).
  5. Конфликт разрядности (32-bit / 64-bit). Запуск 64-битного клиента или сервера 1С при работе с 32-разрядным COM-драйвером весов.

Шаг 1. Проверка кодов PLU и реквизитов номенклатуры

Выясним, корректно ли сформированы коды PLU для выгружаемых весовых товаров. Выполним следующие проверки в 1С:Управление торговлей:

  1. Перейдем в раздел Подключаемое оборудование и откроем Правила обмена с подключенным оборудованием.
  2. Проверим диапазон генерируемых кодов PLU. Убедимся, что значение не превышает 99999.
  3. Проверим, чтобы в кодах PLU отсутствовали буквенные префиксы, пробелы или спецсимволы. Значение должно быть строго числовым.
  4. Проверим список выгружаемых товаров на наличие установленных цен. Если у товара не задана цена по выбранному типу цен, система может передать незаполненное значение (Null или Неопределено), что вызовет ошибку типа данных в драйвере.

Шаг 2. Доработка и отладка обработки выгрузки

Разберем ситуацию, когда штатный модуль 1С скрадывает детальное сообщение об ошибке от весов. По умолчанию Библиотека Подключаемого Оборудования (БПО) может перехватывать исключение и выдавать обобщенное сообщение. Чтобы увидеть точную причину, проанализируем код выгрузки и внесем изменения во внешнюю обработку или расширение.

Посмотрим на пример перехвата ошибки при передаче структуры данных драйверу весов:


Попытка
    Результат = ОбъектДрайвера.ЗагрузитьТовар(ИдентификаторУстройства, ПараметрыТовара);
    Если НЕ Результат Тогда
        ОписаниеОшибки = "";
        ОбъектДрайвера.ПолучитьОшибку(ОписаниеОшибки);
        ВызватьИсключение "Ошибка весов: " + ОписаниеОшибки;
    КонецЕсли;
Исключение
    ИнформацияОбОшибке = ИнформацияОбОшибке();
    ЗаписьЖурналаРегистрации("ВыгрузкаВВесы", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
    Сообщить("Ошибка при выгрузке товара PLU " + Строка(ПараметрыТовара.PLU) + ": " + ОшибкуОписание(ИнформацияОбОшибке));
КонецПопытки;

Благодаря такой отладке мы сможем точно определить, на каком именно товаре (и каком PLU) происходит сбой типа данных.

Шаг 3. Проверка разрядности платформы и драйверов

Проанализируем совместимость платформы 1С и компоненты драйвера. Если драйвер Штрих-М установлен как 32-битная COM-библиотека (drvmob.dll или shtrih_m.dll), а сеанс 1С запущен в 64-разрядном режиме:

  1. Запустим клиентское приложение 1С:Предприятие в 32-битной версии платформы.
  2. Либо обновим драйвер оборудования в 1С до актуальной версии с поддержкой технологии NativeAPI.
  3. В случае необходимости использования 32-битной компоненты на 64-битном сервере 1С, зарегистрируем DLL-библиотеку в компонентах COM+ Windows (через утилиту dcomcnfg).

Шаг 4. Полная очистка памяти весов

Иногда ошибка выгрузки на 100% связана с тем, что память весов переполнена или содержит поврежденную структуру таблиц после предыдущих сбоев. Очистим память весов перед повторной выгрузкой:

  1. Откроем утилиту Тест драйвера весов с печатью этикеток от компании Штрих-М.
  2. Установим связь с весами по IP-адресу и проверим соединение.
  3. Перейдем в раздел работы с базами данных (Таблицы / PLU) и выполним команду полной очистки базы товаров в весах.
  4. Повторим процедуру выгрузки из 1С:Управление торговлей.
← На главную