Пауза в 1С

Иногда требуется сделать паузу в середине кода, например при работе с файлами или по сети что-то грузим... по протоколам http\ftp, платформа 1С не имеет встроенной функции sleep, но есть несколько вариантов:

1. вариант объект http

Процедура Sleep(КоличествоСекунд)
   Попытка
     Соединение = Новый HTTPСоединение("127.0.0.0",,,,,КоличествоСекунд);
     Соединение.Получить(Новый HTTPЗапрос());
   Исключение
   Конецпопытки;    
КонецПроцедуры

2.вариант команда виндоус

Процедура Sleep(Секунд)
    
    КомандаWindows = "Timeout /T " + Строка(Секунд) + " /NoBreak";
    ЗапуститьПриложение(КомандаWindows,,Истина);
    
КонецПроцедуры

3.вариант пинг

//видно черное окно (на сервере не важно)
Процедура Sleep(Секунд)
    
    КомандаWindows =  "ping -n 1 -w "+Формат(1000 * Секунд, "ЧДЦ=0; ЧГ=") + " 127.255.255.255"; 
    ЗапуститьПриложение(КомандаWindows,,Истина);
    
КонецПроцедуры

//он же но без черного окна
Процедура Sleep(Секунд)

    Попытка
		WshShell= Новый COMОбъект("WScript.Shell");
		WshShell.Run("ping -n 1 -w "+Формат(1000 * Секунд, "ЧГ=0")+" 127.255.255.255", 0, -1);
	Исключение
	КонецПопытки;

КонецПроцедуры

4.вариант ПодключитьОбработчикОжидания

Процедура МояФункция()
........ какой то код............


Если ...=Истина Тогда
   ПодключитьОбработчикОжидания("МояФункция2", Секунд, Истина);
КонцЕсли;

КонецПроцедуры

Процедура МояФункция2()
......... код после паузы..

КонецПроцедуры
Добавить комментарий