Столкнулся с проблемою записи табличного документа в pdf файл – виртуальный принтер Bullzip PDF Printer записывает в файл, но при отправлении по почте обработка файл не находит. Оказывается принтер имеет некоторую задержку – нам говорит что файл создан, а на самом деле еще дозаписывает файл. В таких случаях необходимо сделать пазу в коде. Так как 1С своими методами не умеет делать паузу я воспользовался методом Sleep объекта операционной системы Windows Script Host.
Процедура Пауза(ИнтервалОжидания) Экспорт Скрипт = Новый ТекстовыйДокумент(); Скрипт.УстановитьТекст ( "if (WScript.Arguments.Count()==0) | WScript.Quit(); |else | if (isNaN(parseInt(WScript.Arguments(0)))) | WScript.Quit(); |WScript.Sleep(WScript.Arguments(0));" ); Скрипт.Записать(КаталогВременныхФайлов()+"sleep.js", КодировкаТекста.ANSI); WshShell = Новый COMОбъект("WScript.Shell"); WshShell.Run("WScript.exe """ + КаталогВременныхФайлов() + "sleep.js"" " + Формат(ИнтервалОжидания, "ЧГ=0"), 0, -1); УдалитьФайлы(КаталогВременныхФайлов() + "sleep.js"); КонецПроцедуры // Пауза
Спасибо, Костя. Очень помог. Именно для решения такой же проблемы использовала.
ОтветитьУдалитьа можно было просто запустить цикл который проверяет размер файла .pdf, как только он больше 0 - скрипт завершил работу.
ОтветитьУдалитьСпасибо, Гвидо. Да, идея интересная, но если документ большой и запись в документ идет порционально то имеем шанс прочитать только часть документа :)
Удалить