Собственная реализация потокового сканирования с распознаванием для 1С (1C Документооборот + C# )

23.04.14

Разработка - Разработка внешних компонент

Нашей организации понадобилось хранить в системе документооборот подписанные акты и обеспечивать поиск по ним. Довольно часто эти документы мы ищем и предоставляем по  запросу.
Главное требование руководства – 0 трудоемкость для сотрудников.
Решение:  При выпуске актов печатаем на актах ШтрихКод (QR код), потом подписанные оригиналы сканируются на почту - далее все работает "Само".

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Исходный код проекта по распознаванию
.zip 12,27Mb ver:1
129
129 Скачать (1 SM) Купить за 1 850 руб.
Код модуля 1с для работы приложения
.txt 8,50Kb ver:1
117
117 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

 

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

90% Актов у нас выпускается в собственной системе УУ (C#+MSSQL) , 10% - в 1С.  

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

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

Для  .Net выбрали генерацию QRкода (он лучше всех переносит смятие), для 1С реализовали печать в отчете стандартного code128.
Для формирования QRcode и для распознавания использовали библиотеку MessagingToolkit-Barcode.  Это порт на .Net известной библиотеки Zxing.   Мы ее широко используем для генерации штрихкод и их последующего сканирования, например, с фотографий, сделанных на фотоаппараты на улице.
После долгого изучения качество работы библиотеки было признано лучшим из всех бесплатных .Net Библиотек. (Хотя, для некоторых задач мы и используем метод последовательной проверки изображения целым набором библиотек, но статья не об этом)

 

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

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

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

 

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

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

 

 

Реализация:

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

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

Модуль декодирования можно было сделать внешней компонентой, либо просто написать на ASP.Net http-сервис   для распознавателя.
Минус для нас – отсутствие достаточного количества времени у 1с специалиста, сложность отладки регламентных заданий. 

 

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

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

 

-Через работу по Com и вызов всех методов из .Net.  Способ знакомый и очень широко использующийся, в том числе и нами. Один из плюсов – не надо менять конфигурацию и получать заморочки при обновлении.

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

 

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

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

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

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

 

Один из аргументов такого выбора -  дефицит 1С специалистов в компании. Часть задач выполняет аутсорс, помимо него есть только один специалист, который помимо 1с занимается еще большим количеством проектов. При этом с .Net программистами все гораздо лучше.

 

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

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

 

 

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

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

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

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

 

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

Язык C# cреда  VS2010  (Используем тип dynamic для простой и эффективной работой с 1С)

 

 Используемые библиотеки:

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

Для работы с почтой мы используем библиотеку LumiSoft.Net .

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

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

 

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

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

 

MailDeveloper.cs – Класс который и осуществляет всю деятельность. Он перебирает всю почту, проверяет ее источник (Спам обрабатывать не стоит, равно как и широковещательные сообщения).

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

 

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

 

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

 

К данному описанию прилагается написанный модуль  для 1с а также проект на c#.

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

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

 

штрихкод распознавание

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    54043    9    69    

46

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1127    3    4    

3

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    47298    124    66    

67

Разработка внешних компонент Программист Платформа 1С v8.3 Платформа 1C v8.2 Платные (руб)

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3598    3    0    

5

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77516    72    257    

191

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    28657    138    100    

91

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    1874    bayselonarrend    10    

44

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    4726    kovalevdmv    26    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. maxkisa 25.04.14 14:33 Сейчас в теме
Давно ждал, кто же напилит распознавание QR кода из PDF с множеством страниц :)
А то документооборот проштрихкодирован, а загрузка и распознавание все ни как не была реализована.. не до разборок с VS было.
Буду посмотреть.
2. dvim 66 25.04.14 14:51 Сейчас в теме
Смотрите - если будут вопросы пишите, подскажу.
3. RustIG 1834 21.07.14 11:07 Сейчас в теме
(0) интересно. а на стороне 1С можно реализовать распознавание QR-кода? Можно ли миновать почтовую программу? Можно ли сразу от принтера-сканера (МФУ) отправлять файл сразу в папку 1С? Для чего почта используется в этой цепочке?
4. dvim 66 21.07.14 11:16 Сейчас в теме
На стороне 1с можно через внешнюю компоненту, либо через веб сервис.
В папку 1с тоже можно отправлять.

У нас почта используется, так как часто сканирование осуществляется в удаленных подразделениях, где нету сетевого доступа.
5. vers139 53 03.10.14 16:29 Сейчас в теме
(4) можете привести пример кода на 1С как использовать Toolkit как внешнюю компоненту?
6. dvim 66 04.10.14 08:33 Сейчас в теме
Оно - не внешняя компонента.
Можно написать ВК, в которой "обернуть" библиотеку
7. kiberiq 121 19.05.16 13:45 Сейчас в теме
Код на 1С не полный. И где само распознавание QR-кода?
8. dvim 66 19.05.16 16:07 Сейчас в теме
Само распознавание - в библиотеке Messaging.Toolkit.Barcode
на 1с только часть кода, остальное работает под с# (что и написано)
Ибо на 1с разбить многостраничный пдф оказалось сложно.
9. user850486 26.10.17 08:01 Сейчас в теме
Такой вопрос:
Вот осканировали 10 листов, из них одна накладная на три листа, Две на два и три акта. Как распознать какой лист относится к какой накладной? Или Вы на всех листах печатаете QR?
10. user1486853 01.04.21 19:24 Сейчас в теме
Подскажите поэжалуйста, какой МФУ лучше выбрать для настройки потокового сканирования в 1С Документооборот.
В данный момент Киосера 2040DN, не подходит.
11. dvim 66 02.04.21 11:49 Сейчас в теме
(10) У нас ксероксы....

Вообще есть 2 варианта - устройства которые умеют сканировать в почту и устройства которые сканируют на диск.
Традиционно, мы склоняемся к первому варианту, но можно работать и по второму.

Просто удобства почты в том, что если произошла ошибка в распознавании - программа может написать осмысленный ответ.
12. titanium2008 47 28.07.21 07:39 Сейчас в теме
Добрый день, у нас стоит 1С ДО 2.1 и сервер 64 бита - задача распознавать файлы в папке на сервере. Скажите подойдет ваше решение и какие файлы необходимо скачать из вашей публикации?
13. dvim 66 28.07.21 11:12 Сейчас в теме
(12) Дорабатывать придется точно.
Я бы использовал только c# код самого распознавателя , а 1с часть проще написать заново, тем более что она простая.
14. titanium2008 47 28.07.21 11:50 Сейчас в теме
т.е. скачиваю Исходный код проекта по распознаванию - там внешняя компонента 1С? на сервере будет работать ?
Оставьте свое сообщение