Потоковое сканирование в 1с документооборот не работает

Обновлено: 13.05.2024

Всем доброго времени суток.
Нужна помощь с потоковым сканированием через компоненту TWAIN.
Основная проблема пока что проявляется в том что
Если использовать метод .НачатьСканирование(
с параметром ПоказыватьДиалог = Ложь,
то сканирует исключительно в режиме планшет.
Лоток заполнен, на стекле пусто. в результате прогоняет пустое стекло, а лоток по прежнему полон.
Если ПоказыватьДиалог = Истина,
и в открывшемся диалоге выбрать режим подачи, ни каких внешних событий в 1с не входит.
В режиме планшета все отлично в не зависимости от режима диалога.
Картинка сохраняется в темп, в 1с идет два внешних события: ImageAcquired (с адресом картинки в темпе); EndBatch.
Буду рад любой помощи по теме 1с и потокового сканирования с автоподатчика

Подробнее:
Сканер HP LaserJet Pro M426fdn
Конфигурация самописная, обычные формы (хотя здесь наверное это и не важно)
Есть общий макет с компонентой TWAIN, скопированный с документооборота

и во временном каталоге почему то только файл скана первого листа из лотка

у сканера должно быть приложение для сканирования,которое запускать из командной строки с параметрами.
СНачала спросите ГБ готов ли он заплатить за это. У нас отказались от такого проекта.

(2) Приложение запускается без проблем.
но при потоковом сканировании ни какой инфы от приложения в 1с нету

я так подозреваю что если в режиме планшета
в 1с приходит два внешних события:
Данные)

То в режиме автоподачи к примеру для трех листов в лотке должно быть примерно так:

Но вот в режиме автоподачи в 1с вообще ни чего не приходит

(3)Возможно не совсем понял,
но суть в том что каким либо способом но все равно нужно решить эту проблему.
Не принципиально чтоб через типовую 1с компоненту.
Через
COMОбъект("WIA.DeviceManager")
уже пробовал. Там вообще чудеса чудесатые начинаются с этим сканером.

Возможно и здесь проблема кроется в самом сканере, но нет возможности проверить еще на чем-либо.

Об еще одном из обходных путей писал на комментарий выше,
но повторюсь что у него есть один значимый в моем случае минус, это универсальность

За различные варианты других путей, или модификацию этих буду тоже очень признателен.
Можно просто на этапе идеи.

(0) предложу поискать другую компоненту для сканирования. К дефолтной было много претензий.

Вообще, твайн используется для предварительного сканирования и настройки получения изображения. 1с просто потом забирает готовый файл и все.

Всем доброго времени суток.
Нужна помощь с потоковым сканированием через компоненту TWAIN.
Основная проблема пока что проявляется в том что
Если использовать метод .НачатьСканирование(
с параметром ПоказыватьДиалог = Ложь,
то сканирует исключительно в режиме планшет.
Лоток заполнен, на стекле пусто. в результате прогоняет пустое стекло, а лоток по прежнему полон.
Если ПоказыватьДиалог = Истина
и в открывшемся диалоге выбрать режим подачи, ни каких внешних событий в 1с не входит.
в режиме планшета все отлично в не зависимости от режима диалога.
картинка сохраняется в темп, в 1с идет два внешних события: ImageAcquired (с адресом картинки в темпе); EndBatch.
буду рад любой помощи по теме 1с и потокового сканирования с автоподатчика

Подробнее:
Сканер HP LaserJet Pro M426fdn
Конфигурация самописная, обычные формы (хотя здесь наверное это и не важно)
Есть общий макет с компонентой TWAIN, скопированный с документооборота
версия компоненты 1.9

Есть внешняя обработка в которой основных момента два:
1) сам запуск диалога сканера

2) обработка внешних событий от сканера

(все остальное в обработке это бантики по проверке компоненты,
ее если что установки, формированию самого списка сканеров,
сохранение картинки из текущей строки уже в свою папку и т.д. Все работает корректно)

