Как исправить ошибку «При выгрузке товаров в оборудование произошла ошибка. Ошибок нет» при выгрузке в весы с печатью этикеток в 1С?

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

При настройке торгового оборудования и попытке выгрузить каталог товаров в весы с печатью этикеток (например, CAS LP с драйвером АТОЛ) пользователи и специалисты могут столкнуться с парадоксальным сообщением: «Выгрузить товары не удалось: При выгрузке товаров в оборудование произошла ошибка. Ошибок нет». При этом тест связи в настройках подключаемого оборудования отрабатывает успешно, а очистка памяти весов из программы выполняется штатно.

Разберем детально механизм возникновения этой неполадки и выясним, какие практические шаги позволяют восстановить корректный обмен данными.

Причина 1. Региональный разделитель десятичной дроби и цены с копейками

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

Дело в том, что внешняя компонента драйвера весов (COM-объект) ожидает числовые параметры с разделителем дробной части в виде точки. Если в коде 1С передача цены выполняется через неявное преобразование типа или строковую функцию без жесткой фиксации формата, платформа берет системный разделитель операционной системы Windows. В русской локали по умолчанию установлена запятая.

Когда драйвер получает строку с запятой, внутренний парсер завершает операцию аварийно, не успевая сформировать расшифровку ошибки в своем свойстве ОписаниеОшибки. В результате блок Попытка ... Исключение в 1С перехватывает сбой, обращается к драйверу за текстом ошибки, получает пустую строку и выводит стандартную системную фразу «Ошибок нет».

Для исправления ситуации применим одно из следующих решений:

  1. Изменение региональных стандартов операционной системы: перейдем в панель управления Windows, откроем «Региональные стандарты» -> «Дополнительные параметры» и заменим «Разделитель целой и дробной части» с запятой на точку. Если 1С работает в клиент-серверном варианте или через RemoteApp / RDP, эти изменения необходимо применить в профиле пользователя сервера, под которым запускается сеанс 1С.
  2. Корректировка кода выгрузки в конфигурации или внешней обработке: найдем процедуру формирования пакета данных для драйвера и явно зафиксируем формат числа без разделителей групп и с точкой в качестве разделителя дроби.

Посмотрим на пример правильного форматирования числовых значений перед отправкой в методы драйвера:


// Формируем строковое представление цены с обязательной точкой
СтрокаЦены = Формат(ЦенаТовара, "ЧДЦ=2; ЧРД=.; ЧГ=0; ЧН=0.00");
ОбъектДрайвера.Цена = СтрокаЦены;

Причина 2. Несоответствие правил нумерации PLU и лимитов памяти весов

Весы с печатью этикеток (в частности, модели CAS LP 1.6) обладают жесткими аппаратными ограничениями по объему встроенной памяти и диапазону используемых кодов PLU (часто лимит составляет от 1000 до 4000 записей).

Если в 1С в качестве кода PLU используется пятизначный или шестизначный код номенклатуры / SKU (например, 12543), весы отклоняют запись из-за выхода номера за границы поддерживаемого диапазона.

Разберем по шагам, как настроить нумерацию в 1С:

  1. Перейдем в раздел настроек обмена с подключаемым оборудованием (Правила обмена с подключаемым оборудованием / Настройки весов).
  2. Установим флаг «Своя нумерация PLU на оборудовании» (или «Использовать внутренний код весов»).
  3. Укажем максимальный размер памяти / количество PLU в соответствии с паспортом устройства (например, 4000).
  4. Повторно запустим выгрузку товаров в весы.

Причина 3. Превышение допустимой длины наименования

Модели весов CAS LP поддерживают ограниченную длину строки наименования товара (как правило, до 28 символов на строку). Если в правилах выгрузки не включена автоматическая обрезка строк, длинное наименование товара вызывает отказ драйвера при записи в память контроллера.

Проверим наименования выгружаемых позиций. Рекомендуется использовать специальное поле «Наименование для печати на весах» либо настроить в обработке принудительное ограничение длины строки с помощью функции Лев():


// Ограничиваем длину наименования под аппаратные требования весов
НаименованиеДляВесов = Лев(СокрЛП(Выборка.Наименование), 28);

Причина 4. Сетевые таймауты интерфейса Ethernet

При передаче большого каталога номенклатуры по протоколу TCP/IP (модули Tibbo в весах CAS) драйвер может разрывать соединение из-за переполнения буфера или задержек в сети. Если предыдущие шаги не дали результата, откроем параметры подключения весов в 1С и увеличим параметр «Таймаут» (например, с 1000 мс до 3000–5000 мс).

← На главную