Как настроить сканирование TWAIN в 64-битном клиенте 1С:Предприятие

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе на 64-битную архитектуру платформы «1С:Предприятие» многие специалисты сталкиваются с критической проблемой: привычные механизмы сканирования, заложенные в Библиотеку стандартных подсистем (БСП), перестают работать — решить эту проблему поможет мобильное приложение для сканирования документов в 1С. В этой статье мы подробно разберем, почему старая компонента TWAINAddIn не запускается в x64-сессиях, и проанализируем современные способы решения этой задачи, включая обновление подсистем, экспорт печатных форм и использование альтернативных инструментов.

Суть проблемы: конфликт разрядности

Разберем ситуацию, которая стала классической для многих внедрений. При попытке выполнить код подключения компоненты в 64-битном клиенте:


КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаTWAIN", "twain", ТипВнешнейКомпоненты.Native);

Переменная КодВозврата принимает значение Ложь. Причина кроется в архитектуре операционных систем: 64-битный процесс (1cv8.exe x64) принципиально не может загрузить в свое адресное пространство 32-битную динамическую библиотеку (DLL). Долгое время компания «1С» поставляла компоненту сканирования только в 32-битном исполнении, что делало невозможным прямое сканирование из «тяжелых» клиентов.

Решение №1: Обновление БСП до версии 3.1.9 и выше

Проанализируем современные изменения в технологической платформе. Начиная с релизов БСП 3.1.9.188, разработчики представили обновленную компоненту сканирования. Главное отличие — отказ от старой TWAINAddIn в пользу новой компоненты ScanAddIn, разработанной по технологии Native API.

Рассмотрим пошагово, что необходимо сделать для реализации этого решения:

  1. Обновление конфигурации: Необходимо обновить подсистему «Работа с файлами» до актуальной версии. В новых версиях в общих макетах вместо КомпонентаTWAIN вы найдете макет с новой компонентой.
  2. Проверка разрядности драйвера сканера: Это самый важный момент. Даже если компонента 1С теперь 64-битная, она не сможет «увидеть» сканер, если в системе установлен только 32-битный TWAIN-драйвер. Проверьте наличие TWAIN DSM (Data Source Manager) разрядности 64-бит в папке C:\Windows\twain_64.
  3. Использование Native-интерфейса: Новая компонента поддерживает работу через современный интерфейс, что повышает стабильность в среде управляемых форм.

Однако, как показывает практика эксплуатации (согласно сообщениям с форумов), новая компонента иногда некорректно работает с автоподатчиками (ADF) или выдает «черные листы» при сохранении в PDF. Выясним причину: это часто связано с неправильной интерпретацией глубины цвета (1 бит) при конвертации. Для исправления рекомендуется устанавливать последние патчи к БСП.

Решение №2: Использование 32-битного клиента на 64-битной ОС

Если ваша конфигурация сильно кастомизирована и обновление БСП невозможно или трудозатратно, рассмотрим самый надежный «старый» способ. 64-битный сервер 1С прекрасно работает с 32-битными клиентами.

Алгоритм действий:

Решение №3: Внешние утилиты и «костыли» (NAPS2)

Проанализируем ситуацию, когда штатные средства 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С.

Решение №4: Переход на протокол WIA и WSD

Выясним разницу между TWAIN и WIA. Протокол WIA (Windows Image Acquisition) является родным для систем Windows и имеет встроенную поддержку проброса разрядности (thunking), что позволяет 64-битным приложениям обращаться к 32-битным WIA-драйверам через системную службу.

Для сетевых сканеров, где WIA обычно недоступен, рекомендуется настроить устройство через протокол WSD (Web Services for Devices). В этом случае принтер и сканер определяются Windows как системные устройства, и работа с ними в 1С x64 становится значительно стабильнее даже без специализированных драйверов от производителя.

Рекомендации по диагностике

Если сканирование в x64 клиенте все равно выдает ошибку, выполним следующие проверочные действия:

  1. Проверим наличие файла twaindsm.dll в системных папках System32 и SysWOW64.
  2. В коде 1С добавим проверку разрядности приложения, чтобы выводить пользователю понятное предупреждение, а не системную ошибку подключения компоненты:
    
    СистемнаяИнформация = Новый СистемнаяИнформация;
    Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
        Сообщить("Внимание: используется 64-битный клиент. Убедитесь, что установлены x64 драйверы сканера.");
    КонецЕсли;
    
  3. При использовании БСП 3.1.9+ обязательно проверьте, не включена ли опция «Использовать только WIA» в настройках сканирования (иногда это помогает обойти проблемы с TWAIN).

Подводя итог, можно сказать, что проблема TWAIN в x64 постепенно решается на стороне «1С», но требует внимательного отношения к версиям БСП и разрядности драйверов оборудования. В критических случаях использование внешней консольной утилиты остается самым гибким и надежным методом автоматизации потокового сканирования и последующего анализа изображений с помощью искусственного интеллекта.

← На главную