Сканирование изображений, используя TWAIN компоненту WIA

14.10.19

Функциональные - Документооборот и делопроизводство (СЭД)

Универсальная обработка заполнения объектов для сканирования изображений сохранения в любом формате и прикрепления его к документу. Можно использовать как самостоятельную обработку, так и добавить через "Администрирование" во "Дополнительные обработки и отчеты". Протестирована на БП 3.0, УНФ 1.6, ЗКГУ 3.1, УТ 11.4, Розница 2.2. Не требуется установка дополнительных программ и компонентов (кроме драйвера сканера, естественно)

Скачать файл

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

Наименование По подписке [?] Купить один файл
Сканирование изображений используя TWAIN компоненту WIA:
.epf 120,73Kb
61
61 Скачать (2 SM) Купить за 2 150 руб.

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

	Если Метаданные.ОбщиеМакеты.Найти("ПрисоединенныеФайлы")<>Неопределено ТОгда
		Для каждого Спр Из Метаданные.Справочники Цикл
			Если ПрисоединенныеФайлы.КОбъектуМожноПрисоединятьФайлы(Справочники[Спр.Имя].ПустаяСсылка()) Тогда
				ПараметрыРегистрации.Назначение.Добавить("Справочник." + Спр.Имя);
			КонецЕсли;
		КонецЦикла;
		Для каждого Спр Из Метаданные.Документы Цикл
			Если ПрисоединенныеФайлы.КОбъектуМожноПрисоединятьФайлы(Документы[Спр.Имя].ПустаяСсылка()) Тогда
				ПараметрыРегистрации.Назначение.Добавить("Документ." + Спр.Имя);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;

Для работы со сканерами мы используем Windows Image Acquisition (WIA)-это полнофункциональный компонент для обработки изображений, обеспечивающий сквозные возможности обработки изображений. Уровень автоматизации WIA позволяет легко получать изображения с цифровых камер, сканеров или веб-камер, а также вращать, масштабировать и аннотировать файлы изображений https://docs.microsoft.com/en-us/previous-versions/windows/desktop/wiaaut/-wiaaut-wiadevicetype

 
.....
	КодВозврата = ПодключитьВнешнююКомпоненту("ВнешняяОбработка.СканированиеДокументов.Макет.КомпонентаTWAIN", "twain");
.....
	Соответсвие = Новый Соответствие;
	
	Соответсвие.Вставить("DeviceManager", Новый COMОбъект("WIA.DeviceManager"));
	Соответсвие.Вставить("ImageFile", Новый COMОбъект("WIA.ImageFile"));
	Соответсвие.Вставить("CommonDialog", Новый COMОбъект("WIA.CommonDialog"));
	Соответсвие.Вставить("ImageProcess", Новый COMОбъект("WIA.ImageProcess"));
.....

Для определения списка устройств:

Функция ПолучитьУстройства() Экспорт
	
	Массив = Новый Массив;
	
	Если Не ПроинициализироватьКомпоненту() Тогда
		Возврат Массив;
	КонецЕсли;
	
	Для Каждого DeviceInfo Из Обработка_ПараметрыПриложения["СтандартныеПодсистемы.ИнтерфейсWIA"]["DeviceManager"].DeviceInfos() Цикл
		Массив.Добавить(DeviceInfo.Properties("Name").Value);
	КонецЦикла;
	
	Возврат Массив;
	
КонецФункции

Получить нужное устройство для работы и обработки:

 
Функция ПолучитьУстройство(ИмяУстройства)
	
	Для Каждого DeviceInfo Из Обработка_ПараметрыПриложения["СтандартныеПодсистемы.ИнтерфейсWIA"]["DeviceManager"].DeviceInfos() Цикл
		Если ВРЕГ(DeviceInfo.Properties("Name").Value) = ВРЕГ(ИмяУстройства) Тогда
			Возврат DeviceInfo;
		КонецЕсли;
	КонецЦикла;
	
	Возврат Неопределено;
	
КонецФункции

Для работы с диалоговыми окнами необходимо определить несколько переменных:

Типы файлов:

	СоответствиеФорматID = Новый Соответствие;
	СоответствиеФорматID.Вставить(-1, "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}");
	СоответствиеФорматID.Вставить("BMP", "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}");
	СоответствиеФорматID.Вставить("PNG", "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}");
	СоответствиеФорматID.Вставить("GIF", "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}");
	СоответствиеФорматID.Вставить("JPG", "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}");
	СоответствиеФорматID.Вставить("JPEG", "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}");
	СоответствиеФорматID.Вставить("TIFF", "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}");
 

Типы изображений:

	СоответствиеЦветностьID = Новый Соответствие;
	СоответствиеЦветностьID.Вставить(-1, 0);	//Не задано
	СоответствиеЦветностьID.Вставить(0, 4);		//Монохромное (текст)
	СоответствиеЦветностьID.Вставить(1, 2);		//Чернобелое
	СоответствиеЦветностьID.Вставить(2, 1);		//Цветное

Для запуска сканера в нужном режиме без диалога:

 
  Image = CommonDialog.ShowAcquireImage(WiaDeviceType, WiaImageIntent, WiaImageBias, СоответствиеФорматID.Получить(ФорматКартинки));

Для запуска помощника сканирования:

 
....
 objDevice=CommonDialog.ShowSelectDevice(WiaDeviceType,false,false);
 Image = CommonDialog.ShowAcquisitionWizard(objDevice); //ПолучитьУстройство(ИмяУстройства));		
....

Если желаем полностью настроить сканер программно и запустить сканирование без диалогов:

 
РазмерГоризонтально = Окр(210 / 25.4 * Разрешение, 0);
РазмерВертикально = Окр(296 / 25.4 * Разрешение, 0);

