1CLenta.ru  

Пауза, задержка времени, при выполнении кода 1С

Программирование системы     30.07.2016 12:18     34140

Задержку времени в 1С можно реализовать с помощью COM объекта "WScript.Shell" или на встроенном языке.

Задержка времени на встроенном языке 1С


На встроенном языке 1С можно написать цикл с проверкой даты и времени. Данный метод является более универсальным.

Процедура ПаузаПустымЦиклом(Секунды)

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

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


Задержка времени на "WScript.Shell"


Данный объект позволяет выполнять различные сценарии в операционной системе Windows. Недостаток данного подхода - это при выполнении команд открывается консольное окно. Метод Timeout запускает цикл который автоматически будет остановлен через заданное количество секунд.

Процедура TimeoutWScript(Секунды)

WScript = Новый COMОбъект("WScript.Shell");
WScript.Run("timeout /t " + Секунды, 0, Ложь);

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

Комментарии (1)

1. EvgeTrofi  19.05.2023 20:34  
Пауза штатными средствами, где ОбщегоНазначения.Пауза - это эта-же процедура. Вызывает саму себя в фоне и ждёт выполнение фонового задания.
Кросплатформенное решение. Не вешает систему.


// Останавливает выполнение кода на заданное время.
//
// Параметры:
// Секунд - Число - время ожидания в секундах.
//
Процедура Пауза(Секунд) Экспорт

ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы();
ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание();

Если ФоновоеЗадание = Неопределено Тогда
Параметры = Новый Массив;
Параметры.Добавить(Секунд);
ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбщегоНазначения.Пауза", Параметры);
ФоновоеЗадание.ОжидатьЗавершенияВыполнения();
Иначе
ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд);
КонецЕсли;

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