|
Нужна помощь с потоковым сканированием | ☑ | ||
---|---|---|---|---|
0
soopchik
13.09.19
✎
23:42
|
Всем доброго времени суток.
Нужна помощь с потоковым сканированием через компоненту TWAIN. Основная проблема пока что проявляется в том что Если использовать метод .НачатьСканирование( с параметром ПоказыватьДиалог = Ложь, то сканирует исключительно в режиме планшет. Лоток заполнен, на стекле пусто. в результате прогоняет пустое стекло, а лоток по прежнему полон. Если ПоказыватьДиалог = Истина, и в открывшемся диалоге выбрать режим подачи, ни каких внешних событий в 1с не входит. В режиме планшета все отлично в не зависимости от режима диалога. Картинка сохраняется в темп, в 1с идет два внешних события: ImageAcquired (с адресом картинки в темпе); EndBatch. Буду рад любой помощи по теме 1с и потокового сканирования с автоподатчика Спасибо. |
|||
1
soopchik
13.09.19
✎
23:43
|
Подробнее:
Сканер HP LaserJet Pro M426fdn Конфигурация самописная, обычные формы (хотя здесь наверное это и не важно) Есть общий макет с компонентой TWAIN, скопированный с документооборота версия компоненты 1.9 Есть внешняя обработка в которой основных момента два: 1) сам запуск диалога сканера ПоказыватьДиалог = Истина; РасширениеКартинки = "JPG"; Разрешение = 300; Цветность = 1; Поворот = 90; РазмерБумаги = 1; ПараметрСжатие = 10; мКомпонентаTwain.НачатьСканирование(ПоказыватьДиалог , ИмяДрайвера //Выбранный на форме , РасширениеКартинки , Разрешение , Цветность , Поворот , РазмерБумаги , ПараметрСжатие, ДвустороннееСканирование //Флажок на форме. значение сути не меняет ); 2) обработка внешних событий от сканера Процедура ВнешнееСобытие(Источник, Событие, Данные) Если Источник = "TWAIN" И Событие = "ImageAcquired" Тогда ВыбФайл=Новый Файл(Данные); нов = тз.Добавить(); нов.Файл = Формат(ТекущаяДата(), "ДФ=yyyyMMddHHmmss") + ВыбФайл.Расширение; ДвоичныеДанные = Новый ДвоичныеДанные(Данные); АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Новый УникальныйИдентификатор); нов.АдресКартинки = АдресКартинки; ЭлементыФормы.ПолеКартинки.Картинка = Новый Картинка(ДвоичныеДанные); ЭлементыФормы.тз.ТекущаяСтрока = нов; УдалитьФайлы(Данные); ИначеЕсли Источник = "TWAIN" И Событие = "EndBatch" Тогда //Ни чего не делаю ИначеЕсли Источник = "TWAIN" И Событие = "UserPressedCancel" Тогда //Ни чего не делаю КонецЕсли; КонецПроцедуры (все остальное в обработке это бантики по проверке компоненты, ее если что установки, формированию самого списка сканеров, сохранение картинки из текущей строки уже в свою папку и т.д. Все работает корректно) https://yadi.sk/d/YpLTS1DGA2efmA В обработке нет ни какой зависимости от метаданных, кроме самой компоненты в общих макета подойдет для любой в обычном приложении где есть эта компонента И если в диалоге выбрать режим планшета, то все отлично работает проходит сканирование отрабатывает событие "ImageAcquired" закрывается автоматом диалог отрабатывает событие "EndBatch" И если в диалоге выбрать режим податчик, то происходит сканирование всех листов из лотка податчика ни каких внешних событий в 1с не входит и во временном каталоге почему то только файл скана первого листа из лотка |
|||
2
Сияющий в темноте
14.09.19
✎
18:41
|
у сканера должно быть приложение для сканирования,которое запускать из командной строки с параметрами.
|
|||
3
ILM
гуру
14.09.19
✎
20:01
|
СНачала спросите ГБ готов ли он заплатить за это. У нас отказались от такого проекта.
|
|||
4
soopchik
16.09.19
✎
18:10
|
(2) Приложение запускается без проблем.
но при потоковом сканировании ни какой инфы от приложения в 1с нету я так подозреваю что если в режиме планшета в 1с приходит два внешних события: Данные) Источник = "TWAIN" Событие = "ImageAcquired" Данные - строка с адресом картинки в папке temp Источник = "TWAIN" Событие = "EndBatch" Данные = Неопределено То в режиме автоподачи к примеру для трех листов в лотке должно быть примерно так: Источник = "TWAIN" Событие = "ImageAcquired" Данные - строка с адресом картинки листа 1 Источник = "TWAIN" Событие = "ImageAcquired" Данные - строка с адресом картинки листа 2 Источник = "TWAIN" Событие = "ImageAcquired" Данные - строка с адресом картинки листа 3 Источник = "TWAIN" Событие = "EndBatch" Данные = Неопределено. Но вот в режиме автоподачи в 1с вообще ни чего не приходит Если запустить приложение без компоненты 1с к примеру через КомандаСистемы(<СтрокаКоманды>, <ТекущийКаталог>) или ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>, <КодВозврата>) То в 1с не приходит ни каких внешних событий даже в режиме планшета в коде возврата для ЗапуститьПриложение просто = 1 Уже думал об идее отлавливать новые изображения в нужной папке но это уже на самый-самый крайний случай т.к. теряется вся универсальность |
|||
5
soopchik
16.09.19
✎
18:33
|
(3)Возможно не совсем понял,
но суть в том что каким либо способом но все равно нужно решить эту проблему. Не принципиально чтоб через типовую 1с компоненту. Через COMОбъект("WIA.DeviceManager") уже пробовал. Там вообще чудеса чудесатые начинаются с этим сканером. Возможно и здесь проблема кроется в самом сканере, но нет возможности проверить еще на чем-либо. Об еще одном из обходных путей писал на комментарий выше, но повторюсь что у него есть один значимый в моем случае минус, это универсальность За различные варианты других путей, или модификацию этих буду тоже очень признателен. Можно просто на этапе идеи. |
|||
6
Chum
16.09.19
✎
18:36
|
(0) предложу поискать другую компоненту для сканирования. К дефолтной было много претензий.
Вообще, твайн используется для предварительного сканирования и настройки получения изображения. 1с просто потом забирает готовый файл и все. |
|||
7
soopchik
17.10.19
✎
16:04
|
В моей ситуации помог другой драйвер
с ним компонента вела себя нормально и в режиме подачи и планшета Причем драйвер который послужил причиной создания темы оказалось был не родной а с родным все ок. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |