При внедрении потокового сканирования в 1С:Документооборот (1С:ДО) пользователи часто сталкиваются с тем, что система отказывается распознавать современные двумерные штрихкоды (QR, DataMatrix) или выдает критические ошибки при попытке обработать файлы в формате PDF и PNG. В этой статье мы подробно разберем, как устроен механизм распознавания, почему возникают ошибки COM-объектов и как можно настроить работу с 2D-штрихкодами, не прибегая к дорогостоящим покупкам стороннего программного обеспечения.
Для начала проанализируем ситуацию: почему "из коробки" 1С:Документооборот часто видит только линейные коды EAN-13? Основная логика распознавания сосредоточена в общей форме ПотоковоеСканирование. Встроенная компонента, поставляемая фирмой 1С, имеет лицензионные и технические ограничения. Она эффективно работает с форматом EAN-13, но зачастую игнорирует Code-39, Code-128 и практически все двумерные коды.
Если ваша задача — внедрить распознавание 2D-кодов (например, для маркировки или быстрой регистрации документов), вам придется либо использовать ABBYY FineReader Server, либо настраивать цепочку бесплатных утилит и внешних компонент. Разберем по шагам каждый из этих сценариев.
Одной из самых частых проблем является невозможность прочитать штрихкод из PDF-файла. Важно понимать, что 1С не "читает" штрихкод напрямую из документа PDF. Процесс происходит следующим образом: 1С вызывает внешнюю утилиту для конвертации страницы PDF в растровое изображение (картинку), и уже на этой картинке пытается найти штрихкод. Рассмотрим, как правильно настроить это окружение.
bin обеих программ в системную переменную PATH Windows. Без этого 1С выдаст ошибку о том, что файл не найден или команда не распознана.Проанализируем типичную проблему: если вы все установили, но распознавание не идет, проверьте права доступа. 1С должна иметь права на запуск cmd.exe и выполнение внешних приложений от имени пользователя, под которым запущен сеанс.
Если вы все же решили использовать ABBYY FineReader Server, вы можете столкнуться с ошибкой: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса. Выясним причину этой неисправности.
Данная ошибка означает, что операционная система не может найти в реестре запись о запрашиваемом COM-классе. Рассмотрим способы исправления:
regsvr32 для соответствующих DLL-файлов в папке установки ABBYY.FineReader.RecognitionServer.1. Если у вас установлена 14-я версия, имя класса в реестре может отличаться (например, содержать индекс версии). В этом случае потребуется корректировка кода в расширении для формы ПотоковоеСканирование.Рассмотрим альтернативный вариант — использование бесплатных библиотек с открытым кодом, таких как ZBar или ZXing (Zebra Crossing). Эти библиотеки специализируются именно на поиске штрихкодов и работают значительно быстрее полноценных OCR-систем.
Для интеграции нам потребуется внешняя компонента. Разберем пример логики, которую можно внедрить в систему:
// Пример упрощенной логики вызова внешней компоненты для распознавания
Попытка
ЗагрузитьВнешнююКомпоненту("ОбщийМакет.ZBar_Component", "ZBar");
ОбъектРаспознавания = Новый("AddIn.ZBar.BarcodeScanner");
Исключение
Сообщить("Не удалось загрузить компоненту распознавания 2D-кодов!");
Возврат;
КонецПопытки;
// Путь к файлу, полученному после ImageMagick
Результат = ОбъектРаспознавания.Распознать(ПутьКФайлуИзображения);
Если ЗначениеЗаполнено(Результат) Тогда
// Обработка найденного кода
КонецЕсли;
Использование таких библиотек позволяет уверенно читать QR-коды и DataMatrix даже на сканах среднего качества. Это полностью снимает зависимость от дорогого ПО.
Проанализируем еще один важный аспект: длину штрихкода. Типовой справочник в 1С:ДО часто имеет ограничение на длину реквизита Штрихкод (например, 39 символов). Двумерные коды (особенно QR со ссылками или DataMatrix с криптохвостом) могут содержать 150 и более символов.
Выясним, что нужно сделать:
ДополнительныеРеквизитыИСведения или специфический справочник штрихкодов (в зависимости от версии ДО).Если поток документов не слишком велик, но требуется распознавание сложных кодов, рассмотрим современный подход — использование мобильного клиента 1С. Камеры современных смартфонов нативно поддерживают почти все типы 1D и 2D кодов. При использовании мобильного приложения 1С:ДО вам не нужны ни ImageMagick, ни ABBYY — распознавание происходит силами мобильной платформы, и результат мгновенно передается в центральную базу.
Это особенно полезно для ручного ввода документов в систему "в полях" или на складе, где нет стационарного потокового сканера.
Подводя итог, можно сказать, что проблема распознавания штрихкодов в 1С:ДО решаема несколькими путями. Если бюджет позволяет — используйте ABBYY, предварительно настроив разрядность и COM-соединение. Если нужно бесплатное решение — настройте связку GhostScript + ImageMagick для PDF и подключите внешнюю компоненту ZBar для 2D-кодов через расширение. Не забудьте также увеличить длину хранения кода в справочниках, чтобы данные не обрезались при записи.
Рассмотрим совместное использование этих инструментов: для массового ввода используйте потоковый сканер с ImageMagick, а для редких и сложных случаев — мобильное приложение 1С.