16.05.2011, 17:37 | #21 |
MCT
|
Цитата:
поясню: у нас записи на форме создаёт Х человек. хочется сделать одно Правило генерации оповещений, по которому оповещение будет генерится одному из этих Х человек, а именно автору (CreatedBy) изменяемой записи... (ЗЫ: сейчас количество правил = кол-ву авторов = Х) в конечном итоге, я так понимаю, вопрос к полю "Код пользователя", в котором сейчас (AX2009 ru7) я могу указать только конкретного (одного) пользователя спасибо.
__________________
Sometimes there is a moment as you are awakening - when you become aware of the real world around you, - but you are still dreaming. - You may think you can fly but you do better not try. |
|
16.05.2011, 17:43 | #22 |
Участник
|
именно для того и делалось: код пользователя - оповещение получит соответствующий пользователь
__________________
Felix nihil admirari |
|
|
За это сообщение автора поблагодарили: Ivanhoe (1). |
16.05.2011, 17:48 | #23 |
Участник
|
Всё верно, для этого и делалось
Проект можно перенести на AX2009 - потребуется чуть-чуть допилить, т.к. создание оповещений немного поменялось.
__________________
Ivanhoe as is.. |
|
16.05.2011, 22:09 | #24 |
MCT
|
еще раз, пжл, для тех, кто в танке
я в стандартное поле "код пользователя" вношу %createdby% ? по кнопке "выбрать" критерий по полю "Создан" надо как-то указывать? (сейчас мы явно указываем там автора)
__________________
Sometimes there is a moment as you are awakening - when you become aware of the real world around you, - but you are still dreaming. - You may think you can fly but you do better not try. |
|
16.05.2011, 22:19 | #25 |
Участник
|
Т.е. проект вы не смотрели
Там создано новое отдельное поле для указания пользователя из исходной записи, по кнопке "Выбрать" критерий задавать не нужно.
__________________
Ivanhoe as is.. |
|
18.05.2011, 17:33 | #26 |
Модератор
|
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
18.05.2011, 17:49 | #27 |
Участник
|
Не, в итоге % убрал, а текст забыл поправить.
На самом деле, если актуально, могу выложить обновленный проект для AX2009 - в части создания оповещений из кода я сделал наследник от базового класса + ряд правок стандарта.
__________________
Ivanhoe as is.. |
|
18.05.2011, 18:00 | #28 |
Участник
|
Выкладываю проект для AX2009 SP1 RU6.
По сравнению с версией для 4.0: 1. Добавлен новый класс EventNotificationSimple, наследник от стандартного класса. Позволяет делать оповещения напрямую из кода, не нагружая пакетник и лог базы данных. 2. Добавлен джоб tutorialAttentionGrabber(), который позволяет выводить произвольное всплывающее окошко (для этого есть небольшие модификации базовых классов). 3. Поправлены по мелочи ошибки в оповещениях, связанных с кодовыми страницами, UtcDateTime и т.п. Ряд объектов привязан к новому конфиг. ключу - если мешает, нужно его аккуратно удалить. Проект не для коммерческого использования
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: maze (1), Aquarius (1). |
19.05.2011, 10:32 | #29 |
Модератор
|
Спасибо.
Для полного понимания проекта не хватает меточного файла @RTL.
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. Последний раз редактировалось Poleax; 19.05.2011 в 10:36. |
|
19.05.2011, 10:36 | #30 |
Участник
|
эхх...
__________________
Ivanhoe as is.. |
|
13.08.2012, 11:33 | #31 |
Участник
|
Небольшое дополнение к методу createKeywordMap()
Во-первых, спасибо за замечательный проект! Очень полезная модификация, делающая возможным настраивать оповещения для других. Также очень удачной оказалась доработка шаблонов оповещений с тем, чтобы в них можно было подставлять значения полей и методов табличного буфера, однако, эта подстановка получилась несколько... мощнее, чем то, что можно доверить пользователям Вот как был доработан внутренний цикл поиска и "обсчета" макросов из шаблона - блок if (!keywords.exists(keyword)) метода createKeywordMap(), который вызывается из \Data Dictionary\Tables\EventInbox\Methods\initFromBuffer:
X++: // по умолчанию вернем в виде значения сам token - так проще "отлаживать" шаблоны keyword_value = #startReplaceToken + keyword + #endReplaceToken; if (match(@"<[a-z_][a-z0-9_]*\(\)>", keyword)) { switch (keyword) { case @"modifiedBy_Name()" : keyword_value = getUserFIO(_buffer.modifiedBy); break; case @"createdBy_Name()" : keyword_value = getUserFIO(_buffer.createdBy); break; default : tblMethodName = strreplace(keyword, '()', ''); if (this.mayEvaluateTableMethodReturnValue(bufferTable.id(), tblMethodName)) { keyword_value = strfmt("%1", bufferTable.callObject(tblMethodName, _buffer)); } break; } } else { bufferFldId = fieldname2Id(_buffer.tableid, keyword); if (bufferFldId) { keyword_value = strfmt("%1", _buffer.(bufferFldId)); } }
X++: // можно ли дернуть табличный метод для получения его возвращаемого значения и подстановки этого значения вместо имени метода в письмо? private boolean mayEvaluateTableMethodReturnValue(tableId _tableId, SysMethodName _instanceMethodName) { Types returnType; DictMethod dictMethod = new DictMethod(UtilElementType::TableInstanceMethod, _tableId, _instanceMethodName); boolean ret = false; ; if ( dictMethod && dictMethod.parameterCnt() == 0 && dictMethod.displayType() == DisplayFunctionType::Get ) { if (dictMethod.returnType() == Types::UserType) { returnType = extendedTypeId2Type(dictMethod.returnId()); } else { returnType = dictMethod.returnType(); } // является ли тип возвращаемого значения значимым (т.е. не ссылочным)? ret = returnType == Types::String || returnType == Types::RString || returnType == Types::VarString || returnType == Types::Integer || returnType == Types::Int64 || returnType == Types::Real || returnType == Types::Date || returnType == Types::UtcDateTime || returnType == Types::Enum || returnType == Types::Guid || returnType == Types::Time ; } return ret; } |
|
|
За это сообщение автора поблагодарили: Logger (3), Ivanhoe (5), Aquarius (1). |
20.10.2015, 10:38 | #32 |
Участник
|
Добрый день,
Ax 2009 SP1 Ru5 большое спасибо за такой полезный проект. установили его. я хотела уточнить. Правильно ли я понимаю, что ,например: Если настроено оповещение на изменение в таблице custTable, и в форме "управление правилами генерации оповещений" в поле "сообщение" группы "оповещать меня" указать custtable.modifiedBy, то в уведомлении в поле сообщение должен быть выведен код пользователя, изменившего запись? Или только на почту в сообщении должен прийти содержимое поля сообщения ? Я настроила оповещение на изменение в таблице custTable, указала группу пользователей,которой рассылать это оповещение, Затем указала в оповещении в поле "сообщение" группы "оповещать меня" custtable.modifiedBy. затем изменила значение поля таблицы клиентов. Пользователям данной группы пользователей и мне пришло уведомление. Тема: Поле Кредитный лимит в таблице Клиенты был изменен уведомление для:Счет клиента: 0050043, ТестКлиент на страничке разное в поле сообщение указано custtable.modifiedBy. Последний раз редактировалось Aquarius; 20.10.2015 в 10:40. |
|
20.10.2015, 10:43 | #33 |
Участник
|
Цитата:
1.3. Использование мета-тегов в Теме и Сообщении. Можно указать поле или метод записи для подстановки в Тему или Сообщение оповещения. Пример: %itemId% или %getPrice()%.
Тема и текст письма по почте равны полям в оповещении, т.е. если правильно настроить, то будет и в оповещении, и в e-mail.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: Aquarius (1). |
20.10.2015, 11:13 | #34 |
Участник
|
БОЛЬШОЕ СПАСИБО, все заработало. в поле "сообщение" подтянулось на место %modifiedBy% значение кода пользователя.
Последний раз редактировалось Aquarius; 20.10.2015 в 11:19. |
|
11.02.2016, 15:34 | #35 |
Участник
|
Возможно кому будет интересно. Простенький обмен сообщения для 2012.
С уважением, Дмитрий. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
Теги |
alert, ax2009, ax4.0, законченный пример, оповещения, полезное |
|
|