При подборе весового товара с помощью терминала сбора данных (ТСД) разработчики часто сталкиваются с типовой проблемой: стандартные внешние обработки и прошивки ТСД автоматически суммируют (сворачивают) отсканированные позиции. В результате вместо отдельных записей по каждой коробке (например, 2 кг и 3 кг) на экране ТСД и в документе 1С выводится одна строка со суммарным весом (5 кг), а количество физических сканирований («пиков») и коробок теряется.
Рассмотрим, почему возникает эта ситуация, и разберем практические способы настройки ТСД и конфигурации 1С:Управление торговлей 10.3 для детального учета весового товара и коробок.
Проанализируем механику работы терминала и 1С при загрузке весовых штрихкодов. Причины слияния данных кроются на двух уровнях:
В типовой обработке обслуживания ТСД для 1С:УТ 10.3 загрузка табличной части часто содержит следующий код, выполняющий слияние одинаковых штрихкодов:
// Пример типовой сверстки загружаемых данных в 1С
ТЗЗагрузки.Свернуть("Штрихкод, Номенклатура, ЕдиницаИзмерения", "Количество");
Если из терминала загружается массив данных, метод Свернуть() схлопывает все записи по одинаковому штрихкоду весового товара в одну строку. Чтобы сохранить каждый «пик», необходимо изменить логику работы на терминале и в 1С.
Разберем вариант использования стороннего специализированного софта для Android-терминалов (например, Cleverence Mobile SMARTS или DataMobile), работающего в связке с 1С:УТ 10.3.
Количество, а число сканирований или вложенных коробок записывается в реквизит Количество мест.Если используется ТСД, который передает детальный массив сканирований без агрегации на стороне устройства (например, автономные модели CipherLab), группировку предотвращают непосредственно в коде 1С.
Для этого в обработке обслуживания ТСД или модуле загрузки документа отключаем вызов метода Свернуть() и организуем построчное заполнение:
// Доработка загрузки данных без свертки строк
Для Каждого СтрТЗ Из ТЗЗагрузки Цикл
НоваяСтрока = ДокументОбъект.Товары.Добавить();
НоваяСтрока.Номенклатура = СтрТЗ.Номенклатура;
НоваяСтрока.ЕдиницаИзмерения = СтрТЗ.ЕдиницаИзмерения;
// Записываем вес конкретной коробки
НоваяСтрока.Количество = СтрТЗ.ВесИзШтрихкода;
// Записываем количество мест (1 коробка) или количество штук
НоваяСтрока.КоличествоМест = 1;
КонецЦикла;
При таком подходе на каждый «пик» ТСД в табличной части «Товары» документа 1С создается новая строка, что позволяет видеть полный перечень весовых коробок.
Проанализируем вариант, когда требуется строгий учет индивидуального веса каждой коробки без доработки базовой структуры документов 1С:
Посмотрим на вариант отказа от стороннего промежуточного ПО в пользу собственного мобильного приложения на платформе 1С.
Приложение на ТСД связывается с базой 1С:УТ 10.3 через HTTP-сервисы. Каждое сканирование штрихкода мгновенно отправляет запрос на сервер, где формируется строка документа. Данный подход полностью исключает неуправляемую свертку данных, гарантирует отображение реального количества «пиков» на экране терминала и позволяет оперативно запрашивать ввод количества штук для каждой коробки.