Цитата:
Сообщение от
Ivanhoe
А вы мой проект смотрели? В 4.0 по крайней мере нужно было явно создать контекст и ссылку на запись (по ключевым полям):
В 2009 немного параметры поменялись, но суть такая же. См. EventNotification.create() - кроме проверки прав доступа там все важно повторить.
Как я понимаю работу оповещений: Существует Таблица куда записываются оповещения(EventInbox), существует какой то класс который постоянно эти оповещения из этой таблицы считывает и доставляет пользователям. Оповещения туда помещаются при срабатывании какого то события на таблице, НО если в эту таблицу сделать программный insert() указав:
X++:
inbox.AlertTableId = TableNum(CustTable);
inbox.AlertFieldId = FieldNum(CustTable, Name);
inbox.TypeTrigger = EventTypeTrigger::FieldChanged;
то мы как бы говорим произошло событие на таблице CustTable, нужно пользователей оповестить, однако в действительности событие не происходило. В связи с этим вопрос: при заполнении EventInboxData след образом:
X++:
args.menuItemName(menuFunction.name());
args.menuItemType(MenuItemType::Display);
eci.parmAlertBuffer(record);
eci.parmAlertFormDsName('S_CustVendCommon');
eci.parmPackedArgs(args);
inboxData.InboxId = inboxId;
inboxData.DataType = EventInboxDataType::Context;
inboxData.Data = eci.pack();
inboxData.insert();
и указании
X++:
eci.parmAlertBuffer(record);
eci.parmAlertFormDsName('S_CustVendCommon');
на другую таблицу(отличную от той на которую мы якобы генерировали событие), будет ли это работать, если да то в чем может быть загвоздка? оповещение приходит но без ссылки на меню и судя по классу EventNotification никаких дополнительных параметров при Inserte заполнять не нужно.