|
29.02.2008, 18:19 | #1 |
Moderator
|
Трамплин в код из инфолога (SysInfoAction_Editor)
Почитываю книгу Microsoft Dynamics AX 4.0 (на русском языке). Выборочно, отдельными главами. Недавно прочитал 14-ю - "Отражение". После прочтения в голове хорошо и понятно выстроились все 3 API (UtilElements, Dict... и TreeNode AOT), которые раньше постигал урывками и бессистемно. Признаться, совсем доселе не приходилось возиться с UtilElements, а тут набросал джобик, повыводил в инфолог всякие списки последних модифицированных объектов - хорошо!
А если учесть, что недавно также открыл для себя возможности SysInfoAction, то возникло несколько строк кода, выполняющих довольно полезную функцию. У меня есть несколько джобов, предназначенных для нужд конкретных пользователей по конкретным задачам, причем для удобства распознавания я включаю (вкратце) фамилию пользователя и название задачи в идентификатор джоба. И вот мне нужно было посмотреть какие изменения были внесены за последний месяц в джобы для пользователя Ивановой: X++: static void Job_Unsorted_8229(Args _args) { UtilElements utilElements; ; while select Name from utilElements where utilElements.RecordType == UtilElementType::Job && utilElements.Name like '*Ivanova*' && utilElements.ModifiedDate >= today()-30 { info( utilElements.Name, '', SysInfoAction_Editor::newOpen( strfmt(@'\Jobs\%1', utilElements.Name ) )); } } P.S. По поводу буквального перевода "отражения" (reflection). Вроде, в отечественной литературе по Java, о тесном родстве с которой принято говорить при упоминании об X++, имеется устойчивый, обычно непереводимый, термин "рефлексия" (из серии: "файл", а не "реестр", "подшивка", "напильник"...). Ну, да ладно, "отражение" тоже понятно P.S. от 08.12.2008. Версия джоба с использованием формы запроса: X++: static void Job_Unsorted_8229_Query(Args _args) { UtilElements utilElements; Query query = new Query(); QueryBuildDatasource qbds = new QueryBuildDatasource() ; QueryRun qr; ; qbds = query.addDataSource(tablenum(UtilElements)); qbds.addRange(fieldnum(UtilElements, RecordType)) .value(queryValue(UtilElementType::Job)); qbds.addRange(fieldnum(UtilElements, Name)) .value('*Ivanova*'); qbds.addRange(fieldnum(UtilElements, ModifiedDate)) .value(strFmt('%1..',date2StrXpp( today()-30 ))); qbds.addSortField(fieldnum(UtilElements, ModifiedDate), SortOrder::Ascending); qr = new QueryRun(query); // qr.userUpdate(false); if (qr.prompt()) { while (qr.next()) { utilElements = qr.getNo(1); info( strfmt('%1 -- %2', utilElements.ModifiedDate, utilElements.Name), '', SysInfoAction_Editor::newOpen( strfmt(@'\Jobs\%1', utilElements.Name) )); } } } |
|
29.02.2008, 19:14 | #2 |
Участник
|
Цитата:
Сообщение от Gustav
P.S. По поводу буквального перевода "отражения" (reflection). Вроде, в отечественной литературе по Java, о тесном родстве с которой принято говорить при упоминании об X++, имеется устойчивый, обычно непереводимый, термин "рефлексия" (из серии: "файл", а не "реестр", "подшивка", "напильник"...). Ну, да ладно, "отражение" тоже понятно
Мнения знатоков разошлись. Да и что говорить, только что опять полез гуглить - вот 2 ссылки на один и тот же сайт про Java, с двумя разными переводами http://www.javable.com/javaworld/tips/118_tt/ -- здесь отражение http://www.javable.com/tutorials/fesunov/lesson22/ -- здесь рефлексия. По шарпу вроде чаще таки использовалось отражение. А рефлексия - не нравится мне это слово. Мне напоминает болезнь какую-то по звучанию |
|
Теги |
excel, rls, полезное, blog, axapta |
|
|