При переходе на 64-битную архитектуру платформы «1С:Предприятие» многие специалисты сталкиваются с критической проблемой: привычные механизмы сканирования, заложенные в Библиотеку стандартных подсистем (БСП), перестают работать — решить эту проблему поможет мобильное приложение для сканирования документов в 1С. В этой статье мы подробно разберем, почему старая компонента TWAINAddIn не запускается в x64-сессиях, и проанализируем современные способы решения этой задачи, включая обновление подсистем, экспорт печатных форм и использование альтернативных инструментов.
Разберем ситуацию, которая стала классической для многих внедрений. При попытке выполнить код подключения компоненты в 64-битном клиенте:
КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаTWAIN", "twain", ТипВнешнейКомпоненты.Native);
Переменная КодВозврата принимает значение Ложь. Причина кроется в архитектуре операционных систем: 64-битный процесс (1cv8.exe x64) принципиально не может загрузить в свое адресное пространство 32-битную динамическую библиотеку (DLL). Долгое время компания «1С» поставляла компоненту сканирования только в 32-битном исполнении, что делало невозможным прямое сканирование из «тяжелых» клиентов.
Проанализируем современные изменения в технологической платформе. Начиная с релизов БСП 3.1.9.188, разработчики представили обновленную компоненту сканирования. Главное отличие — отказ от старой TWAINAddIn в пользу новой компоненты ScanAddIn, разработанной по технологии Native API.
Рассмотрим пошагово, что необходимо сделать для реализации этого решения:
КомпонентаTWAIN вы найдете макет с новой компонентой.TWAIN DSM (Data Source Manager) разрядности 64-бит в папке C:\Windows\twain_64.Однако, как показывает практика эксплуатации (согласно сообщениям с форумов), новая компонента иногда некорректно работает с автоподатчиками (ADF) или выдает «черные листы» при сохранении в PDF. Выясним причину: это часто связано с неправильной интерпретацией глубины цвета (1 бит) при конвертации. Для исправления рекомендуется устанавливать последние патчи к БСП.
Если ваша конфигурация сильно кастомизирована и обновление БСП невозможно или трудозатратно, рассмотрим самый надежный «старый» способ. 64-битный сервер 1С прекрасно работает с 32-битными клиентами.
Алгоритм действий:
TWAINAddIn успешно подключится и будет взаимодействовать со стандартными драйверами сканеров.Проанализируем ситуацию, когда штатные средства 1С не справляются с конкретной моделью МФУ (например, сетевые Kyocera или Canon). В этом случае наиболее эффективным решением будет использование внешней утилиты NAPS2 (Not Another PDF Scanner 2), которая имеет отличную поддержку командной строки (CLI). Для автоматизации последующего импорта файлов в систему есть обработка массовой загрузки файлов из папки в 1С.
Рассмотрим пример реализации через запуск внешнего приложения:
ПутьКПрограмме = "C:\Program Files (x86)\NAPS2\NAPS2.Console.exe";
ПутьКФайлу = "C:\Temp\scan.pdf";
ПараметрыЗапуска = "-o " + ПутьКФайлу + " --silent --noprofile";
ЗапуститьПриложение(ПутьКПрограмме + " " + ПараметрыЗапуска, , Истина);
Если ФайлСуществует(ПутьКФайлу) Тогда
// Копирование файлов и каталогов между Клиентом и Сервером для загрузки в 1С
КонецЕсли;
Этот метод позволяет обойти любые ограничения разрядности 1С, так как сканирование происходит в отдельном процессе. NAPS2 поддерживает и TWAIN, и WIA, умеет корректно работать с двусторонним сканированием и сетевыми устройствами, а также выполнять чтение текста, штрих-кодов, QR из PDF — для этого пригодится обработка распознавания документов и PDF-файлов для 1С.
Выясним разницу между TWAIN и WIA. Протокол WIA (Windows Image Acquisition) является родным для систем Windows и имеет встроенную поддержку проброса разрядности (thunking), что позволяет 64-битным приложениям обращаться к 32-битным WIA-драйверам через системную службу.
Для сетевых сканеров, где WIA обычно недоступен, рекомендуется настроить устройство через протокол WSD (Web Services for Devices). В этом случае принтер и сканер определяются Windows как системные устройства, и работа с ними в 1С x64 становится значительно стабильнее даже без специализированных драйверов от производителя.
Если сканирование в x64 клиенте все равно выдает ошибку, выполним следующие проверочные действия:
twaindsm.dll в системных папках System32 и SysWOW64.
СистемнаяИнформация = Новый СистемнаяИнформация;
Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
Сообщить("Внимание: используется 64-битный клиент. Убедитесь, что установлены x64 драйверы сканера.");
КонецЕсли;
Подводя итог, можно сказать, что проблема TWAIN в x64 постепенно решается на стороне «1С», но требует внимательного отношения к версиям БСП и разрядности драйверов оборудования. В критических случаях использование внешней консольной утилиты остается самым гибким и надежным методом автоматизации потокового сканирования и последующего анализа изображений с помощью искусственного интеллекта.