среда, 5 октября 2011 г.

Пауза в 1С

Столкнулся с проблемою записи табличного документа в 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");

КонецПроцедуры // Пауза

3 комментария:

  1. Спасибо, Костя. Очень помог. Именно для решения такой же проблемы использовала.

    ОтветитьУдалить
  2. а можно было просто запустить цикл который проверяет размер файла .pdf, как только он больше 0 - скрипт завершил работу.

    ОтветитьУдалить
    Ответы
    1. Спасибо, Гвидо. Да, идея интересная, но если документ большой и запись в документ идет порционально то имеем шанс прочитать только часть документа :)

      Удалить