в обработке нет ни какой зависимости от метаданных, кроме самой компоненты в общих макета
подойдет для любой в обычном приложении где есть эта компонента

И если в диалоге выбрать режим планшета, то все отлично работает
проходит сканирование
отрабатывает событие "ImageAcquired"
закрывается автоматом диалог
отрабатывает событие "EndBatch"

И если в диалоге выбрать режим податчик, то
происходит сканирование всех листов из лотка податчика
ни каких внешних событий в 1с не входит
и во временном каталоге почему то только файл скана первого листа из лотка

Собственная реализация потокового сканирования для 1С

Данная статья написана про решение данной задачи для 1с Документооборот, но данное решение работает для всех решений на 1С УФ с БСП.

После внедрения документооборота неожиданно выяснилось, что документы не могут сами отсканироваться и корректно разместиться в системе, это надо делать человеку.

Поэтому организация архива документов в программе существенно отставала и отстает от планов, в отличии от согласования и договорной работы, что внедрено и эксплуатируется.

Архив ведется далеко не по всем документам – так как сканировать и размещать документы, заполняя карточки, банально некому.

Нашей организации понадобилось хранить и обеспечивать полнотекстовый поиск по подписанным клиентами актам. Довольно часто эти документы мы предоставляем по запросу налоговым (да и самим контрагентам) ВЭД это такой ВЭД…

Главное требование руководства – 0 трудоемкость для сотрудников.

(Хотели перейти на УПД, объединяющий акт и СФ и печатать единый документ в 1с, но столкнулись с нежеланием клиентов, а клиент для нас - это всё )

Решение: При выпуске актов печатаем на актах Штрихкода.

После выпуска, акты подписываются внутри компании и направляются клиентам. Клиенты подписывают акты, ставят печать и отправляют оригиналы нам. У нас акты запихиваются в МФЦ (Ксерокс – Сканер-Копир), там они сканируются пачкой и после этого появляются в документообороте с заполненной карточкой файла.

В МФЦ настроена возможность отправлять документы сразу на указанный адрес, куда они отправляются виде 1 файла.

Такая логика потребовала некоторого усложнения программы - разбивки присланного PDF документа на листы и их независимой обработки.
Большие сканеры у нас настроены на сканирование пачки в 1 файл ,а перенастройка сканера – это квантовая механика для бухгалтерии.

Задача программы – читать почту, куда сканер шлет сканированные файлы, разбивать документы на страницы , распознавать штрихкод, получать из СУБД данные о акте, записывать распознанный акт и заполнять карточку документа полученными данными.

Если документ не распознался – он присылается почтой ответственному и его вносят руками.

Реализовать подобное решение можно массой способов.

Чисто средствами 1с :
Регламентное задание, которое получает почту, и полностью выполняет всю работу.

Написать приложение, которое будет работать с почтой и распознавать документы, потом подготовленные данные передавать в 1с на запись.

- Через написанный и опубликованный веб сервис на 1с. Наверно, это неплохое решение ,но мы не пошли на него. Хотелось меньшей трудоемкости, а активное использование веб-сервисов для двунаправленной интеграции с 1с у нас только начинается.

Но способ медленный , плюс код записи файла в систему сложно переписать и отладить через COM.

Потому был выбран компромиссный метод.

В 1С был создан общий модуль и создана функция, принимающая имя файла и описание, необходимое для записи в карточку файла.

Из внешнего приложения по Com вызывается только эта функция.

В будущем, думаю, функция все таки будет обернута в веб сервис.

Часть 1 – написание кода для 1с. Запись файлов в базу.

Особенность 1с УФ в том, что авторы находятся «в зуде поиска» часто перекраивая библиотеки стандартных функций . Если бы в дотнете резко поменялись бы классы работы с файлами – я бы точно этого не понял, в этом вопросе нарушение совместимости в разных релизах 8.2 мне не очень нравится. Приложенный в статье код работает на конфигурации документооборот (1.2.7.3) , код примеров от более ранних релизов у меня не работал.

