AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

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

Last edited by HorrR; 03.12.2009 at 19:53.
Old 11.12.2009, 16:47   #2  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Готовый джоб для создания оповещения из кода 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..

Last edited by Ivanhoe; 11.12.2009 at 16:51.
This post has been rated by: EVGL (5), HorrR (1).
Old 13.01.2010, 12:41   #3  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Выложил проект, включающий этот джоб + отдельный класс для создания оповещений, включая почтовые: Проект расширения стандартных оповещений AX 4.0
__________________
Ivanhoe as is..
Tags
alert, оповещения, пример, программно

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Программное создание счета на оплату в 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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 02:04.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.