Пауза

Предоставляет функционал паузы в 1С, длительностью до 20 секунд

Функция Ожидать(ВремяОжиданияВСекундах) Экспорт
    
    Если ВремяОжиданияВСекундах<> 0 Тогда
        
        НастройкиПрокси = Новый ИнтернетПрокси(Ложь);
        НастройкиПрокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
        НастройкиПрокси.НеИспользоватьПроксиДляАдресов.Добавить("127.0.0.0");
        
        Попытка
            Замыкание = Новый HTTPСоединение(
                "127.0.0.0",,,,НастройкиПрокси,
                ВремяОжиданияВСекундах);
            Замыкание.Получить(Новый HTTPЗапрос());
        Исключение
            Возврат Неопределено;
        КонецПопытки;
        
    КонецЕсли;
    
КонецФункции
{1} Не все части функции возвращают значение
OneTracker - трекер учета рабочего времени программиста 1С

Комментарии

Ruizave
#1, 21 февраля 2020 13:17

Что-то не понятно на какое время расчитан эта функция. Какой смысл в установке времени ожидания, если после попадания в исключение будет приведено к 0?


Эльдар Мингалиев
#2, 28 февраля 2020 11:21

(1) Ruizave, исправлено) в таком варианте должно стать лучше


PowerBoy
#3, 08 апреля 2020 12:25

Работает не всегда и до 20 секунд


Эльдар Мингалиев
#4, ред. 08 апреля 2020 17:10

(3) PowerBoy, "работает не всегда" имеется в виду что бывают сбои? или что не при всех условиях работает? По поводу "до 20 секунд" вы абсолютно правы. Я этого не учел. Видимо, для более длительных операций придется по старинке нагружать 1С

 ДатаОкончания = ТекущаяДата() + ВремяОжиданияВСекундах;
 
 Пока ТекущаяДата() < ДатаОкончания Цикл
	 
 КонецЦикла;


PowerBoy
#5, 14 апреля 2020 11:46

(4) Эльдар Мингалиев, Можно совместить:

Функция Ожидать(ВремяОжидания) Экспорт
    ТекВремя = ТекущаяДата();
	Пока ТекущаяДата() < ТекВремя + ВремяОжидания Цикл
	   ОжидатьДо20(ВремяОжидания-(ТекущаяДата()-ТекВремя));
    КонецЦикла;
    Возврат Истина;
КонецФункции

Функция ОжидатьДо20(ВремяОжидания) 
    
    Если ВремяОжидания <> 0 Тогда
        
        НастройкиПрокси = Новый ИнтернетПрокси(Ложь);
        НастройкиПрокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
        НастройкиПрокси.НеИспользоватьПроксиДляАдресов.Добавить("127.0.0.0");
        
        Попытка
            Loopback = Новый HTTPСоединение(
                "127.0.0.0",,,,НастройкиПрокси,
                ВремяОжидания);
            Loopback.Получить(Новый HTTPЗапрос());
			Возврат Истина;
        Исключение
            Возврат Ложь;
        КонецПопытки;
        
    КонецЕсли;
    
КонецФункции


Похожие публикации

Пауза, ожидание в коде

Пауза (БСП)

Модератору