|
Фоновые задания и сообщения... | ☑ | ||
---|---|---|---|---|
0
ДенисЧ
24.09.12
✎
12:31
|
Есть процедурка в общем серверном модуле.
&НаСервере Процедура ТестФоновоеЗадание(мДанные) Экспорт Сообщ = Новый СообщениеПользователю; сообщ.Текст = "Старт"; сообщ.Сообщить(); КонецПроцедуры Запускаю фоновое задание Перем Задача; Процедура КнопкаВыполнитьНажатие(Кнопка) ПодключитьОбработчикОжидания("Ожидание", 10); Задача = ФоновыеЗадания.Выполнить("Мой_Производство.ТестФоновоеЗадание"); Ожидание(); КонецПроцедуры Процедура Ожидание() Сообщить("Читаем сообщения..."); сообщ = Задача.ПолучитьСообщенияПользователю(Ложь); Если сообщ = Неопределено Тогда Сообщить("ПУсто"); Возврат ; КонецЕсли; Если сообщ.Количество() > 0 Тогда Для каждого с из сообщ Цикл Сообщить("" + с); КонецЦикла; Иначе Сообщить("Ничего нет"); КонецЕсли; КонецПроцедуры В результате имею "Пусто", никаких сообщений наружу не вылезает... Вообще, это должно работать? |
|||
1
rs_trade
24.09.12
✎
12:31
|
(0) сервер молча читает твои сообщения. а что читает, тебе не скажет.
|
|||
2
HouseCD
24.09.12
✎
12:36
|
Можно воспользоваться методом фонового задания ПолучитьСообщенияПользователю()
|
|||
3
ДенисЧ
24.09.12
✎
12:38
|
(2) А я каким пользуюсь?
|
|||
4
HouseCD
24.09.12
✎
12:48
|
Сори, не заметил код. Метод Выполнить() у менеджера фонового задания доступен только на сервере, как и ПолучитьСообщенияПользователю(). Есть подозрение, что оно вообще не создается...
|
|||
5
ДенисЧ
24.09.12
✎
12:56
|
(4) оно создаётся и выполняется, если верить консоли заданий. И попытке динамического обновления... И журналу регистрации.
Да, клиент у меня толстый, в обычных формах. |
|||
6
HouseCD
24.09.12
✎
13:00
|
Передавай задачу в качестве параметра методу Ожидание(), не используй переменную. Дело в том, что пока ты был на клиенте и инициализировал переменную, потом пока сходил на сервер, ее уже не стало на клиенте
|
|||
7
ДенисЧ
24.09.12
✎
13:05
|
(6) А как параметр передам в обработку ожидания?
Более того, я специально циклил задачу, чтобы она не заканичвалась. Тогда ПолучитьСообщенияПользователю() Возвращает пустой массив, а не неопределено |
|||
8
Jaap Vduul
24.09.12
✎
13:06
|
По-моему, в толстом не работает.
|
|||
9
HouseCD
24.09.12
✎
13:12
|
В данном примере процедура Ожидание() просто вызывается при нажатии..
Тут еще вот что еще может быть, метод ПолучитьСообщенияПользователю() отрабатывает и во время выполнения фонового задания, т.е. к моменту вызова, фоновое задание может быть еще не завершено. Можно попробовать вызвать одноименный метод глобального контекста. |
|||
10
pumbaEO
24.09.12
✎
13:14
|
Я сообщения передаю через временноехранилище, при фоновом проведении .
|
|||
11
ДенисЧ
24.09.12
✎
13:22
|
(9) В приведенном примере Ожидание() срабатывает и при нажатии, и после.
(10) Не совсем понял мысль, можешь пояснить? |
|||
12
pumbaEO
24.09.12
✎
13:27
|
Создаю временное хранилище, его адрес передаю в фоновое задание как параметр, фоновое задание результат своей работы пишет в по адресу во временное хранилище, периодически извлекаю данные из временного хранилища.
|
|||
13
ДенисЧ
24.09.12
✎
13:35
|
(12) Ага. Попробую.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |