|
131 | 131 | Карта_КоннекторНаКонтекст.Очистить(); |
132 | 132 | КонецПроцедуры |
133 | 133 |
|
134 | | -// Очистить завершенные контексты (заглушка для будущего расширения) |
| 134 | +// Очистить завершенные контексты |
| 135 | +// Проверяет статус фоновых заданий и освобождает соединения завершенных контекстов |
135 | 136 | // |
136 | 137 | Процедура ОчиститьЗавершенныеКонтексты() |
137 | | - // TODO: Реализовать проверку завершенных потоков/задач |
138 | | - // Пока оставляем пустой метод для совместимости |
| 138 | + Попытка |
| 139 | + // Проверяем наличие менеджера фоновых заданий |
| 140 | + Если ТипЗнч(ФоновыеЗадания) = Тип("МенеджерФоновыхЗаданий") Тогда |
| 141 | + |
| 142 | + // Получаем список активных фоновых заданий |
| 143 | + АктивныеЗадания = ФоновыеЗадания.ПолучитьЗадания(); |
| 144 | + ИдентификаторыАктивныхЗаданий = Новый Соответствие; |
| 145 | + |
| 146 | + Для Каждого Задание Из АктивныеЗадания Цикл |
| 147 | + ИдентификаторыАктивныхЗаданий[Строка(Задание.УникальныйИдентификатор)] = Истина; |
| 148 | + КонецЦикла; |
| 149 | + |
| 150 | + // Проверяем контексты и освобождаем соединения завершенных заданий |
| 151 | + КонтекстыДляУдаления = Новый Массив; |
| 152 | + |
| 153 | + Для Каждого Элемент Из Карта_КонтекстНаКоннектор Цикл |
| 154 | + КонтекстID = Элемент.Ключ; |
| 155 | + |
| 156 | + // Если контекст выглядит как идентификатор задания и задание завершилось |
| 157 | + Если СтрДлина(КонтекстID) = 36 И СтрНайти(КонтекстID, "-") > 0 Тогда |
| 158 | + Если ИдентификаторыАктивныхЗаданий.Получить(КонтекстID) = Неопределено Тогда |
| 159 | + // Задание завершилось, добавляем контекст в список для удаления |
| 160 | + КонтекстыДляУдаления.Добавить(КонтекстID); |
| 161 | + КонецЕсли; |
| 162 | + КонецЕсли; |
| 163 | + КонецЦикла; |
| 164 | + |
| 165 | + // Освобождаем соединения завершенных контекстов |
| 166 | + Для Каждого КонтекстID Из КонтекстыДляУдаления Цикл |
| 167 | + ОсвободитьКонтекст(КонтекстID); |
| 168 | + КонецЦикла; |
| 169 | + |
| 170 | + КонецЕсли; |
| 171 | + |
| 172 | + Исключение |
| 173 | + // Если возникла ошибка при работе с менеджером фоновых заданий, |
| 174 | + // продолжаем работу без очистки завершенных контекстов |
| 175 | + КонецПопытки; |
139 | 176 | КонецПроцедуры |
140 | 177 |
|
141 | 178 | // Создать новое соединение |
|
0 commit comments