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

14.10.19

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

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

Файлы

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

Наименование Скачано Купить файл
Сканирование изображений используя TWAIN компоненту WIA:
.epf 120,73Kb
65 3 000 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Данная обработка использует компоненту 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С:Предприятие 8 Управленческий учет Платные (руб)

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

63100 руб.

19.02.2016    115196    159    5    

123

1С:Предприятие 8 Платные (руб)

"1С:Архив" – это универсальная система для надежного долговременного хранения документов с гарантией юридической значимости на неограниченный срок. Решение разработано на основе нормативно-правовых актов по архивному делу, поддерживает операции хранения документов: от попадания в архив до уничтожения, и не имеет ограничений на объем хранимых данных. "1С:Архив" сопровождается методологической поддержкой в виде организационных документов по хранению, входящих в состав "Комплекта нормативных документов" к "Методике управления документами и совместной работой", разработанной специалистами фирмы "1С". Использование "1С:Архива" позволяет организовать единое хранилище всех бумажных и электронных документов из разных информационных систем, вести архивный учет в соответствии с требованиями Росархива и снизить нагрузку на учетные системы. С 1 апреля 2026 года стоимость изменится на 14%, успейте купить решение по цене 2025 года!

117000 руб.

24.10.2022    8122    14    1    

11

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

Полнофункциональное расширение для формирования и ведения учета перевозочных документов всех видов (ТН, ТТН, ЭТрН). Печать документов или отправка через ЭПД (Электронный перевозочный документооборот). Поддержка регистрации нескольких перевозок на одну финансовую реализацию (в виде УПД, например), а также одной перевозки на основании нескольких финансовых реализаций. Формирование всех сопроводительных документов из одной отгрузки. Формирование реестра грузосопроводительных документов, доверенности менеджеров для указания ответственных лиц (руководитель, главный бухгалтер, кладовщик) организации для пользователей ИБ. Гибкая настройка функциональности под потребности организации.

10099 руб.

18.04.2017    55383    303    43    

101

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

Модуль «Автосервис» для 1С — это профессиональный инструмент для автоматизации станций технического обслуживания. Решение позволяет вести полный цикл работ: от быстрой записи клиента и планирования постов до расчета заработной платы исполнителей. Поддерживает работу нескольких филиалов в одной базе без ограничений по лицензиям пользователей, интегрируется с типовыми конфигурациями 1С (например, Управление Торговлей 11, УНФ, Бухгалтерия, КА, ERP) для учета товаров и услуг.

18900 руб.

09.03.2016    52369    131    1    

64

Рабочее место Логистика, склад и ТМЦ Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Фармацевтика, аптеки Россия Управленческий учет Платные (руб)

Удобное отображение аналогов номенклатуры в 1С для УТ 11, КА 2, ERP прямо в списке. Легкое добавление и удаление аналогов к номенклатуре. Доработка в виде расширения, изменение конфигурации не требуется.

12709 руб.

19.03.2019    56881    460    85    

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