0
Rebelx
09.11.12
✎
12:47
|
или я его не правильно понимаю?
Код процедуры:
Процедура ПроверкаСообщенийПользователюОтФоновыхЗаданий() Экспорт
ЕстьАктивныеЗадания = Ложь;
ОтключитьОбработчикОжидания("ПроверкаСообщенийПользователюОтФоновыхЗаданий");
СоединениеИнформационнойБазы = УК_ПолныеПрава_ПовтИспользование.ПолучитьСтруктуруСоединенияИнформационнойБазы();
Ключ = "" + Формат(СоединениеИнформационнойБазы.НомерСоединения, "ЧН=0; ЧГ=") + "," + Формат(СоединениеИнформационнойБазы.НачалоСоединения, "ДФ=ггггММддччммсс; ДП=00010101") + ", ";
НайденныеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Наименование", "Отправка почты"));
Для каждого Задание из НайденныеЗадания Цикл
Если Найти(Задание.Ключ, Ключ) = 1 тогда
// задание этого сеанса
ЕстьАктивныеЗадания = ЕстьАктивныеЗадания ИЛИ (Задание.Состояние = СостояниеФоновогоЗадания.Активно);
МассивСообщений = Задание.ПолучитьСообщенияПользователю(Истина);
Если МассивСообщений <> Неопределено тогда
Сообщить(МассивСообщений.Количество());
//Для Каждого Сообщение из МассивСообщений Цикл
// Сообщение.Сообщить();
//КонецЦикла;
КонецЕсли;
// дальше вроде как массивы должны быть пустые, однако - см.вывод
МассивСообщений = Задание.ПолучитьСообщенияПользователю(Ложь);
Если МассивСообщений <> Неопределено тогда
Сообщить(МассивСообщений.Количество());
КонецЕсли;
МассивСообщений = Задание.ПолучитьСообщенияПользователю();
Если МассивСообщений <> Неопределено тогда
Сообщить(МассивСообщений.Количество());
КонецЕсли;
МассивСообщений = Задание.ПолучитьСообщенияПользователю();
Если МассивСообщений <> Неопределено тогда
Сообщить(МассивСообщений.Количество());
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Если не все фоновые задания завершены - надо заново запустить проверку сообщений
Если ЕстьАктивныеЗадания тогда
ПодключитьОбработчикОжидания("ПроверкаСообщенийПользователюОтФоновыхЗаданий", 5, Истина);
КонецЕсли;
КонецПроцедуры
вывод:
1
1
1
1
Процедура вызывается при создании фоновового задания.
Таким образом при следующем вызове этой процедуры, т.е. если было запущено два задания - выводятся сообщения и первого задания и второго
и т.д.
Как же отсеять выданные пользователю сообщения и не выданные? Фильтровать тексты - не вариант. Сообщения могут повторяться.
Добавлять в сообщение ключи - не вариант. Источник сообщения в фоновом задании в общем случае не определен.
1С:Предприятие 8.2 (8.2.16.362)
|
|