Имя: Пароль:
1C
 
Сканирование через компоненту twain
0 unknown181538
 
04.10.16
21:28
Нужно сделать сканирование документов сканером. Конфигурация на обычных формах. Ранее работал 1CScan.dll, но на 64 разрядной винде не удалось его запустить.
Из конфигурации Документооборот сканирование происходит успешно. Но когда я пытаюсь вытащить от туда код, то возникают проблемы.

    ИмяПараметра = "СтандартныеПодсистемы.КомпонентаTwain";
    //Если ПараметрыПриложения["СтандартныеПодсистемы.КомпонентаTwain"] = Неопределено Тогда
    КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаTWAIN", "twain", ТипВнешнейКомпоненты.Native);
    
Если КодВозврата Тогда
        Сообщить(НСтр("ru = 'Компонента сканирования уже установлена.'"));
            //РаботаСФайламиКлиент.ВернутьРезультат(ОбработчикРезультата, Истина);
            //Возврат;
        Иначе
            
            ПараметрыВыполнения = Новый Структура;
    ОбработчикРезультата = Новый ОписаниеОповещения("УстановитьКомпонентуСканированияЗавершение", ЭтотОбъект);
            ПараметрыВыполнения.Вставить("ОбработчикРезультата", ОбработчикРезультата);
            Обработчик = Новый ОписаниеОповещения("УстановитьКомпонентуЗавершение", ЭтотОбъект, ПараметрыВыполнения);
            НачатьУстановкуВнешнейКомпоненты(Обработчик, "ОбщийМакет.КомпонентаTWAIN");
            Возврат Ложь;
        КонецЕсли;
    
    //Если Не КодВозврата Тогда
    //    Возврат Ложь;
    //КонецЕсли;
    
    ПараметрыП = Новый Соответствие;
    ПараметрыП.Вставить(ИмяПараметра, Новый("AddIn.twain.AddInNativeExtension"));
    //КонецЕсли;
    
    СтрокаУстройств = ПараметрыП["СтандартныеПодсистемы.КомпонентаTwain"].ПолучитьУстройства();
    Массив = Новый Массив;
    Для Индекс = 1 По СтрЧислоСтрок(СтрокаУстройств) Цикл
        Строка = СтрПолучитьСтроку(СтрокаУстройств, Индекс);         
        Массив.Добавить(Строка);
    КонецЦикла;    
    //Для Каждого Строка Из Массив Цикл
    //    СписокУстройств.Добавить(Строка);
    //КонецЦикла;
    ВыбранноеУстройство = Массив[0];
    
    КомпонентаТВЭЙН = ПараметрыП["СтандартныеПодсистемы.КомпонентаTwain"];
    //.ПолучитьНастройку(ИмяУстройства, ИмяНастройки);
    ПараметрСжатие = 100;
    
    Разрешение  = КомпонентаТВЭЙН.ПолучитьНастройку(ВыбранноеУстройство, "XRESOLUTION");
    Цветность   = КомпонентаТВЭЙН.ПолучитьНастройку(ВыбранноеУстройство, "PIXELTYPE");
    Поворот      = КомпонентаТВЭЙН.ПолучитьНастройку(ВыбранноеУстройство, "ROTATION");
    РазмерБумаги = КомпонентаТВЭЙН.ПолучитьНастройку(ВыбранноеУстройство, "SUPPORTEDSIZES");
    Поворот = 0;
    ДвустороннееСканированиеЧисло = КомпонентаТВЭЙН.ПолучитьНастройку(ВыбранноеУстройство, "DUPLEX");
    ДвустороннееСканирование = Ложь;
    ПараметрыП["СтандартныеПодсистемы.КомпонентаTwain"].НачатьСканирование(
    Истина, ВыбранноеУстройство, "JPG",
    Разрешение, Цветность, Поворот, РазмерБумаги,
    ПараметрСжатие,
    ДвустороннееСканирование);
    
    
    
    Возврат Истина;
В документообороте, после вызова метода НачатьСканировать начинает работать сканер, появляется прогресс-бар, и результат попадает в процедуру ВнешнееСобытие. В моей конфигурации ничего не происходит и не выдается ошибка. Даже сделал обработку с управляемой формой, но не помогло и это.
В чем проблема, и какие есть варианты решения? Кто-нибудь писал обработки для twain?
1 Злопчинский
 
04.10.16
22:14
На ИС есть обработки
2 oleg_km
 
04.10.16
22:30
Пользую WIA https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms630368(v=vs.85).aspx

, работает и под x64, нужно только свежие дрова от сканера поставить, и у меня поставился и x64 и x86 версия
3 Garykom
 
гуру
04.10.16
22:56
Если сканер SANE совместимый (http://www.sane-project.org/sane-supported-devices.html) то все банально
4 unknown181538
 
05.10.16
00:38
(2) WIA, сколько помню, не подошел тем, что не видит сканер, переброшеный по RDP
5 unknown181538
 
05.10.16
01:46
(1) не нашел ничего подходящего. Разве что для УФ. Буду такую пробовать.
Вообще, вк для twain из документооборота должна работать в конфигурации на обычных формах?
6 Torquader
 
05.10.16
01:59
(4) Начнём с того, что по RDP сканеры вообще не пробрасываются. Чтобы его пробросить нужно на клиента поставить программу (Dll) и организовть виртуальный канал для передачи данных, чтобы на сервере уже можно было что-то получить.
Есть отдельные специальные программы для этого и они не бесплатные.
7 unknown181538
 
05.10.16
15:13
(6) Ну сканер уже проброшен, я не знаю точно, каким способом.
8 oleg_km
 
05.10.16
15:48
Там же как-то USB-порты пробрасываются. Не делал в RDP, не люблю его, ничем не могу подсказать.

по WIA из (2) уже больше 4-х лет работает, все что нужно сканируется прямо в базу, даже кладовщик вычерки просто сканирует, а бухгалтер уже проводит. Все внутри 1С, никаких лишних кнопочек.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший