• Предыстория:
Не так давно мое руководство приняло решение оцифровать и архив, в котором находилось более 20 000 папок с документами (квитанциями, справками, выписками и т.д.). Чтобы сэкономить время, наш Аналитик тогда предложила загружать документы сразу в базу 1С, где все файлы будут автоматически пронумерованы, имена файлов будут одного формата, скан-файлы будут сразу прикреплены к выбранному владельцу файла, и что немало важно, место на диске не будет тратиться, так как все документы будут сразу отправляться в базу.
Результат сканирования страницы:
• Логика обработки:
За основу я взял логику заполнения общей формы БСП «ПечатьДокументов», а именно: при создании формы на сервере создавать столько реквизитов с типом «ТабличныйДокумент», сколько форме было передано печатных форм.
Почему именно этот способ? Все дело в клиент-серверном взаимодействии:
Для того чтобы пользователь смог увидеть отсканированную страницу, получаемый от принтера PNG файл нужно прочесть, далее в 1С создать объект «Картинка» с данными этого файла, и только потом картинку можно вывести в табличный документ.
Загвоздка здесь заключается в том, что ни пользователю, ни разработчику, неизвестно сколько будет страниц будет в папке с документами. И если бы мы исходили из того что, создавали бы табличный документ, тогда, когда собираемся отсканировать страницу, то это привело бы к постоянным перебросам между клиентом и сервером ранее уже созданных и заполненных табличных документов, и как следствие к большому замедлению работы.
Поэтому, перед началом сканирования, пользователь указывает сколько страниц ему надо отсканировать. На форме будут созданы табличные документы, в указанном количестве, и пользователь будет работать с созданными за один раз табличными документами, находясь при этом на клиенте. Также пользователь может переключаться между отсканированными страницами (по аналогии с объектами печати).
Если пользователю не хватило страниц, то тогда он может добавить себе недостающее количество табличных документов. И на этапе сканирования, это будут единственный случай перехода с клиента на сервер.
После того как все страницы было успешно отсканированы, на этапе загрузки в базу, все табличные документы объединяются в один, и сохраняются в PDF файл.
Статья где я подсмотрел код по подключению к принтеру: //infostart.ru/1c/reports/79794/
• Инструкция по применению:
1) При запуске обработки будет представлена краткая графическая инструкция:
Поле «Вид сканируемого документа» - к какому виду принадлежит документ (справка, квитанция и т.д.).
Поле «Прикрепить к объекту» - объект в базе, к которому будет прикреплен файл.
2) При нажатии на кнопку «Начать сканирование», пользователь указывает кол-во страниц, которые должен отсканировать:
3) На открывшейся вкладке, с лева область предварительного просмотра, а справа список страниц:
Кнопка «Удалить пустые страницы» - удаляет из списка незаполненные табличные документы.
Иконка "Крестик" - обозначает что страница НЕ заполнена.
Иконка "Зеленая книжка" - обозначает что страница отсканирована и заполнена.
4) При нажатии на строку выполняется соединение с принтером и начинается сканирование:
Допустимо указание пользовательских настроек:
По нажатии на кнопку «Сканировать» начинается процесс:
5) В случае если принтер не был найден, пользователю будет выдана ошибка:
6) После того как все было отсканировано. Кнопка «Прикрепить файл» загрузит файл в базу:
Тестировал на:
• Версии платформы: 8.3.23.2040
• Конфигурации: Бухгалтерия для Казахстана 3.0.53.2
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.153.18
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.30.35