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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.04.2011, 11:18   #10  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А вы мой проект смотрели? В 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;

}
В 2009 немного параметры поменялись, но суть такая же. См. EventNotification.create() - кроме проверки прав доступа там все важно повторить.
__________________
Ivanhoe as is..

Последний раз редактировалось Ivanhoe; 04.04.2011 в 11:20.
Теги
ax2009, уведомление

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как отправить уведомление пользователю? Yulie DAX: Программирование 11 27.03.2008 10:06
Оповещение в сводном планировании Penguin DAX: Функционал 19 05.10.2005 11:59
Оповещение в CRM sam DAX: Функционал 2 28.05.2004 06:10
Вопрос к пользователю при сохранении данных в таблице Anais DAX: Программирование 1 23.03.2004 19:46
Вопрос к пользователю при сохранении данных в таблице Anais DAX: Программирование 1 19.03.2004 10:28

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

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

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