При организации потокового сканирования и конвертации страниц в единый PDF-документ (например, в конфигурации 1С:Документооборот) часто используется связка внешней компоненты TWAIN и сторонней утилиты ImageMagick. Нередко администраторы и пользователи сталкиваются с ситуацией, когда под локальным администратором сканирование проходит успешно, а под доменной учетной записью процесс завершается таймаутом (около 30 секунд) с сообщением о том, что итоговый PDF-файл не найден.
Разберем детально механизм работы этого процесса, выясним причины сбоя и рассмотрим способы устранения неполадки.
Проанализируем цепочку вызовов, которая происходит в платформе 1С при формировании многостраничного PDF:
%TEMP%.
КомпонентаTwain.ОбъединитьВМногостраничныйФайл(СтрокаВсехПутей, ФайлРезультата, ПутьКПрограммеКонвертации);
imgconv.bat), куда помещает команду вызова конвертера со списком путей ко всем временным изображениям и результирующему PDF..bat-файл через командный интерпретатор операционной системы Windows (cmd.exe).Самая распространенная причина ошибки под доменными учетными записями — действие групповых политик безопасности (GPO), политик ограничения программного обеспечения (SRP / AppLocker) или средств защиты конечных точек (EDR / антивирусных экранов).
В защищенных средах для непривилегированных учетных записей блокируется выполнение скриптов (.bat, .cmd) непосредственно из каталога AppData\Local\Temp, либо пользователю вовсе запрещен запуск cmd.exe. При ручном тестировании через меню «Выполнить» команда convert.exe запускается напрямую и работает корректно, однако попытка компоненты выполнить запуск через промежуточный .bat-файл мгновенно блокируется политиками ОС без вывода графического окна об ошибке.
Способы решения:
ЗапуститьПриложение():
КомандаЗапуска = """" + ПутьКПрограммеКонвертации + """ " + СтрокаВсехПутей + " """ + ФайлРезультата + """";
ЗапуститьПриложение(КомандаЗапуска, , Истина, КодВозврата);
Если КодВозврата <> 0 Тогда
// Обработка ошибки выполнения
КонецЕсли;
Истина) гарантирует, что 1С продолжит выполнение кода только после полного завершения работы конвертера.
Посмотрим на особенности самой утилиты ImageMagick и операционной системы Windows:
System32 и SysWOW64 присутствует собственная системная утилита Windows convert.exe (служащая для преобразования файловых систем FAT в NTFS). Если в коде 1С или настройках жестко прописано только имя convert.exe без полного абсолютного пути, система может попытаться запустить системную утилиту Windows, что приведет к аварийному завершению.magick.exe, а convert.exe устанавливается только в режиме совместимости (опция «Install legacy utilities»). Если эта опция не была выбрана при установке, вызов convert.exe завершится ошибкой отсутствия файла.policy.xml, расположенном в каталоге ImageMagick, может быть заблокирована работа с PDF. Убедимся, что для формата PDF установлены полные права:
<policy domain="coder" rights="read|write" pattern="PDF" />
Для создания и чтения документов формата PDF утилите ImageMagick требуется библиотека Ghostscript. Разберем требования к ее установке:
bin и lib) должны быть доступны для чтения учетной записи пользователя и присутствовать в переменной окружения PATH.Если политики безопасности предприятия строго запрещают использование сторонних исполняемых файлов и скриптов в пользовательских сеансах, рассмотрим переключение формата многостраничного сканирования на TIFF (TIF). Встроенная TWAIN-компонента платформы 1С поддерживает объединение отсканированных страниц в многостраничный TIFF собственными средствами без вызова внешних конвертеров.