Доброго времени суток.
Платформа 8.3 (8.3.17.1496)
Конфигурация Бухгалтерия предприятия, редакция 2.0 (2.0.66.140)

Не могу понять почему не отрабатывает таймаут в функции ФоновыеЗадания.ОжидатьЗавершенияВыполнения

ОжидатьЗавершенияВыполнения (WaitForExecutionCompletion)
Доступен, начиная с версии 8.3.13.
Синтаксис:
ОжидатьЗавершенияВыполнения(<ФоновыеЗадания>, <Таймаут>)
Параметры:
<ФоновыеЗадания> (обязательный)
Тип: Массив.
Массив фоновых заданий, завершение которых требуется ожидать.
<Таймаут> (необязательный)
Тип: Число.
Таймаут в секундах ожидания завершения заданий. Если таймаут не задан, ожидание будет длиться до завершения всех заданий, или до первого аварийного завершения задания.

```1c
    Процедура ВыгрузкаPBI_ЗапускЗаданийФоново(МассивПараметров, ВремяОжиданияСек) Экспорт
    МассивЗапущенныхЗаданий = Новый Массив;
    МассивЗапущенныхЗаданий.Добавить(ФоновыеЗадания.Выполнить("DIS_ФоновыеЗадания.ВыгрузкаPBI_OLAP_FP", МассивПараметров, , "ВыгрузкаPBI_OLAP_FP"));
    МассивЗапущенныхЗаданий.Добавить(ФоновыеЗадания.Выполнить("DIS_ФоновыеЗадания.ВыгрузкаPBI_KoefTip", МассивПараметров, , "ВыгрузкаPBI_KoefTip"));

    ТаймаутСек = 10;
    ЗаданияВыполняются = истина;
    Пока ЗаданияВыполняются и ВремяОжиданияСек >= 0 цикл
    ЗаданияВыполняются = Ложь;
    СостоянияФоновыхЗаданий = ФоновыеЗадания.ОжидатьЗавершенияВыполнения(МассивЗапущенныхЗаданий, ТаймаутСек);
    ВремяОжиданияСек = ВремяОжиданияСек - ТаймаутСек;
    Сообщить(Строка(ТекущаяДата()) + " осталось времени ожидания " + ВремяОжиданияСек + " сек.");
    Для Каждого ФоновоеЗадание Из СостоянияФоновыхЗаданий Цикл
    Если ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
    ЗаданияВыполняются = истина;
    Прервать; //Нашли хоть 1 активный, ждем дальше
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецПроцедуры
```

Таймаут = 10 сек, ВремяОжиданияСек = 600 сек, но весь цикл выполняется в течение 1 сек, хотя должен 10 мин.
---
Вопрос снимается..
Если таймаут не задан, ожидание будет длиться до завершения всех заданий, или до первого аварийного завершения задания.

Это правило работает и если таймер задан, т.е. если в массиве заданий есть хоть одно не активное задание, задержку по таймеру игнорирует((
---
Вопрос снимается..
Если таймаут не задан, ожидание будет длиться до завершения всех заданий, или до первого аварийного завершения задания.

Это правило работает и если таймер задан, т.е. если в массиве заданий есть хоть одно не активное задание, задержку по таймеру игнорирует((
---
Переделала цикл, добавила удаление неактивных заданий. Теперь таймаут отрабатывает и время выполнения уменьшилось в 2 раза.

```1c
    Таймаут = 10;
    МаксВремяЗавершения = ТекущаяДата() + ВремяОжиданияСек;
    ЗаданияВыполняются = истина;
    Пока ЗаданияВыполняются и МаксВремяЗавершения >= ТекущаяДата() цикл
    ЗаданияВыполняются = Ложь;
    МассивЗапущенныхЗаданий = ФоновыеЗадания.ОжидатьЗавершенияВыполнения(МассивЗапущенныхЗаданий, Таймаут);
    КоличествоЗаданий = МассивЗапущенныхЗаданий.Количество();
    Для ОбратныйИндекс = 1 по КоличествоЗаданий цикл
    ТекИнд = КоличествоЗаданий - ОбратныйИндекс;
    ФоновоеЗадание = МассивЗапущенныхЗаданий[ТекИнд];
    Если ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
    ЗаданияВыполняются = истина;
    Иначе
    МассивЗапущенныхЗаданий.Удалить(ТекИнд);
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
Добрый день!

Видимо, этот момент исправили. В платформе 8.3.20.1674 поток, вызвавший ФоновыеЗадания.ОжидатьЗавершенияВыполнения() - возобновляется при завершении хотя бы одного из фоновых заданий. И не важно, успешно оно завершилось или аварийно.
---
Видимо, этот момент исправили.

это так с 8.13 и было

Ожидает завершения всех фоновых заданий из списка. Если хотя бы у одного задания изменился статус или время ожидания истекло, то возвращается обновленный список фоновых заданий.