Device =  Обработка_ПараметрыПриложения["СтандартныеПодсистемы.ИнтерфейсWIA"]["DeviceManager"]; //Новый COMОбъект("WIA.DeviceManager");
DeviceInfo = Device.DeviceInfos();
Если DeviceInfo.Count() > 0 Тогда
	objDevice = CommonDialog.ShowSelectDevice(WiaDeviceType, Ложь, Ложь);

	Сканер = objDevice.Items(1);
	СканерПараметры = Сканер.Properties();
	СканерПараметры.Item("6146").Value = Цветность;
	СканерПараметры.Item("6147").Value = Разрешение;
	СканерПараметры.Item("6148").Value = Разрешение;

	СканерПараметры.Item("6149").Value = 0;
	СканерПараметры.Item("6150").Value = 0;

	СканерПараметры.Item("6151").Value = РазмерГоризонтально;
	СканерПараметры.Item("6152").Value = РазмерВертикально;

	Image = Сканер.Transfer();

КонецЕсли;

Весь список свойств можно получить через отладку

И последнее - это как и где получить возможные разрешения для сканера. Они также хранятся в свойствах каждого элемента.

В принципе, для работы со сканером как бы все есть, даже более. 

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

 
ImageProcess = Обработка_ПараметрыПриложения["СтандартныеПодсистемы.ИнтерфейсWIA"]["ImageProcess"];
	
Если  ImageProcess.Filters.Count = 0 ТОгда
	ImageProcess.Filters.Add(ImageProcess.FilterInfos("Convert").FilterID);
Конецесли;
ImageProcess1 = ImageProcess.Filters(1);
Для К = 1 По ImageProcess1.Properties.Count Цикл
	Если ImageProcess1.Properties(К).Name = "FormatID" Тогда
		ImageProcess1.Properties(К).Value = СоответствиеФорматID.Получить(ФорматКартинки);
		Прервать;
	КонецЕсли;
КонецЦикла;
	
Image = ImageProcess.Apply(Image); //применяем фильтр на изображение

Обработка тестировалась на платформе 1С:Предприятие 8.3 (8.3.15).

Проверено на конфигурациях БП 3.0, ЗКГУ 3.1, УНФ 1.6, УТ 11.4, Розница 2.2.

Универсальная обработка сканирование управляемые формы прикрепление файлов БП 3.0 УНФ УТ ЗКГУ

См. также

Документооборот и делопроизводство (СЭД) Типовые Бухгалтер Пользователь Руководитель проекта Платформа 1С v8.3 Управленческий учет Платные (руб)

Организуйте правильный оборот документов на вашем предприятии в 1С. Ведение учета и хранения документов. Управление потоками документации между подразделениями. Работа с договорами в компании. Автоматизация процессов подготовки, согласования и подписания документов. Сократите время и объем ошибок с 1С:ДО!

48500 руб.

19.02.2016    108566    121    5    

96

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

Модуль или расширение «Сервисный центр для 1С» позволяет принимать в ремонт оборудование (компьютеры, бытовая техника и т.п.), оформлять заявки инженеров на посещение клиентов и вести начисление заработной платы для сотрудников. Позволяет наладить автоматизированный учет в сервисном центре на уже существующей базе.

14800 руб.

01.11.2012    94189    114    1    

118

SALE! 30%

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Бухгалтер Пользователь Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания сканов или фото товарных документов в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    107047    313    173    

326

SALE! 10%

Рабочее место Розничная торговля Обмен с ГосИС Бухгалтер Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Акцизы Платные (руб)

Помощник ЕГАИС для 1С Розница 2.2/2.3 - обновление сопоставлений алкогольных классификаторов, инвентаризация по марке, проверка накладных по check1.fsrar.ru, поиск продукции по акцизке, запрос новых акцизных марок и многое другое!

12000 10800 руб.

05.01.2016    146889    510    700    

227

Документооборот и делопроизводство (СЭД) Бухгалтер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Продукт "Апрель Софт: Бухгалтерия позаказного производства, ред. 3.0" предназначен для удобного и оперативного управления процессами производства, отгрузок и снабжения в производственных компаниях. Программный продукт открывает новые функциональные возможности для ведения документооборота.

11400 руб.

18.02.2016    22962    1    1    

5

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    30287    35    49    

71
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. amd1986 27.09.19 11:18 Сейчас в теме
Компонента работает на 64 битной платформе 1С? Ранее то не работала..
2. vik070777 273 27.09.19 12:12 Сейчас в теме
Щас проверю на ВебКлиенте точно не работает
3. vik070777 273 27.09.19 12:36 Сейчас в теме
Работает
Прикрепленные файлы:
4. пользователь 23.01.20 14:57
Сообщение было скрыто модератором.
...
5. AlexWhite 194 14.05.20 17:28 Сейчас в теме
На снимках не увидел формат pdf - отсутствует или поддерживается?
6. vik070777 273 14.05.20 17:40 Сейчас в теме
к сожалению нет
Прикрепленные файлы:
7. vik070777 273 14.05.20 17:41 Сейчас в теме
есть отдельно конвертер можно доработать при необходимости
8. user1632735 11.08.21 12:49 Сейчас в теме
Автору спасибо за обработку. Сканирование работает и это прекрасно!
Однако не без "подводных камней". Процедура "ПрекрепитьФайлыНаСервере" выполняется именно на сервере. Поэтому локальный (на компе пользователя) каталог "Temp" на сервере не видно. Файл.Существует() возвращает ЛОЖЬ - прикрепления не происходит...
Оставьте свое сообщение