Сообщение пользователю и фоновое задание
Добрый день! Бухгалтерия 3.0.53.38 платформа 8.3.10.2580 файловый вариант БД. Хочу что бы после заполнения отчета РегламентированныйОтчетИмущество, выдавало сообщение пользователю о сумме остаточной стоимости по разделу 2.1. В модуле УправлениеВнеоборотнымиАктивами в процедуре ЗаполнитьОтчетИмуществоФормаОтчета2017Кв4 добавила код:
Далее в модуле формы ФормаОтчета2017Кв4 в функцию было добавлено
И сообщение не выводится( Подскажите пожалуйста как можно вывести сообщения фонового задания?
// Заполнение раздела 2.1
ТЗСуммаОстаточнойСтоимостиРаздела_2_1 = Новый ТаблицаЗначений;
ТЗСуммаОстаточнойСтоимостиРаздела_2_1.Колонки.Добавить("ОстаточнаяСтоимость");
Пока Выборка.Следующий() Цикл
........
........
Стр = ТЗСуммаОстаточнойСтоимостиРаздела_2_1.Добавить();
Стр.ОстаточнаяСтоимость = Выборка.ОстаточнаяСтоимостьНа3112;
КонецЦикла;
СуммаОСИтого = ТЗСуммаОстаточнойСтоимостиРаздела_2_1.Итог("ОстаточнаяСтоимость");
Сообщить(НСтр("ru='Остаточная стоимость по Разделу 2.1: '" + СуммаОСИтого));
ПоказатьДалее в модуле формы ФормаОтчета2017Кв4 в функцию было добавлено
&НаСервере
Функция ПроверитьВыполнениеЗадания()
Если ДлительныеОперации.ЗаданиеВыполнено(СтруктураРеквизитовФормы.ИдентификаторЗадания) Тогда
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(СтруктураРеквизитовФормы.ИдентификаторЗадания);
МассивСообщений = Задание.ПолучитьСообщенияПользователю();
Для Каждого Сообщение Из МассивСообщений Цикл
Сообщение.Сообщить();
КонецЦикла;
ЗагрузитьПодготовленныеДанные();
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
ПоказатьИ сообщение не выводится( Подскажите пожалуйста как можно вывести сообщения фонового задания?
По теме из базы знаний
- Выполнение произвольного кода в фоновых заданиях
- Отслеживание выполнения фонового задания
- Запуск фонового задания во внешней обработке. Отключение предупреждений защиты от опасных действий в фоновом задании
- Фоновое задание с произвольной выборкой и произвольной обработкой
- Эффективное управление фоновыми заданиями и коммуникация сеансов сервера с Фоном с помощью Структуры обмена (ноу-хау) + Бонус: Альтернативный вариант через Хранилище настроек
Найденные решения
(15) А ПроверитьВыполнениеЗадания() - это метод формы отчета? Тогда попробуй так:
Для Каждого Сообщение Из МассивСообщений Цикл
ПроксиСообщение = Новый СообщениеПользователю;
ПроксиСообщение.ИдентификаторНазначения = УникальныйИдентификатор;
ПроксиСообщение.Текст = Сообщение.Текст;
ПроксиСообщение.Сообщить();
КонецЦикла;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
ФоновоеЗадание.ПолучитьСообщенияПользователю (BackgroundJob.GetUserMessages)
ФоновоеЗадание (BackgroundJob)
ПолучитьСообщенияПользователю (GetUserMessages)
Описание:
Получает массив объектов СообщениеПользователю, которые были выведены в процессе работы фонового задания. Получение сообщений может выполняться как в процессе работы задания, так и по его завершении.
ФоновоеЗадание.ПолучитьСообщенияПользователю (BackgroundJob.GetUserMessages)
ФоновоеЗадание (BackgroundJob)
ПолучитьСообщенияПользователю (GetUserMessages)
Описание:
Получает массив объектов СообщениеПользователю, которые были выведены в процессе работы фонового задания. Получение сообщений может выполняться как в процессе работы задания, так и по его завершении.
Попробуйте в первом блоке кода заменить Сообщить() на ОбщегоНазначенияКлиентСервер.СообщитьПользователю().
Я вовсе не уверен что Сообщить() подменяется платформой на полноценное "СообщениеПользователю". Оно ведь просто по наследству от толстого клиента осталось.
Я вовсе не уверен что Сообщить() подменяется платформой на полноценное "СообщениеПользователю". Оно ведь просто по наследству от толстого клиента осталось.
(6) Во втором блоке кода тоже нужно заменить на СообщениеПользователю.
Т.е. в фоновом задании нужно выводить через него, и потом на сервере через него же и ретранслировать.
Иначе на клиента не попадут.
Не, не то говорю. Попробуйте при ретрансляции не
Сообщение.Сообщить() по сообщению из массива, а создавать новые сообщения пользователю:
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Сообщение.Текст)
Т.е. в фоновом задании нужно выводить через него, и потом на сервере через него же и ретранслировать.
Иначе на клиента не попадут.
Не, не то говорю. Попробуйте при ретрансляции не
Сообщение.Сообщить() по сообщению из массива, а создавать новые сообщения пользователю:
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Сообщение.Текст)
(15) А ПроверитьВыполнениеЗадания() - это метод формы отчета? Тогда попробуй так:
Для Каждого Сообщение Из МассивСообщений Цикл
ПроксиСообщение = Новый СообщениеПользователю;
ПроксиСообщение.ИдентификаторНазначения = УникальныйИдентификатор;
ПроксиСообщение.Текст = Сообщение.Текст;
ПроксиСообщение.Сообщить();
КонецЦикла;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот