|
![]() |
#1 |
Участник
|
Сейчас это поле нужно для создания нескольких почтовых сообщений для пользователей группы на основании первого (стандартного) - каждому должно прийти письмо со ссылкой именно на его оповещение. Ну и плюс - можно смотреть потом какие оповещения были сделаны для группы, т.е. для разбора типа "я не получал", "мне не приходило" и т.п.
На развитие думал про такую возможность: В AX2009 в рамках документооборота есть понятие согласование и задача. При этом назначение задачи могут получить несколько пользователей, но выполнять ее нужно только один раз (одному сотруднику) - для этого пользователь нажимает кнопку "Принять" - т.е. уведомляет остальных, что он взял задачу на себя и остальным ее выполнять не надо (наскока я помню, в системе остальные оповещения просто будут удалены). В 4.0, предлагаю, сделать также - добавить признак правила оповещения "Задача" и по этому признаку давать возможность нажать кнопку "Принять", после чего все остальные оповещения этой группы надо либо удалить, либо пометить как-нибудь.
__________________
Ivanhoe as is.. |
|
![]() |
#2 |
Участник
|
спасибо за ответ. честно говоря, я всё равно не понял назначение этого поля, ибо и без него каждый пользователь из группы получает своё оповещение.
я вот сейчас пытаюсь сделать возможность привязки к родительской таблице при создании правила по полю в дочерней. но пока не придумал, как бы это сделать универсальным образом. нарисовал пока вот так, "жёстко". (фрагмент метода класса) X++: static str getFieldValueFromCode(str _fieldByCode, common _buffer) ... // if the table exists if (bufferTable) { parentBuffer = _buffer; // the table here is the "parent" table to _buffer // it comes to a parent table: we need to locate one if (tId != _buffer.TableId) { // Realised for Sales and Purchase orders only // Sales orders if ((tId == tableNum(SalesTable)) && (_buffer.TableId == tableNum(SalesLine))) { parentBuffer = SalesTable::find(SalesLine::findRecId(_buffer.RecId).SalesId); } // Purchase orders if ((tId == tableNum(PurchTable)) && (_buffer.TableId == tableNum(PurchLine))) { parentBuffer = PurchTable::find(PurchLine::findRecId(_buffer.RecId).PurchId); } } ...
__________________
Felix nihil admirari |
|
![]() |
#3 |
Участник
|
Цитата:
![]() Как работает стандарт: 0. Общий фреймворк обработки записанных событий: 1. запускает создание оповещение в EventInbox. 2. по записи из п.1 запускает создание почтового сообщения. Т.е. п.1 про п.2 ничего не знает. После того, как мы вклинились в п.1 и наделали кучку дополнительных оповещений, система переходит к п.2 и передает параметром только основное оповещение, т.к. ничего не знает про наши дополнительные оповещения. Соответственно, чтобы создать почту по всем дополнительным оповещениям нам нужен был признак для их поиска - все оповещения, которые связаны с основным оповещением. По поводу вашей задачи - не совсем понятно, чего вы хотите добится - можете с точки зрения пользователя объяснить?
__________________
Ivanhoe as is.. |
|
![]() |
#4 |
Участник
|
теперь понял. спасибо!
моя задача в том, чтобы, например, при изменении поля в SalesLine уведомлять сотрудника (SalesResponsible), указанного в SalesTable (в родительской таблице). то есть, изменения происходят в дочерней таблице, а поле для уведомлений ищется в родительской.
__________________
Felix nihil admirari |
|
Теги |
alert, ax2009, ax4.0, законченный пример, оповещения, полезное |
|
|