Как настроить обрезку штрихкода при сканировании в документ в 1С:Управление торговлей 10.3?

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

При автоматизации складского учета и оптово-розничной торговли часто возникает ситуация, когда сканер считывает двумерный код (QR-код или DataMatrix) либо составной штрихкод стандарта GS1, содержащий не только основной код товара (EAN-13 / GTIN), но и дополнительную информацию (партию, срок годности, серийный номер или количество в упаковке). Если в учетной системе номенклатура привязана к обычному 13-значному штрихкоду, программа не находит товар и выдает ошибку. Разберем подробно механизм взаимодействия с торговым оборудованием в конфигурации «1С:Управление торговлей 10.3» на обычных формах, определим цепочку вызовов процедур и рассмотрим варианты нормализации данных.

Архитектура обработки внешних событий от сканера в 1С:УТ 10.3

Проанализируем, как устроен типовой процесс передачи данных от сканера штрихкодов в форму документа (например, РеализацияТоваровУслуг, ПоступлениеТоваровУслуг или ПеремещениеТоваров):

  1. Модуль формы документа: сканер, подключенный через драйвер торгового оборудования (режим COM-порта / Virtual COM / OPOS), генерирует внешнее событие. Управление передается в предопределенную процедуру формы ВнешнееСобытие:
    
    Процедура ВнешнееСобытие(Источник, Событие, Данные)
    
    	Если Не ВводДоступен() Тогда
    		Возврат;
    	КонецЕсли;
    
    	ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);
    
    КонецПроцедуры
    
  2. Модуль обычного приложения: функция ПолучитьСерверТО() возвращает ссылку на глобальный объект управления торговым оборудованием — обработку ТОСервер:
    
    Функция ПолучитьСерверТО() Экспорт
    
    	Если глСерверТО = Неопределено Тогда
    		глСерверТО = Обработки.ТОСервер.Создать();
    	КонецЕсли;
    
    	Возврат глСерверТО;
    
    КонецФункции
    
  3. Обработка «ТОСервер»: в модуле объекта обработки располагается функция ОбработатьВнешнееСобытие, которая расшифровывает полученное сообщение, валидирует входящие параметры и передает данные в обработчики конкретного документа или общего модуля РаботаСТорговымОборудованием.

Способ 1. Программная корректировка длины штрихкода в коде конфигурации

Рассмотрим, как изменить алгоритм обработки штрихкода, если требуется принудительно отсекать служебные символы и оставлять только первые 13 знаков.

В модуле объекта обработки ТОСервер (или в функции ОбработатьВведенныйШтрихкод / ОбработатьВнешнееСобытие) перед поиском номенклатуры в регистре сведений Штрихкоды добавим проверку длины строки:


// Проверяем длину входящего штрихкода
Если СтрДлина(ШК) > 13 Тогда
	ШК = Лев(ШК, 13);
КонецЕсли;

Если в документе используется ручной ввод штрихкода по кнопке с панели инструментов, обратим внимание на процедуру КоманднаяПанельТоварыПоискПоШтрихКоду. Заменим типовой вызов на передачу усеченной строки:


Процедура КоманднаяПанельТоварыПоискПоШтрихКоду(Кнопка)

	Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();
	Если Не ПустаяСтрока(Результат) Тогда
		// Передаем первые 13 символов
		ПолучитьСерверТО().ОбработатьВведенныйШтрихкод(Лев(Результат, 13), ЭтаФорма);
	КонецЕсли;

КонецПроцедуры

Важное предостережение: жесткое усечение Лев(ШК, 13) может нарушить работу с другими типами кодов — короткими штрихкодами (EAN-8), дисконтными картами или кодами маркировки «Честный Знак». Рекомендуется выполнять обрезку не безусловно, а только при совпадении определенных условий (например, проверка конкретной длины, маски или типа считанного кода).

Способ 2. Поиск точки перехвата через замер производительности

Если конфигурация доработана или вызовы распределены по нетиповым модулям, выясним точное место обработки события с помощью отладчика:

  1. Откроем Конфигуратор и запустим режим 1С:Предприятие с включенной отладкой.
  2. В конфигураторе перейдем в меню Отладка → Замер производительности и включим его.
  3. В режиме предприятия откроем нужный документ и выполним считывание штрихкода сканером.
  4. Вернемся в конфигуратор и остановим замер производительности.
  5. В сформированной таблице проанализируем строки кода, которые выполнялись в момент сканирования, найдем процедуры модуля ТОСервер или РаботаСТорговымОборудованием, установим точку останова и детально исследуем стек вызовов.

Способ 3. Аппаратная настройка сканера штрихкодов (без изменения конфигурации)

Разберем альтернативное решение, которое позволяет не вносить изменения в конфигурацию 1С и сохранить ее на полной типовой поддержке.

  1. Форматирование данных (Data Formatting / ADF): большинство современных 2D-сканеров (Zebra, Honeywell, Datalogic, Mertech) поддерживают программирование логики обработки данных. С помощью настроечных штрихкодов из руководства пользователя можно задать правило: отправлять в систему строго первые 13 символов либо удалять суффиксы и идентификаторы применения GS1 (например, группу (37), отвечающую за количество).
  2. Режим работы сканера: убедимся, что сканер переведен в режим эмуляции виртуального COM-порта (USB-COM / USB-CDC), а не работает в режиме эмуляции клавиатуры (HID). Это гарантирует стабильную передачу кода как единого события и исключает проблемы с переключением раскладки клавиатуры.
← На главную