При настройке торгового оборудования и попытке выгрузить каталог товаров в весы с печатью этикеток (например, CAS LP с драйвером АТОЛ) пользователи и специалисты могут столкнуться с парадоксальным сообщением: «Выгрузить товары не удалось: При выгрузке товаров в оборудование произошла ошибка. Ошибок нет». При этом тест связи в настройках подключаемого оборудования отрабатывает успешно, а очистка памяти весов из программы выполняется штатно.
Разберем детально механизм возникновения этой неполадки и выясним, какие практические шаги позволяют восстановить корректный обмен данными.
Проанализируем поведение системы при выгрузке разных позиций. Часто товары с целыми ценами (без копеек) выгружаются без сбоев, но как только в списке появляется позиция с дробной ценой (например, 150.50 руб.), процедура прерывается с ошибкой.
Дело в том, что внешняя компонента драйвера весов (COM-объект) ожидает числовые параметры с разделителем дробной части в виде точки. Если в коде 1С передача цены выполняется через неявное преобразование типа или строковую функцию без жесткой фиксации формата, платформа берет системный разделитель операционной системы Windows. В русской локали по умолчанию установлена запятая.
Когда драйвер получает строку с запятой, внутренний парсер завершает операцию аварийно, не успевая сформировать расшифровку ошибки в своем свойстве ОписаниеОшибки. В результате блок Попытка ... Исключение в 1С перехватывает сбой, обращается к драйверу за текстом ошибки, получает пустую строку и выводит стандартную системную фразу «Ошибок нет».
Для исправления ситуации применим одно из следующих решений:
Посмотрим на пример правильного форматирования числовых значений перед отправкой в методы драйвера:
// Формируем строковое представление цены с обязательной точкой
СтрокаЦены = Формат(ЦенаТовара, "ЧДЦ=2; ЧРД=.; ЧГ=0; ЧН=0.00");
ОбъектДрайвера.Цена = СтрокаЦены;
Весы с печатью этикеток (в частности, модели CAS LP 1.6) обладают жесткими аппаратными ограничениями по объему встроенной памяти и диапазону используемых кодов PLU (часто лимит составляет от 1000 до 4000 записей).
Если в 1С в качестве кода PLU используется пятизначный или шестизначный код номенклатуры / SKU (например, 12543), весы отклоняют запись из-за выхода номера за границы поддерживаемого диапазона.
Разберем по шагам, как настроить нумерацию в 1С:
Модели весов CAS LP поддерживают ограниченную длину строки наименования товара (как правило, до 28 символов на строку). Если в правилах выгрузки не включена автоматическая обрезка строк, длинное наименование товара вызывает отказ драйвера при записи в память контроллера.
Проверим наименования выгружаемых позиций. Рекомендуется использовать специальное поле «Наименование для печати на весах» либо настроить в обработке принудительное ограничение длины строки с помощью функции Лев():
// Ограничиваем длину наименования под аппаратные требования весов
НаименованиеДляВесов = Лев(СокрЛП(Выборка.Наименование), 28);
При передаче большого каталога номенклатуры по протоколу TCP/IP (модули Tibbo в весах CAS) драйвер может разрывать соединение из-за переполнения буфера или задержек в сети. Если предыдущие шаги не дали результата, откроем параметры подключения весов в 1С и увеличим параметр «Таймаут» (например, с 1000 мс до 3000–5000 мс).