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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.05.2011, 17:37   #21  
d&m is offline
d&m
MCT
Аватар для d&m
MCP
Manzana Group
MCBMSS
 
459 / 186 (7) ++++++
Регистрация: 11.09.2007
Записей в блоге: 6
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение

1.2. Указание поля или метода исходной таблицы, содержащей код пользователя - оповещение получит соответствующий пользователь. Поле указывается в виде %createdBy%, метод - виде %method()%. Проверки на валидность поля или метода нет.
подскажите, пожалуйста, а позволит ли ваш проект сделать так, чтобы оповещение уходило автору записи?

поясню: у нас записи на форме создаёт Х человек. хочется сделать одно Правило генерации оповещений, по которому оповещение будет генерится одному из этих Х человек, а именно автору (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  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
именно для того и делалось: код пользователя - оповещение получит соответствующий пользователь
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: Ivanhoe (1).
Старый 16.05.2011, 17:48   #23  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Всё верно, для этого и делалось

Проект можно перенести на AX2009 - потребуется чуть-чуть допилить, т.к. создание оповещений немного поменялось.
__________________
Ivanhoe as is..
Старый 16.05.2011, 22:09   #24  
d&m is offline
d&m
MCT
Аватар для d&m
MCP
Manzana Group
MCBMSS
 
459 / 186 (7) ++++++
Регистрация: 11.09.2007
Записей в блоге: 6
еще раз, пжл, для тех, кто в танке

я в стандартное поле "код пользователя" вношу %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 is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Т.е. проект вы не смотрели

Там создано новое отдельное поле для указания пользователя из исходной записи, по кнопке "Выбрать" критерий задавать не нужно.
__________________
Ivanhoe as is..
Старый 18.05.2011, 17:33   #26  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Post
  1. было
    Цитата:
    Сообщение от Ivanhoe Посмотреть сообщение
    Выкладываю проект с расширениями стандартных оповещений AX 4.0 SP2 EE.
    .....
    стало:
    Перенес проект на Dynamics Ax 2009 SP1 EE Rollup 7

  2. Хотел уточнить по полю \Data Dictionary\Tables\EventRule\Fields\SourceUser
    свойство HelpText = "Поле или метод в исходной записи, содержащее код пользователя. Например, %createdBy% или %getUserId()%"

    Что все таки с "%" ?
Вложения
Тип файла: rar SharedProject_EventExtension_Ax2009Sp1Ru7.rar (31.0 Кб, 140 просмотров)
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 18.05.2011, 17:49   #27  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Не, в итоге % убрал, а текст забыл поправить.

На самом деле, если актуально, могу выложить обновленный проект для AX2009 - в части создания оповещений из кода я сделал наследник от базового класса + ряд правок стандарта.
__________________
Ivanhoe as is..
Старый 18.05.2011, 18:00   #28  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Выкладываю проект для AX2009 SP1 RU6.

По сравнению с версией для 4.0:

1. Добавлен новый класс EventNotificationSimple, наследник от стандартного класса. Позволяет делать оповещения напрямую из кода, не нагружая пакетник и лог базы данных.

2. Добавлен джоб tutorialAttentionGrabber(), который позволяет выводить произвольное всплывающее окошко (для этого есть небольшие модификации базовых классов).

3. Поправлены по мелочи ошибки в оповещениях, связанных с кодовыми страницами, UtcDateTime и т.п.

Ряд объектов привязан к новому конфиг. ключу - если мешает, нужно его аккуратно удалить.

Проект не для коммерческого использования
Вложения
Тип файла: zip SharedProject_KCAI_EventExtension.zip (81.9 Кб, 193 просмотров)
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: maze (1), Aquarius (1).
Старый 19.05.2011, 10:32   #29  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Выкладываю проект для AX2009 SP1 RU6.
....
Спасибо.

Для полного понимания проекта не хватает меточного файла @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 is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
эхх...
__________________
Ivanhoe as is..
Старый 13.08.2012, 11:33   #31  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Небольшое дополнение к методу 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));
    }
}
Изменения сделаны такие:
  • немного строже проверяется что в шаблоне дергается метод таблицы;
  • добавлены два "встроенных" метода, возвращающих имя автора создания/последнего изменения записи (getUserFIO() - "макрос", который возвращает имя по коду пользователя);
  • добавлена проверка на то, можно ли собственно вызывать в данном контексте тот экземплярный табличный метод, который указан в шаблоне.
Последняя проверка сделана из тех соображений, чтобы не дать пользователям с помощью шаблона уведомлений вызывать методы, которые не являются display-ными и вообще могут что-то поменять в базе (например, метод delete() ). Проверка выглядит вот так:
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  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Добрый день,
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  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
1.3. Использование мета-тегов в Теме и Сообщении. Можно указать поле или метод записи для подстановки в Тему или Сообщение оповещения. Пример: %itemId% или %getPrice()%.
Просто напишите %modifiedBy% и тогда сработает.

Тема и текст письма по почте равны полям в оповещении, т.е. если правильно настроить, то будет и в оповещении, и в e-mail.
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: Aquarius (1).
Старый 20.10.2015, 11:13   #34  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Просто напишите %modifiedBy% и тогда сработает.
БОЛЬШОЕ СПАСИБО, все заработало. в поле "сообщение" подтянулось на место %modifiedBy% значение кода пользователя.

Последний раз редактировалось Aquarius; 20.10.2015 в 11:19.
Старый 11.02.2016, 15:34   #35  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Возможно кому будет интересно. Простенький обмен сообщения для 2012.

С уважением, Дмитрий.
Вложения
Тип файла: doc Обмен сообщениями.doc (76.0 Кб, 219 просмотров)
Тип файла: xpo SharedProject_UserMessage.xpo (108.4 Кб, 431 просмотров)
За это сообщение автора поблагодарили: Logger (3).
Теги
alert, ax2009, ax4.0, законченный пример, оповещения, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Arijit Basu: AX 2009 - Quick Overview Blog bot DAX Blogs 4 19.05.2008 14:47
ALEG: Проект "Фишка недели" и первый пост - Microsoft Dynamics™ AX .NET Business Connector Blog bot DAX Blogs 1 22.11.2006 09:43

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

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

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