Внедрение штрихкодирования в систему, которая была написана «с нуля», — это задача, требующая не только навыков программирования, но и четкого понимания бизнес-процессов склада. Часто заказчик формулирует задачу кратко: «Хочу, чтобы товар отгружался сканером, и в заказ-наряде было видно, кто это сделал». На первый взгляд это кажется простой доработкой на пару часов, но если мы копнем глубже, то увидим множество подводных камней. Разберем детально, как правильно подойти к этой задаче, какие технические средства использовать и сколько времени на самом деле займет качественная реализация.
Прежде чем приступать к написанию кода, мы должны спроектировать структуру хранения данных. В самописной конфигурации, скорее всего, нет готовых механизмов для хранения штрихкодов. Проанализируем, какие объекты нам понадобятся. Самое оптимальное решение — создание регистра сведений «Штрихкоды». Рассмотрим его структуру:
Штрихкод (Строка) — здесь хранится само значение кода.Номенклатура (СправочникСсылка.Номенклатура), Характеристика (если используется), ЕдиницаИзмерения (чтобы отличать код штуки от кода коробки).Такая структура позволит нам реализовать поиск товара по считанному коду. Если же нам нужно фиксировать исполнителя в документе ЗаказНаряд, мы должны предусмотреть в нем реквизит Исполнитель и, возможно, отдельную таблицу для фиксации времени выполнения операций.
Для того чтобы система понимала сигналы от сканера штрихкода, крайне рекомендуется использовать БПО (Библиотеку подключаемого оборудования) от 1С. Это стандарт, который избавит нас от необходимости писать драйверы под каждую модель сканера вручную. Рассмотрим преимущества этого подхода:
Если ваша база работает на управляемых формах, внедрение БПО — это единственный верный путь. Для обычных форм можно использовать старые компоненты (например, ScanOPOS), но это менее надежно в современных реалиях.
Разберем важный технический момент, который часто упускают новички. Существует два основных режима подключения сканера:
ВнешнееСобытие.Проанализируем пример кода для обработки события сканирования в модуле формы документа или рабочего места кладовщика:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Событие = "Barcode" Тогда
ШтрихкодСтрокой = СокрЛП(Данные);
РезультатПоиска = РегистрыСведений.Штрихкоды.Выбрать(Новый Структура("Штрихкод", ШтрихкодСтрокой));
Если РезультатПоиска.Следующий() Тогда
// Добавляем товар в табличную часть
ДобавитьТоварВЗаказ(РезультатПоиска.Номенклатура);
Иначе
Предупреждение("Штрихкод не найден в базе!");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Чтобы выполнить требование «отображался сотрудник, выполняющий работу», мы можем применить технологию двойного сканирования. Сначала сотрудник сканирует свой персональный бейдж (на котором нанесен штрихкод), система авторизует его в документе ЗаказНаряд, а затем он приступает к сканированию товаров. Это исключает необходимость ручного выбора исполнителя из списка и ускоряет процесс в разы.
Рассмотрим детальную оценку трудозатрат, чтобы избежать ошибок при планировании бюджета проекта. Многие разработчики заявляют о «паре часов», подразумевая только написание одной функции, но полноценное внедрение включает в себя гораздо больше:
Итого: Качественное внедрение в самописную базу занимает в среднем от 20 до 40 рабочих часов. Оценка в 50-60 часов также является адекватной, если требуется интеграция с ТСД (терминалами сбора данных) или работа с обязательной маркировкой «Честный ЗНАК».
Если клиент планирует работать с товарами, подлежащими обязательной маркировке (обувь, одежда, шины и т.д.), обычного сканера и простых штрихкодов недостаточно. Выясним основные отличия:
GS1 для корректной передачи данных в систему мониторинга.Подводя итог, можно сказать: внедрить «канву» штрихкодирования действительно можно за пару часов, но такая система будет постоянно давать сбои, терять фокус ввода и раздражать сотрудников. Для создания надежного промышленного решения мы рекомендуем использовать БПО, реализовывать обработку через ВнешнееСобытие и закладывать в оценку время на обучение и обработку исключительных ситуаций. Помните, что надежность системы на складе — это залог отсутствия пересортицы и довольства конечного клиента.