|
|
#1 |
|
Участник
|
Отправка оповещений
Появилась необходимость отправлять оповещения не на пользователя, указанного в параметрах созданного оповещения, а пользователя, указанного в данных, для которых сгенерировано оповещение. Раскопал, что рассылка оповещений реализована в классах EventActionAlert и EventActionEMail. Изменил метод execute. Это позволило справиться с рассылкой на email, но системное оповещения так и приходят пользователю, указанному в параметрах оповещения. Не пойму, где генерируется системное оповещение (корректировка метода execute класса EventActionAlert tyt помогла). Кто-то занимался подобным? Очень нужно
|
|
|
|
|
#2 |
|
Участник
|
а версия аксапты какая?
|
|
|
|
|
#3 |
|
Участник
|
А какое у вас значение UserId в соотвествующей записи inbox ?
Вы в execute только получателя имейла меняете, или сразу подставляете другой UserInfo ?
__________________
_databaseTransDelete ... bl@$ ! |
|
|
|
|
#4 |
|
Участник
|
Раширяли оповещения: добавляли формирование по группе пользователей, делали упрощенный интерфейс формирования оповещений из кода напрямую. Как именно модифицировали указанный метод?
__________________
Ivanhoe as is.. |
|
|
|
|
#5 |
|
Участник
|
AX 4.0.
В классе EventActionEmail делаю следующее: if(.............) { userInfo_Resp = SysUserInfo::find(alertBuffer.ResponsibleId); SysEmailTable::sendMail(eventParameters.AlertTemplateId,userInfo_Resp.Language,userInfo_Resp.Email,mappings,'',xmlParameters,true,userInfo_Resp.Id,true); } else SysEmailTable::sendMail(eventParameters.AlertTemplateId,userInfo.Language,userInfo.Email,mappings,'',xmlParameters,true,eventRule.UserId,true); В классе EventActionAlert: if(.......) userInfo = SysUserInfo::find(eventRule.UserId); else { alertBuffer = inbox.alertBuffer(); userInfo = SysUserInfo::find(alertBuffer.ResponsibleId); } inboxId = EventInbox::nextEventId(); inbox.initValue(); inbox.initFromEventRule(eventRule); if(...........) inbox.UserId = alertBuffer.ResponsibleId; inbox.InboxId = inboxId; ........... Последний раз редактировалось _AxDevel_; 26.05.2009 в 09:44. |
|
|
|
|
#6 |
|
Участник
|
Цитата:
Попутный вопрос - вы поле ResponsibleId добавили во все таблицы, по которым возможно формирование оповещений (иначе, мне кажется, будут проблемы)?
__________________
Ivanhoe as is.. |
|
|
|
|
#7 |
|
Участник
|
Поле не во всех таблицах, я этот момент обрабатываю. Здесь привёл упрощённый код.
|
|
|
|
|
#8 |
|
Участник
|
Мне вообще интересно следующее, если оповещение отсылается по email, то почему ещё внутрисистемное оповещение выдаётся?
|
|
|
|
|
#9 |
|
Участник
|
Не помогло, так и сыпятся внутрисистемные оповещения не туда.
|
|
|
|
|
#10 |
|
Участник
|
А куда?
Даже интересно стало у вас же дальше идет инсерт в таблицу EventInbox (может до инсерта или на инсерте кто-то балуется?) Если просто перед инсертом явно задать Inbox.UserId = 'admin' - тоже не сработает?
__________________
Ivanhoe as is.. |
|
|
|
|
#11 |
|
Участник
|
|
|
|
|
|
#12 |
|
Участник
|
Я так понимаю, все это время мы говорили про EventActionAlert.execute() - нет? Вот просто открыл метод, вставил Inbox.UserId = 'admin', запустил оповещения - получил оповещение. Не понимаю почему у вас не работает.
__________________
Ivanhoe as is.. |
|
|
|
|
#13 |
|
Участник
|
Цитата:
Когда передо мной стояла такая задача, я просто скопировал execute к себе в класс отдельным методом и там устанавливал то что нужно, системные классы остались вообще нетронутыми.
__________________
_databaseTransDelete ... bl@$ ! |
|
|
|
|
#14 |
|
Участник
|
Набросал примерчик (сильно не придирайтесь, я не программист), может кому полезно будет как отправная точка:
1. В форме создания / просмотра оповещений для админа доступна галка "Адресат в исходных данных", если ее поставить, то можно указать название поля (из АОТ) таблицы, по которой генерится оповещение, в поле "Поле с адресатом" (например, поле Id для таблицы UserInfo). 2. При формировании оповещения / почтового сообщения, если стоит эта галка и указано поле адресата, оповещение / почта генерятся на пользователя, указанного в поле "Поле с адресатом" исходной таблицы. Основные ограничения примера: нет проверки указанного поля (и лукапа по полям таблицы); нет проверки, что такой пользователь существует; Возможное развитие - снятие указанных ограничений, обработка типа поля (например для пользователей - берем значение поля в исходных данных, а для сотрудника - ищем соответствующего пользователя). DAX 4.0 SP2 EE
__________________
Ivanhoe as is.. |
|
|
|
| За это сообщение автора поблагодарили: _AxDevel_ (1). | |
|
|
#15 |
|
Участник
|
Цитата:
Сообщение от Ivanhoe
Набросал примерчик (сильно не придирайтесь, я не программист), может кому полезно будет как отправная точка:
1. В форме создания / просмотра оповещений для админа доступна галка "Адресат в исходных данных", если ее поставить, то можно указать название поля (из АОТ) таблицы, по которой генерится оповещение, в поле "Поле с адресатом" (например, поле Id для таблицы UserInfo). 2. При формировании оповещения / почтового сообщения, если стоит эта галка и указано поле адресата, оповещение / почта генерятся на пользователя, указанного в поле "Поле с адресатом" исходной таблицы. Основные ограничения примера: нет проверки указанного поля (и лукапа по полям таблицы); нет проверки, что такой пользователь существует; Возможное развитие - снятие указанных ограничений, обработка типа поля (например для пользователей - берем значение поля в исходных данных, а для сотрудника - ищем соответствующего пользователя). DAX 4.0 SP2 EE Делал как alertBuffer = alertInbox.alertBuffer(); Хотя на тот момент alertinbox пусть. нужно было брать параметр buffer из параметров метода execute. Всем спасибо. |
|
|
| Теги |
| notification, оповещения, системное оповещение, ax4.0 |
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Отправка сообщения ? | 3 | |||
| Настройка оповещений | 10 | |||
| Отправка отчета по имейлу | 1 | |||
| Система оповещений в Аксапте (события в Аксапте) | 1 | |||
| Axapta 3, отправка файлов по eMail (КАК ИСПРАВИТЬ) | 1 | |||
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|