![]() |
#10 |
Участник
|
А вы мой проект смотрели? В 4.0 по крайней мере нужно было явно создать контекст и ссылку на запись (по ключевым полям):
X++: // IF EventExtension 08.09.2009 static void tutorialCreateAlert(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; 04.04.2011 в 11:20. |
|