AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.05.2009, 18:19   #1  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
Отправка оповещений
Появилась необходимость отправлять оповещения не на пользователя, указанного в параметрах созданного оповещения, а пользователя, указанного в данных, для которых сгенерировано оповещение. Раскопал, что рассылка оповещений реализована в классах EventActionAlert и EventActionEMail. Изменил метод execute. Это позволило справиться с рассылкой на email, но системное оповещения так и приходят пользователю, указанному в параметрах оповещения. Не пойму, где генерируется системное оповещение (корректировка метода execute класса EventActionAlert tyt помогла). Кто-то занимался подобным? Очень нужно
Старый 25.05.2009, 19:55   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
а версия аксапты какая?
__________________
полезное на axForum, github, vk, coub.
Старый 25.05.2009, 20:36   #3  
DTD is offline
DTD
Участник
 
183 / 18 (1) ++
Регистрация: 09.08.2005
А какое у вас значение UserId в соотвествующей записи inbox ?

Вы в execute только получателя имейла меняете, или сразу подставляете другой UserInfo ?
__________________
_databaseTransDelete ... bl@$ !
Старый 26.05.2009, 08:44   #4  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Раширяли оповещения: добавляли формирование по группе пользователей, делали упрощенный интерфейс формирования оповещений из кода напрямую. Как именно модифицировали указанный метод?
__________________
Ivanhoe as is..
Старый 26.05.2009, 09:32   #5  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
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.
Старый 26.05.2009, 09:56   #6  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от _AxDevel_ Посмотреть сообщение
AX 4.0.
inbox.initValue();
inbox.initFromEventRule(eventRule);
if(...........)
inbox.UserId = alertBuffer.ResponsibleId;
...........
Вот этого должно быть достаточно. У вас в этом месте правильно заполняется код пользователя?

Попутный вопрос - вы поле ResponsibleId добавили во все таблицы, по которым возможно формирование оповещений (иначе, мне кажется, будут проблемы)?
__________________
Ivanhoe as is..
Старый 26.05.2009, 10:14   #7  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
Поле не во всех таблицах, я этот момент обрабатываю. Здесь привёл упрощённый код.
Старый 26.05.2009, 10:19   #8  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
Мне вообще интересно следующее, если оповещение отсылается по email, то почему ещё внутрисистемное оповещение выдаётся?
Старый 26.05.2009, 10:30   #9  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Вот этого должно быть достаточно. У вас в этом месте правильно заполняется код пользователя?

Попутный вопрос - вы поле ResponsibleId добавили во все таблицы, по которым возможно формирование оповещений (иначе, мне кажется, будут проблемы)?
Не помогло, так и сыпятся внутрисистемные оповещения не туда.
Старый 26.05.2009, 12:02   #10  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А куда?

Даже интересно стало у вас же дальше идет инсерт в таблицу EventInbox (может до инсерта или на инсерте кто-то балуется?) Если просто перед инсертом явно задать Inbox.UserId = 'admin' - тоже не сработает?
__________________
Ivanhoe as is..
Старый 26.05.2009, 12:22   #11  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
А куда?

Даже интересно стало у вас же дальше идет инсерт в таблицу EventInbox (может до инсерта или на инсерте кто-то балуется?) Если просто перед инсертом явно задать Inbox.UserId = 'admin' - тоже не сработает?
А вообще нужно лезть в EventActionAlert?
Старый 26.05.2009, 12:33   #12  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Я так понимаю, все это время мы говорили про EventActionAlert.execute() - нет? Вот просто открыл метод, вставил Inbox.UserId = 'admin', запустил оповещения - получил оповещение. Не понимаю почему у вас не работает.
__________________
Ivanhoe as is..
Старый 26.05.2009, 12:44   #13  
DTD is offline
DTD
Участник
 
183 / 18 (1) ++
Регистрация: 09.08.2005
Цитата:
Сообщение от _AxDevel_ Посмотреть сообщение
Мне вообще интересно следующее, если оповещение отсылается по email, то почему ещё внутрисистемное оповещение выдаётся?
Уберите галочки EventRule(EventRule).ShowPopup в настройках правила, и проверьте значение SysUserInfo(SysUserInfo).EventPopUpDisplayWhen, этот параметр перезатирает индивидуальные установки.

Когда передо мной стояла такая задача, я просто скопировал execute к себе в класс отдельным методом и там устанавливал то что нужно, системные классы остались вообще нетронутыми.
__________________
_databaseTransDelete ... bl@$ !
Старый 26.05.2009, 17:24   #14  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Набросал примерчик (сильно не придирайтесь, я не программист), может кому полезно будет как отправная точка:

1. В форме создания / просмотра оповещений для админа доступна галка "Адресат в исходных данных", если ее поставить, то можно указать название поля (из АОТ) таблицы, по которой генерится оповещение, в поле "Поле с адресатом" (например, поле Id для таблицы UserInfo).
2. При формировании оповещения / почтового сообщения, если стоит эта галка и указано поле адресата, оповещение / почта генерятся на пользователя, указанного в поле "Поле с адресатом" исходной таблицы.

Основные ограничения примера: нет проверки указанного поля (и лукапа по полям таблицы); нет проверки, что такой пользователь существует;
Возможное развитие - снятие указанных ограничений, обработка типа поля (например для пользователей - берем значение поля в исходных данных, а для сотрудника - ищем соответствующего пользователя).

DAX 4.0 SP2 EE
Вложения
Тип файла: xpo SharedProject_IF_Event2AnyUser.xpo (192.2 Кб, 219 просмотров)
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: _AxDevel_ (1).
Старый 26.05.2009, 18:15   #15  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Набросал примерчик (сильно не придирайтесь, я не программист), может кому полезно будет как отправная точка:

1. В форме создания / просмотра оповещений для админа доступна галка "Адресат в исходных данных", если ее поставить, то можно указать название поля (из АОТ) таблицы, по которой генерится оповещение, в поле "Поле с адресатом" (например, поле Id для таблицы UserInfo).
2. При формировании оповещения / почтового сообщения, если стоит эта галка и указано поле адресата, оповещение / почта генерятся на пользователя, указанного в поле "Поле с адресатом" исходной таблицы.

Основные ограничения примера: нет проверки указанного поля (и лукапа по полям таблицы); нет проверки, что такой пользователь существует;
Возможное развитие - снятие указанных ограничений, обработка типа поля (например для пользователей - берем значение поля в исходных данных, а для сотрудника - ищем соответствующего пользователя).

DAX 4.0 SP2 EE
Спасибо. Оказалось всё банально. Я неправильно получал данные, для которых создаётся оповещение.
Делал как alertBuffer = alertInbox.alertBuffer();
Хотя на тот момент alertinbox пусть. нужно было брать параметр buffer из параметров метода execute. Всем спасибо.
Теги
notification, оповещения, системное оповещение, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отправка сообщения ? AndrianG DAX: Администрирование 3 15.05.2009 13:01
Настройка оповещений Zuek DAX: База знаний и проекты 10 11.11.2008 11:42
Отправка отчета по имейлу DTD DAX: Программирование 1 12.09.2006 16:12
Система оповещений в Аксапте (события в Аксапте) raunio DAX: Прочие вопросы 1 29.09.2005 15:44
Axapta 3, отправка файлов по eMail (КАК ИСПРАВИТЬ) raz DAX: Программирование 1 01.10.2003 15:07
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:58.