Создаем общий модуль и в нем функцию ЗагрузкаФайла с возможностью Экспорта

Данный код был найдет на одном из форумов и имеет корни в УТ, которая была написана на той же версии Платформы, что и Документооборот. Мной дописана возможность записи данных в структуру " Файлы->Папки"

Также используем «стандартные» функции Расширение , СоздатьФайл, СоздатьФайлСВерсией

Итог – мы получили точку входа для работы с 1С. Нам достаточно подготовить данные и вызвать эту функцию. Вызов будет минимален и по размеру, и по времени.

Часть 2 – написание кода для реализации своего варианта сканирования.

Для работы с 1С comcntr.dll Interop.V82 (COM обертка для работы с 1с, требует установленной платформы 1с )

Для распознавания Штрихкода используем библиотеку Messaging.Toolkit.Barcode

Для разбивки PDF документа на страницы используем библиотеку PdfToImage

Полный код программы и используемые библиотеки приложены к публикации.

Здесь я укажу только некоторые моменты.

Также в классе реализована очистка почтового ящика.

Все pdf файлы со сканера разбираются на набор Jpg страниц. Далее идет процесс распознавания этих файлов. В случае успеха - данные записываются в 1С , в случае неуспеха - письмо с этим изображением отправляется пользователю.

В коде используется запрос к MS SQL c целью получения данных из системы УУ для документа.

Надеюсь, что данная разработка пригодится многим.

Проект был написан быстро и, в настоящий момент, успешно эксплуатируется.

Расширение позволяет в автоматическом режиме распознать документ по штрихкоду и прикрепить скан копию к нужному документу.

Добрый день.
Релиз 1.0.2.
В расширение для команды "Сохранить в pdf" добавлены общие модули из конфигурации, но таких модулей нет в БП Корп 3.0.74.58:
* СобытияФорм
* СобытияФормКлиент
При этом в модуле СобытияФормКлиент есть вызов функции из общего модуля, который находится в другом расширении или конфигурации:

Добрый день, Борис.
Вы можете через обращение ТП предоставить cf конфигурации БП Корп, для адаптации?

При этом в модуле СобытияФормКлиент есть вызов функции из общего модуля, который находится в другом расширении или конфигурации:
Док = кпд_ОбщегоНазначения.ПолучитьДанныеЗаписи(Элемент);

Исправил ошибку, обновление уже выложено в публикации.

папка на рабочем столе с декомпилятором очень прям . трогательно.. Добрый день. При добавлении демо расширения возникает ошибка:
Ошибка применения расширения конфигурации: Значение контролируемого свойства ОбъектРасширяемойКонфигурации у объекта Роль.ПолныеПрава не совпадает со значением в расширяемой конфигурации. Конфигурация Бухгалтерия 3.0.73.50, платформа 8.3.16.1063 Значение контролируемого свойства ОбъектРасширяемойКонфигурации у объекта Роль.ПолныеПрава не совпадает со значением в расширяемой конфигурации

Удалите из расширения заимствованную роль "ПолныеПрава".

(7) Здравствуйте.
Пару дней назад приобрели Ваше расширение.
Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.77.56).

2. Стоит галочка "активно", но не появился раздел "сканирования" и через все функции нет справочника "Профили сканирования".
Т.е. расширение подключено, но ничего не изменилось.

Скажите, пожалуйста, в чем может быть причина?

(26) Нужно добавить в расширение заимствованную роль ПолныеПрава из конфигурации БП и дать доступ роли к справочнику в расширении и общей форме. Расширение у вас подключено, но нет роли в системе, которой доступны его объекты. Нужно добавить в расширение заимствованную роль ПолныеПрава из конфигурации БП и дать доступ роли к справочнику в расширении и общей форме. Расширение у вас подключено, но нет роли в системе, которой доступны его объекты.

