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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2009, 19:33   #1  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Программное создание оповещения.
Прежде всего: поиск использовал. Понял, что копать нужно в сторону EventActionAlert.
Вопрос 1: у метода execute упомянутого класса каков смысл 3ьего аргумента Common buffer ? (это на случай если мы изменяем какую-либо таблицу и настроено правило оповещения в случае оного?)
Вопрос 2: если я правильно заполню и передам все нужные методу аргументы, он отработает и заполнит EventInbox и EventInboxData буфера, приведет ли это к автоматическому инвокейшену алерта? Подозреваю, что да, что EventAlertInbox форма сканит наличие новых рекордов в EventInbox и выбрасывает оповещения в случае наличия оных. Но все-таки, хотелось бы уточнить полный фреймворк для создания\отработки алертов. Если вдруг кто-то сможет вкратце рассказать или ткнет носом в ссылку, буду очень признателен!
UPD: кажется, уже нашел то, что нужно, но все же, если кто-то сможет в деталях объяснить сам фреймворк или же поделиться ссылкой, буду рад.
__________________
Axapta has seduced me deadly!

Последний раз редактировалось HorrR; 03.12.2009 в 19:53.
Старый 11.12.2009, 16:47   #2  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Готовый джоб для создания оповещения из кода DAX 4.0, для 2009 понадобятся модификации в полях EventInbox и contextInfo - 2 версия отличается по составу:

X++:
static void Ivanhoe_CreateAlert(Args _args)
{
    LedgerTable             lt;
    Args                    args;
    Query                   q = new Query();
    QueryBuildDataSource    qbds;
    Common                  record;
    str                     name;
    EventInbox              ei;
    EventInboxData          eid;
    EventType               eventType;
    EventContextInfo        contextInfo;
    EventTypeValue          typeValue;
    container               cont;
    List                    list;
    ;
    ttsbegin;
    ei.clear();
    ei.initValue();
    ei.InboxId              = EventInbox::nextEventId();
    ei.UserId               = "Admin";  // пользователь
    ei.Subject              = "Тема!!!"; // тема
    ei.Message              = "Сообщение"; // сообщение
    ei.AlertedFor           = "В связи с событием"; // в связи с чем оповещение
    ei.AlertCreatedDate     = systemdateget();
    ei.AlertCreateTime      = timenow();
    ei.TypeId               = classnum(EventTypeCUD);
    ei.AlertTableId         = tableNum(LedgerTable);  // таблица записи
    ei.AlertFieldId         = fieldNum(LedgerTable, AccountName); // поле которое изменилось
    ei.AlertFieldLabel      = "Наименование";
    ei.ParentTableId        = ei.AlertTableId;
    ei.TypeTrigger          = EventTypeTrigger::FieldChanged;
    ei.ShowPopup            = NoYes::Yes; // показывать оповещение
    ei.SendEmail            = NoYes::No; // отсылать почту.
    ei.EmailRecipient       = ""; //Почтовый адрес.
    select firstonly lt where lt.AccountNum == '01.000'; // запись которую будем потом показывать
    list                = SysDictTable::getUniqueIndexFields(lt.TableId);
    if (list)
    {
        ei.KeyFieldList   = list.pack();
        ei.KeyFieldData   = SysDictTable::mapFieldIds2Values(list, lt).pack();
    }
    ei.insert();
    eid.clear();
    eid.InboxId          = ei.InboxId;
    eid.DataType         = EventInboxDataType::Context;
    qbds = q.addDataSource(ei.AlertTableId);
    cont = q.pack();
    contextInfo = [1,  //version, DAX 4.0 - 1
                   formstr(LedgerTable), //formname
                   "", //designname
                   0, //dataset
                   0, //parmenumType
                   0, //parmItemName
                   "", //например, "FavQuery:Статус" - favourite query
                   MenuItemType::Display, //menuitemtype
                   menuitemdisplaystr(LedgerTable), //menuitemname
                   ei.TypeId, //typeid
                   EventTypeTrigger::FieldChanged, //typetrigger
                   ei.AlertTableId, //alerttableid
                   1, //alertformDSNo номер датасорса по которому потом искать будем.
                   true, //alertFdsIsTop
                   1, //alertQbdsNo
                   "", //control name
                   cont //filterQueryCon
                   ];
    eid.Data             = contextInfo;
    eid.insert();
    eid.clear();
    eid.InboxId          = ei.InboxId;
    eid.DataType         = EventInboxDataType::TypeData;
    eventType = EventType::construct(ei.TypeId, ei.TypeTrigger);
    eventType.parmOriginalValue("");
    eventType.parmCurrentValue("");
    eid.Data             = eventType.pack();
    eid.insert();
    ttscommit;
}
__________________
Ivanhoe as is..

Последний раз редактировалось Ivanhoe; 11.12.2009 в 16:51.
За это сообщение автора поблагодарили: EVGL (5), HorrR (1).
Старый 13.01.2010, 12:41   #3  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Выложил проект, включающий этот джоб + отдельный класс для создания оповещений, включая почтовые: Проект расширения стандартных оповещений AX 4.0
__________________
Ivanhoe as is..
Теги
alert, оповещения, пример, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Программное создание счета на оплату в PDF if_maks DAX: Программирование 2 25.11.2009 14:46
Снова программное создание журнала платежей -xXx- DAX: Программирование 2 29.09.2009 14:26
Программное создание групп. Petruccio DAX: Программирование 3 05.01.2007 02:38
Программное создание журнала платежей покупателю belugin DAX: Программирование 11 17.08.2006 15:01
Программное создание новых записей Владимир Максимов DAX: Программирование 35 06.03.2006 14:08
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:38.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.