Почему при сканировании многостраничного документа в PDF в 1С возникает ошибка отсутствия результирующего файла?

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

При организации потокового сканирования и конвертации страниц в единый PDF-документ (например, в конфигурации 1С:Документооборот) часто используется связка внешней компоненты TWAIN и сторонней утилиты ImageMagick. Нередко администраторы и пользователи сталкиваются с ситуацией, когда под локальным администратором сканирование проходит успешно, а под доменной учетной записью процесс завершается таймаутом (около 30 секунд) с сообщением о том, что итоговый PDF-файл не найден.

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

Как устроен процесс объединения страниц в 1С

Проанализируем цепочку вызовов, которая происходит в платформе 1С при формировании многостраничного PDF:

  1. При нажатии кнопки сканирования драйвер автоподатчика сканирует страницы и сохраняет их в виде отдельных графических файлов (например, формата JPG) во временном каталоге пользователя %TEMP%.
  2. Далее вызывается метод внешней компоненты:
    
    КомпонентаTwain.ОбъединитьВМногостраничныйФайл(СтрокаВсехПутей, ФайлРезультата, ПутьКПрограммеКонвертации);
    
  3. Бинарная компонента TWAIN для вызова утилиты ImageMagick формирует во временном каталоге командный файл (например, imgconv.bat), куда помещает команду вызова конвертера со списком путей ко всем временным изображениям и результирующему PDF.
  4. Компонента запускает созданный .bat-файл через командный интерпретатор операционной системы Windows (cmd.exe).
  5. Платформа 1С входит в цикл ожидания появления итогового файла (по умолчанию до 30 секунд). Если по истечении времени файл не создан, выдается ошибка об отсутствии файла.

Причина 1. Блокировка запуска командного интерпретатора и скриптов в Temp

Самая распространенная причина ошибки под доменными учетными записями — действие групповых политик безопасности (GPO), политик ограничения программного обеспечения (SRP / AppLocker) или средств защиты конечных точек (EDR / антивирусных экранов).

В защищенных средах для непривилегированных учетных записей блокируется выполнение скриптов (.bat, .cmd) непосредственно из каталога AppData\Local\Temp, либо пользователю вовсе запрещен запуск cmd.exe. При ручном тестировании через меню «Выполнить» команда convert.exe запускается напрямую и работает корректно, однако попытка компоненты выполнить запуск через промежуточный .bat-файл мгновенно блокируется политиками ОС без вывода графического окна об ошибке.

Способы решения:

  1. Настройка политик безопасности: Системному администратору необходимо создать разрешающее правило в AppLocker/SRP для исполнения служебных командных файлов процесса 1С в рабочем каталоге либо скорректировать запрет на вызов командного процессора для группы пользователей, работающих со сканированием.
  2. Прямой запуск утилиты из 1С: Переопределить в модуле формы процедуру объединения файлов, отказавшись от передачи управления компоненте TWAIN в части конвертации. Вместо этого запустить процесс напрямую через метод ЗапуститьПриложение():
    
    КомандаЗапуска = """" + ПутьКПрограммеКонвертации + """ " + СтрокаВсехПутей + " """ + ФайлРезультата + """";
    ЗапуститьПриложение(КомандаЗапуска, , Истина, КодВозврата);
    Если КодВозврата <> 0 Тогда
        // Обработка ошибки выполнения
    КонецЕсли;
    
    Параметр ожидания (третий параметр Истина) гарантирует, что 1С продолжит выполнение кода только после полного завершения работы конвертера.

Причина 2. Конфликт имени convert.exe и версии ImageMagick

Посмотрим на особенности самой утилиты ImageMagick и операционной системы Windows:

  1. Системная утилита Windows: В каталогах System32 и SysWOW64 присутствует собственная системная утилита Windows convert.exe (служащая для преобразования файловых систем FAT в NTFS). Если в коде 1С или настройках жестко прописано только имя convert.exe без полного абсолютного пути, система может попытаться запустить системную утилиту Windows, что приведет к аварийному завершению.
  2. Версии ImageMagick 7+: В седьмой версии ImageMagick базовый исполняемый файл был переименован в magick.exe, а convert.exe устанавливается только в режиме совместимости (опция «Install legacy utilities»). Если эта опция не была выбрана при установке, вызов convert.exe завершится ошибкой отсутствия файла.
  3. Политика безопасности ImageMagick: В конфигурационном файле policy.xml, расположенном в каталоге ImageMagick, может быть заблокирована работа с PDF. Убедимся, что для формата PDF установлены полные права: <policy domain="coder" rights="read|write" pattern="PDF" />

Причина 3. Отсутствие или несовместимость Ghostscript

Для создания и чтения документов формата PDF утилите ImageMagick требуется библиотека Ghostscript. Разберем требования к ее установке:

  1. Необходимо убедиться, что Ghostscript установлен на рабочей станции.
  2. Разрядность установленного Ghostscript, ImageMagick и платформы 1С должна быть согласована (для 32-разрядного клиента 1С рекомендуется использовать 32-разрядные сборки утилит).
  3. Пути к каталогу с библиотеками Ghostscript (bin и lib) должны быть доступны для чтения учетной записи пользователя и присутствовать в переменной окружения PATH.

Альтернативный вариант: использование формата TIFF

Если политики безопасности предприятия строго запрещают использование сторонних исполняемых файлов и скриптов в пользовательских сеансах, рассмотрим переключение формата многостраничного сканирования на TIFF (TIF). Встроенная TWAIN-компонента платформы 1С поддерживает объединение отсканированных страниц в многостраничный TIFF собственными средствами без вызова внешних конвертеров.

← На главную