(26) Разобрались.
Пробовали устанавливать 3 ПП на другом сервере и давать доступы, но не прокатило.
Устанавливать только на том сервере, где развернута база

Сейчас уже проблема другая:
При обработке пдф файла из 5 доков (28 страниц), один из них не загружает.
При этом, оставляет во временной папке (темп) несколько png.
В папку с ошибкой "кривой" док не попадает.
Пробовали загружать отдельным файлом - распознался и загрузился.
Еще для одного документа загрузилась только первая страница из трех (остальные так же остались png)
И из-за этого остается общий пдф в изначальной папке "Скан", не удаляется и не переносится в "Обработанные".
В логах проблема не отражается.
Заметили случайно

Будем разбираться)
Если есть идеи, буду очень благодарна

Удалите из расширения заимствованную роль "ПолныеПрава".

Добрый день.
Подскажите, Демоверсия расширения должна прикреплять сканы?

Расширение стало, ошибок нет, при нажатии "Обработать сканы" обработка моментально выполняется, пишет что успешно.
Файлов приложенных в карточках нет, логов нет.

(5) Добрый день.
Да, она полностью функциональная и должна прикреплять сканы. Проверьте, в журнале регистрации нет ошибок?
Архитектура клиент серверная? Если да, то ПО Zbar и ImageMagick должны быть установлены на сервере, где запущена служба Сервер 1С. Служба 1с должна иметь доступ к папке логов. В идеале вы размещаете сканы в сетевой папке (общей) и папка логов тоже сетевая. Служба 1с должна иметь доступ к папке логов. В идеале вы размещаете сканы

Смотрим в сторону приобретения данного расширения для ERP 2.4.

Да, архитектура клиент-сервер.

Хотели протестировать триальную версию, но что-то пошло не так.
Для Zbar и ImageMagick принципиальна битность?

Еще есть подозрение на такую ошибку:
________________________________________________________
"Ошибка 1 при вызове ImageMagick с командной строкой:

"C:\Program Files\ImageMagick-7.0.9-Q16\magick.exe" convert -strip -density 400 -quality 100 C:\Users\DODO\AppData\Local\Temp\v8_580B_1a7\src.pdf C:\Users\DODO\AppData\Local\Temp\v8_580B_1a7\res.jpg

Возможно, нарушена структура командной строки.
_________________________________________________________

DODO - в нашем случае это пользователь, под которым работает служба 1С.

Смотрим в сторону приобретения данного расширения для ERP 2.4.

Да, архитектура клиент-сервер.

Хотели протестировать триальную версию, но что-то пошло не так.
Для Zbar и ImageMagick принципиальна битность?

Еще есть подозрение на такую ошибку:
________________________________________________________
"Ошибка 1 при вызове ImageMagick с командной строкой:

"C:\Program Files\ImageMagick-7.0.9-Q16\magick.exe" convert -strip -density 400 -quality 100 C:\Users\DODO\AppData\Local\Temp\v8_580B_1a7\src.pdf C:\Users\DODO\AppData\Local\Temp\v8_580B_1a7\res.jpg

Возможно, нарушена структура командной строки.
_________________________________________________________

DODO - в нашем случае это пользователь, под которым работает служба 1С.

Написал в личку. Давайте подключусь, посмотрим. Через cmd можно выполнить команду и посмотреть ошибки.

(9) Здравствуйте.
У нас похожая ошибка:

: Ошибка 1 при вызове ImageMagick с командной строкой:
"\\SRV-FS-01\ImageMagick-7.0.10-Q16-HDRI\magick.exe" convert -strip -density 400 -quality 100 C:\Users\Администратор\AppData\Local\Temp\v8_F231_13\src.pdf C:\Users\Администратор\AppData\Local\Temp\v8_F231_13\res.jpg
Возможно, нарушена структура командной строки.

