решение для Windows, используется dynwrap.dll
Перем Wrapper; Процедура Спать(мсек) Wrapper.Sleep(мсек); КонецПроцедуры Wrapper=Новый ComОбъект("DynamicWrapper"); Wrapper.Register("KERNEL32.DLL","Sleep","i=l","f=s");
решение для Windows, используется dynwrap.dll
Перем Wrapper; Процедура Спать(мсек) Wrapper.Sleep(мсек); КонецПроцедуры Wrapper=Новый ComОбъект("DynamicWrapper"); Wrapper.Register("KERNEL32.DLL","Sleep","i=l","f=s");
(2) Ну как бы так сказать... В многопроцессной, многопоточной и совсем не RT среде разговоры насчёт маленьких задержек выглядят несколько неловко :-)
(5) ИМХО, не так уж и нужно использовать вызов dll.
В принципе, написать с нуля можно и не так уж и сложно, но мне, например, ни к чему.
(10) ага :)
ком-сервер - он всегда в памяти, уже готов выполнять команды.
а запуск нового приложения - это, с точки зрения системы, целый роман в трёх томах
(21) тогда ничья :)
Процедура Sleep(ПаузаВСекундах = 0) Экспорт ИмяСкриптФайла = КаталогВременныхФайлов()+"\sleep.js"; Если ПаузаВСекундах <= 0 Тогда Если НайтиФайлы(ИмяСкриптФайла).Количество() = 0 Тогда Скрипт=Новый ТекстовыйДокумент(); Скрипт.УстановитьТекст( "if (WScript.Arguments.Count()==0) | WScript.Quit(); |else | if (isNaN(parseInt(WScript.Arguments(0)))) | WScript.Quit(); |WScript.Sleep(WScript.Arguments(0));"); Скрипт.Записать(ИмяСкриптФайла,КодировкаТекста.ANSI); Иначе УдалитьФайлы(ИмяСкриптФайла); КонецЕсли; Возврат; Иначе Если НайтиФайлы(ИмяСкриптФайла).Количество() = 0 Тогда Sleep(); КонецЕсли; КонецЕсли; Run = "wscript.exe " + "" + ИмяСкриптФайла + "" + " " + Формат(ПаузаВСекундах * 1000,"ЧДЦ=0; ЧГ="); Shell=Новый COMОбъект("wscript.shell"); Shell.Run(Run,0,-1); Shell = Неопределено; КонецПроцедуры;
работает
(23) пользуйся тегами. так же гораздо красивее :)
(23) слишком сложно. зачем писать внешний файл? зачем именно js, когда можно "на лету" исполнить ws-скрипт со Sleep()
(26) вот здесь: http://help1c.com/faq/view/584.html без лишнего огорода
Процедура глПауза(Сек) scr = Новый COMОбъект("WScript.Shell"); scr.Run("sleep "+СокрЛП(Число(Сек)),0,1); КонецПроцедуры;
(30) универсальных решений не бывает