При обновлении конфигураций 1С, таких как 1С:Розница или Управление Торговлей, пользователи часто сталкиваются с тем, что старое торговое оборудование, которое годами работало исправно, внезапно перестает принимать данные. Одной из самых частых проблем является ошибка «Неверный номер сообщения» при использовании новых драйверов «ШТРИХ-М» с весами ранних серий (например, Штрих-Принт 5500). Давайте разберемся, почему это происходит и как вернуть работоспособность обмена без замены оборудования. При сбоях оборудования после обновления конфигурации можно использовать готовое решение для исправления работы драйверов весов Штрих-Принт.
Суть проблемы кроется в несовместимости протоколов передачи данных. Новые версии драйверов 1С (начиная с версий 550 и выше) стали более требовательны к объему и формату передаваемой информации. Старые модели весов имеют ограниченный объем оперативной памяти и фиксированную структуру базы данных. Когда 1С пытается отправить расширенную информацию (например, «Описание товара»), старые весы не могут обработать такой пакет данных или попросту переполняются, что и приводит к ошибке Неверный номер сообщения или прерыванию процесса выгрузки на определенном проценте.
Прежде чем приступать к программным доработкам, попробуем настроить сами весы. Новые драйверы пытаются использовать расширенные возможности, которые нужно ограничить на стороне «железа».
Настройки -> Структура базы -> Товары/сообщения.4900/4000 (8 строк).Эта настройка принудительно ограничивает количество выделяемой памяти под сообщения, что часто помогает избежать переполнения буфера при выгрузке.
Если настройка структуры базы не помогла, значит, проблема в самих данных. Весы конфликтуют с полем «Описание» в карточке товара. Даже наличие пробела в этом поле может вызвать ошибку. Самый простой способ — очистить это поле для всех весовых товаров.
Вы можете воспользоваться стандартной Групповой обработкой справочников и документов в 1С:
Номенклатура.Описание и установите его значение как «пустое» (непробел).После очистки описаний попробуйте снова запустить обмен с оборудованием. В большинстве случаев это решает проблему.
Если очистка описания в справочнике невозможна (например, оно используется в ценниках или на сайте), можно «обмануть» драйвер, не передавая это поле в весы при выгрузке. Для этого мы внесем изменения в общий модуль ПодключаемоеОборудованиеOfflineВызовСервера (желательно делать это через расширение конфигурации, чтобы не снимать конфигурацию с поддержки).
Найдите функцию ТоварыКВыгрузке и добавьте перед возвратом таблицы товаров следующий цикл:
//*** Штрих М не любят что либо в поле Описание
Для каждого ПозицияТовара Из ТаблицаТоваров Цикл
Если СтрДлина(ПозицияТовара.Описание) > 0 Тогда
ПозицияТовара.Описание = "";
КонецЕсли;
КонецЦикла;
Возврат ТаблицаТоваров;
Альтернативный вариант — найти в том же модуле функцию ПолучитьДанныеДляВесов и временно закомментировать строку, которая заполняет описание товара, если она присутствует в вашем релизе:
//ЭлементМассива.Вставить("ОписаниеТовара", "");
Важное примечание: Использование расширений является наиболее безопасным методом. Если вы используете современную версию 1С (например, Розница 2.3), расширение позволит вам гибко управлять процессом выгрузки, не затрагивая основной код конфигурации. При использовании данного метода обязательно протестируйте корректность выгрузки на нескольких товарах перед массовым обменом.
Разбирая ситуацию, мы видим, что замена оборудования — это крайняя мера. В 90% случаев достаточно «облегчить» пакет данных, отправляемый в весы, чтобы старые, но надежные устройства продолжили работать с современным программным обеспечением 1С.