(30) Разобрались.
Пробовали устанавливать 3 ПП на другом сервере и давать доступы, но не прокатило.
Устанавливать только на том сервере, где развернута база

Сейчас уже проблема другая:
При обработке пдф файла из 5 доков (28 страниц), один из них не загружает.
При этом, оставляет во временной папке (темп) несколько png.
В папку с ошибкой "кривой" док не попадает.
Пробовали загружать отдельным файлом - распознался и загрузился.
Еще для одного документа загрузилась только первая страница из трех (остальные так же остались png)
И из-за этого остается общий пдф в изначальной папке "Скан", не удаляется и не переносится в "Обработанные".
В логах проблема не отражается.
Заметили случайно

Будем разбираться)
Если есть идеи, буду очень благодарна

(30) Здравствуйте.
У меня такаяже ошибка. Если вам удалось разобраться, поделитесь пожалуйста решением (9)Здравствуйте.
У меня такаяже ошибка. Если вам удалось разобраться, поделитесь пожалуйста решением

Добрый день!
Хотим приобрести вашу разработку. Есть вопросы:
Каким образом происходит опознавание документа по штрих-коду?
Какую информацию должен содержать штрих-код, чтобы документ определился верно?

В демо-версии не работает определение документа (В штрихкоде добавляли Номер, Гуид, Навигационную ссылку). Пишет - не удалось найти объект в базе со штрихкодом.
Конфигурация: Горнодобывающая промышленность. Оперативный учёт 1.1

(10)
UPD:
Разобрался, штрихкод, сгенерированный стандартными модулями обработался успешно. Код:
Аналогично. Хотим приобрести решение.
Триал не работает. Задание выполняется, но ничего не происходит, в логах пусто.
Отладить нет возможности, модуль запаролен. (12) Установите Ghostscript, на серверную машину где работает сервер 1с (если клиент серверный вариант). Сканы лежат в общей папке?
На выходных опубликую новую версию, в ней расширенный вывод ошибок. (13) да, действительно Ghostscript не был установлен.
Распознало pdf отлично, тестим.
Жаль не распознает картинки (клиенты присылают во всех возможных вариантах сканы) Добрый день. Код открытый? Минимальная совместимость с платформой какого релиза?
Требуется реализовать данный функционал под ут 10.3 (15) Добрый день, да код открыт. По сути код расширения, это методы работы с программами: ZBar bar code reader, ImageMagick и Ghostscript. Все остальное: определить документ по ШК и привязать файл к объекту (методы БСП). Если вы скажите точную версию релиза 10.3 можно попробовать собрать отдельный релиз. ) Добрый день, да код открыт. По сути код расширения, это методы работы с программами: ZBar bar code reader, ImageMagick и Ghostscript. Все остальное: определить документ по ШК и привязать файл к объекту (методы БСП). Если вы скажите точную версию релиза 10.3 можно попробовать собрать отдельный релиз.

(16) Здравствуйте.
Скажите, пожалуйста, есть ли возможность собрать отдельный релиз для УТ 10.3.43.2?
Сколько это будет стоить?

И вопрос: если в загружаемом файле (например, на 80 страниц) есть документы размещенные на 2 и более страниц (т.е. например, один УПД на три листа), то как расширение распознает, что продолжение последующих страниц относится к одному документу (т.е. по какому принципу происходит само "распознавание", что именно у этого УПД три листа)?

(24) Здравствуйте. Отдельно сделать сборку не смогу под УТ 10.3, но смогу вам помочь с адаптацией под ваш релиз. По факту инструмент состоит из одного общего модуля, где описаны процедуры распознавания ШК и работы со сторонним ПО: ImageMagick, Zbar и Ghostscript, 2 типовых процедур БСП: определение объекта в базе по ШК и прикрепление файла к объект и справочника, где создаются профили сканирования.

