Вывести сообщение или уведомление во время выполнения регламентного задания
Здравствуйте! Такой вопрос, сделал регламентное задание, мне нужно реализовать вывод сообщения во время его выполнения, нашел метод ПолучитьСообщенияПользователю(). Но не могу понять как с ним работать...подскажите кто сталкивался?
Код модуля:
Код модуля:
&НаСервере
Процедура ВыборкаДокументовБезРегистрации() Экспорт
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Ошибка тестовая";
Сообщение.Сообщить();
Ид = РегламентныеЗадания.ПолучитьРегламентныеЗадания()[68].УникальныйИдентификатор;
РЗ = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Ид);
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ВходящиеДокументы.Ссылка,
| ВходящиеДокументы.РегистрационныйНомер
|ИЗ
| Справочник.ВходящиеДокументы КАК ВходящиеДокументы";
Результат = Запрос.Выполнить().Выгрузить();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(Выборка.РегистрационныйНомер) Тогда
Сообщения = РЗ.ПолучитьСообщенияПользователю();// вот тут по идее должно быть сообщение, Сообщить() в регламентном задании соответственно не работает....как тут быть????
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Пример технического задания
- Универсальная система оповещений в базе или по почте по произвольным условиям, расписанием, ролям и пользователям (Расширение / конфигурация для платформ 8.3.6+, для ЛЮБЫХ баз)
- Обзор полезных методов БСП 3.1.4
- Поддержка пользователей [Alt+S] (подключаемое расширение)
- Возвращаемся с PostgreSQL на Microsoft SQL Server
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Для начала неплохо бы определиться какому пользователю Вы хотите сообщить что то, потом помня, что сервер про клиент ничего не знает, понять что нужно клиентом цепляться к серверу и получать сообщение, если оно есть на сервере, тоесть сохранять сообщения и получать их с клиента.
ПолучитьСообщенияПользователю
Для начала неплохо бы определиться какому пользователю Вы хотите сообщить что то, потом помня, что сервер про клиент ничего не знает, понять что нужно клиентом цепляться к серверу и получать сообщение, если оно есть на сервере, тоесть сохранять сообщения и получать их с клиента.
(1) Если конфигурация на БСП то велосипед изобретать не нужно.
// Запустить выполнение процедуры в фоновом задании, если это возможно.
// При выполнении любого из следующих условий запуск выполняется не в фоне, а сразу в основном потоке:
// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);
// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;
// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя;
// * если выполняется процедура модуля внешней обработки или внешнего отчета.
//
// Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание.
// Может применяться совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение.
//
// Параметры:
// ИмяПроцедуры - Строка - имя экспортной процедуры общего модуля, модуля менеджера объекта
// или модуля обработки, которую необходимо выполнить в фоне.
// Например, "МойОбщийМодуль.МояПроцедура", "Отчет.ЗагруженныеДанные.Сформировать"
// или "Обработка.ЗагрузкаДанных.МодульОбъекта.Загрузить".
// У процедуры может быть два или три формальных параметра:
// * Параметры - Структура - произвольные параметры ПараметрыПроцедуры;
// * АдресРезультата - Строка - адрес временного хранилища, в которое нужно
// поместить результат работы процедуры. Обязательно;
// * АдресДополнительногоРезультата - Строка - если в ПараметрыВыполнения установлен
// параметр ДополнительныйРезультат, то содержит адрес дополнительного временного
// хранилища, в которое нужно поместить результат работы процедуры. Опционально.
// При необходимости выполнить в фоне функцию, ее следует обернуть в процедуру,
// а ее результат возвращать через второй параметр АдресРезультата.
// ПараметрыПроцедуры - Структура - произвольные параметры вызова процедуры ИмяПроцедуры.
// ПараметрыВыполнения - Структура - см. функцию ПараметрыВыполненияВФоне.
//
// Возвращаемое значение:
// Структура - параметры выполнения задания:
// * Статус - Строка - "Выполняется", если задание еще не завершилось;
// "Выполнено", если задание было успешно выполнено;
// "Ошибка", если задание завершено с ошибкой;
// "Отменено", если задание отменено пользователем или администратором.
// * ИдентификаторЗадания - УникальныйИдентификатор - если Статус = "Выполняется", то содержит
// идентификатор запущенного фонового задания.
// * АдресРезультата - Строка - адрес временного хранилища, в которое будет
// помещен (или уже помещен) результат работы процедуры.
// * АдресДополнительногоРезультата - Строка - если установлен параметр ДополнительныйРезультат,
// содержит адрес дополнительного временного хранилища,
// в которое будет помещен (или уже помещен) результат работы процедуры.
// * КраткоеПредставлениеОшибки - Строка - краткая информация об исключении, если Статус = "Ошибка".
// * ПодробноеПредставлениеОшибки - Строка - подробная информация об исключении, если Статус = "Ошибка".
//
Функция ВыполнитьВФоне(Знач ИмяПроцедуры, Знач ПараметрыПроцедуры, Знач ПараметрыВыполнения) Экспорт
Показать// Регистрирует информацию о ходе выполнения фонового задания.
// В дальнейшем ее можно считать при помощи функции ПрочитатьПрогресс.
//
// Параметры:
// Процент - Число - Необязательный. Процент выполнения.
// Текст - Строка - Необязательный. Информация о текущей операции.
// ДополнительныеПараметры - Произвольный - Необязательный. Любая дополнительная информация,
// которую необходимо передать на клиент. Значение должно быть простым (сериализуемым в XML строку).
//
Процедура СообщитьПрогресс(Знач Процент = Неопределено, Знач Текст = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
Показать// Получает сообщения пользователю, отфильтровывает служебные сообщения о состоянии длительной операции.
//
// Параметры:
// УдалятьПолученные - Булево - Признак необходимости удаления полученных сообщений.
// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания.
//
// Возвращаемое значение:
// Массив - ФиксированныйМассив - Массив объектов СообщениеПользователю, которые были сформированы в
// фоновом задании.
Функция СообщенияПользователю(УдалятьПолученные = Ложь, ИдентификаторЗадания = Неопределено) Экспорт
Показать
Чтобы определиться с решением задачи, думаю сначала надо ответить на несколько вопросов: Что делает регламентное задание? Что происходит по итогу его выполнения? Для чего пользователю показывать сообщение? Если это регламентное задание, то оно выполняется само, где в этот момент должен находиться пользователь, как он должен увидеть это сообщение? Может быть процедуру надо выполнять не через регламентное задание?
(8) У нас есть запрос, из него выбираются документы. данные в регистр у меня пишутся. но мне нужно чтобы у меня выводилось после этого сообщение типо "Имеется незарегистрированный документ" + ссылка. По регламентному заданию регистр у меня обновляется...а вот как вывести сообщение в фоновом задании я не знаю к сожалению.
(9)
так регламентное или фоновое ?
Регламентное - стартует и выполняется само, по расписанию, в принципе без участия пользователя.
А вот фоновое, схоже с регламентным, но запустить его можно из сеанса, для выполнения чего либо, чтобы не тормозить сеанс. Вот в фоновом - никаких регистров городить не нужно, достаточно поместить результат работы во временное хранилище, и получить на клиенте. Так все отчеты выполняются.
А если это именно регламентное, тогда да, какой то регистр городить надо.
а вот как вывести сообщение в фоновом задании я не знаю к сожалению
так регламентное или фоновое ?
Регламентное - стартует и выполняется само, по расписанию, в принципе без участия пользователя.
А вот фоновое, схоже с регламентным, но запустить его можно из сеанса, для выполнения чего либо, чтобы не тормозить сеанс. Вот в фоновом - никаких регистров городить не нужно, достаточно поместить результат работы во временное хранилище, и получить на клиенте. Так все отчеты выполняются.
А если это именно регламентное, тогда да, какой то регистр городить надо.
(11) по разному пробовал, вообще изначально хотелось бы чтобы было регламентное...сделал его предопределенным...в регистр данные пишет...видимо просто надо будет выводить измерения в виде сообщения через обработчик. просто получается что надо будет его определить в модуле управляемого приложения...я так понимаю только там он сможет отработать при запуске сеанса и повторяться через определенное время?
(15) В унф знаю есть такой механизм, как напоминания, создаётся для документов событий, записывается в определенный регистр сведений и потом напоминалка выводится для указанного пользователя. Может быть рассмотреть и взять за основу этот вариант? Я правда не знаю, в бсп это включено или нет.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот