Реализация потокового сканирования нескольких QR-кодов или штрихкодов за один проход — это классическая задача для автоматизации производственных линий. В условиях, когда продукция упаковывается в короба и на каждой единице есть свой серийный номер, ручное сканирование каждого кода по отдельности становится «бутылочным горлышком». Проанализируем ситуацию и разберем по шагам, как можно организовать этот процесс, какие устройства выбрать и как настроить логику в 1С.
Современные имидж-сканеры (image scanners) не просто считывают лучом одну линию, а делают полноценный цифровой снимок области. Благодаря этому они способны распознавать сразу несколько кодов, попавших в кадр. Однако для этого сканер должен поддерживать соответствующую программную технологию.
Рассмотрим конкретные модели и технологии:
Проанализируем преимущества этого подхода: это относительно недорогое решение (по сравнению с системами машинного зрения), которое легко интегрируется через стандартный драйвер торгового оборудования 1С. При этом важно настроить сканер так, чтобы он вставлял суффикс (например, CR или Tab) после каждого считанного кода.
Если коробки движутся по конвейеру с высокой скоростью, обычного ручного сканера будет недостаточно. Выясним, почему здесь требуются специализированные решения. Промышленные камеры (Cognex, Keyence) разработаны специально для работы в движении.
Основные особенности таких систем:
Если бюджет ограничен, или требуется нестандартная логика, рассмотрим вариант использования обычной качественной камеры в связке с компьютером. Для этого можно использовать языки программирования (например, Python) и специализированные библиотеки.
Посмотрим на пример использования библиотеки pyzbar или более мощных коммерческих SDK типа Scandit или Dynamsoft. Логика работы будет следующей: программа захватывает кадр с камеры, находит все QR-коды и отправляет массив данных в 1С.
Пример упрощенной логики обработки в 1С (при получении данных от внешнего скрипта через HTTP):
// Метод в 1С, принимающий массив считанных кодов
&НаСервере
Процедура ОбработатьСчитанныеКоды(МассивКодов)
Для Каждого ТекущийКод Из МассивКодов Цикл
// Проверяем, нет ли дублей в текущем документе
ПараметрыПоиска = Новый Структура("Штрихкод", ТекущийКод);
НайденныеСтроки = Объект.Товары.НайтиСтроки(ПараметрыПоиска);
Если НайденныеСтроки.Количество() = 0 Тогда
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Штрихкод = ТекущийКод;
// Дополнительная логика поиска номенклатуры по ШК
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Разберем, на что нужно обратить внимание при разработке в 1С, чтобы система адекватно реагировала на пачку данных от сканера:
1. Обработка префиксов и суффиксов. Большинство сканеров в режиме эмуляции клавиатуры передают данные последовательно. Если сканер настроен на передачу 10 кодов за раз, он отправит их как 10 быстрых вводов с нажатием Enter. 1С должна успевать обрабатывать каждое событие ВнешнееСобытие. Если обработка поиска товара в базе занимает много времени, возможны «пропуски» данных. В этом случае рекомендуется использовать асинхронную обработку или собирать коды в буфер.
2. Игнорирование дублей. При групповом сканировании велика вероятность, что один и тот же код попадет в кадр дважды (например, при медленном движении конвейера). Проанализируем ситуацию: в коде 1С обязательно должна быть проверка на уникальность кода в рамках текущей сессии или документа. Используйте метод НайтиСтроки() для табличной части, как показано в примере выше.
3. Контроль полноты. Если бизнес-процесс предполагает, что в коробе должно быть ровно 12 единиц товара, настройте визуальную индикацию для оператора. Например, пока считано меньше 12 кодов — поле горит красным, как только 12 — зеленым и происходит автоматическая печать этикетки короба.
Подведем итог. Выбор решения зависит от бюджета и условий эксплуатации:
Важно помнить: при работе с QR-кодами на производстве всегда закладывайте в систему возможность ручного «досканирования». Даже самая лучшая автоматика может не считать код из-за замятия этикетки или сильного загрязнения.