В ут 10.3 есть механизм типового штрихкодирования? Если да, то нужно будет заменить процедуры поиска объекта в базе и прикрепления файла к документу.

>И вопрос: если в загружаемом файле (например, на 80 страниц) есть документы размещенные на 2 и более страниц (т.е. например, один УПД на три листа), то как расширение распознает, что продолжение последующих страниц относится к одному документу (т.е. по какому принципу происходит само "распознавание", что именно у этого УПД три листа)?

Cистема берет скан и разбирает его на листы, потом начинает распознавать штрихкоды на станицах по порядку. К примеру, на первой странице распознала штрихкод на 2 последующих нет, а на четвертой новый штрихкод, тогда 2 странички система отнесет к первому определенному штрихкоду и в последующем склеит в один документ, а с 4 страницы начнет собирать новый комплект. Такой механизм был разработан для сканирования пачек документов (один скан включает в себя разные документы). Если у вас один скан – один документ, то в таком случае вероятность ошибки сводится к минимуму, не смогла система определить штрихкод, файл переносится в папку «Не определенных». Дополнительно хочу обратить ваше внимание, что если система не смогла распознать штрихкод на странице, то она с помощью фильтра Image magick убирает шумы и пытается повторно его распознать, поэтому вероятность «нераспознания» очень мала.

Как подменить механизм распознавания штрихкодов

Механизм распознавания штрихкодов нужен для потокового сканирования. Потоковое сканирование – это массовый ввод документов (со сканера или из каталога со сканированными изображениями) с автоматическим прикреплением сканированных изображений к карточкам документов (входящих, исходящих, внутренних). Прикрепление к документам осуществляется как раз на основании штрихкода, находящегося на отсканированном изображении (на том же листе, что и текст документа, или на отдельном листе, или на наклейке поверх листа документа).

Обратите внимание:
Важно отличать распознавание штрикхода на картинке (используется в потоковом сканировании) от сканирования штрихкода с помощью ручного сканера штрихкодов (в "1С:Документообороте" такое сканирование используется для интерактивного открытия карточки выбранного документа).

Также не надо путать распознавание штрихкодов и распознавание текста (распознавание текста используется для получения текста с картинки, чтобы в дальнейшем использовать его в полнотекстовом поиске).

Основная логика механизма распознавания штрихкодов находится в общей форме ПотоковоеСканирование .

Возможны два варианта работы распознавания:

  • с использованием встроенной компоненты распознавания штрихкодов,
  • с использованием ABBYY Recognition server (в этом случае надо приобрести ABBYY Recognition server).

Встроенная компонента распознавания штрихкодов работает только с штрихкодами формата EAN-13.

Важная особенность: если сканированные изображения находятся в pdf-файлах, понадобится установка бесплатных программ ImageMagick и GhostScript (на клиенте, на той машине, где будет запускаться потоковое сканирование).

Зачем нужна подмена механизма распознавания штрихкодов

Подмена может понадобиться в следующих случаях:

  • Вас не устраивает качество существующего механизма: например, не на всех картинках распознается штрихкод (с использованием встроенной компоненты), а приобретать ABBYY Recognition server вы или ваш заказчик не хотите.
  • Вы хотите сделать регламентное задание, которое бы работало на сервере, выполняло автоматическую загрузку картинок и привязку по штрихкоду к документам. Ведь встроенная компонента распознавания штрихкодов есть только в 32-битном варианте, и не работает на 64-битном сервере "1С:Предприятия").
  • Вам необходимо распознавание штрихкодов в формате не EAN-13, а скажем Code39 (например, при интеграции "1С:Управление торговлей" с "1С:Документооборотом").

Чем можно заменить механизм распознавания штрихкодов

Если вы планируете использовать библиотеку, реализованную как ActiveX-объект, собственная внешняя компонента не нужна, просто используйте новый COMОбъект (это работает только под Windows).

Читайте также: