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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.07.2002, 20:32   #1  
AxDev is offline
AxDev
Участник
 
8 / 12 (1) ++
Регистрация: 29.05.2002
Angry Кажется, набрел на очередную фичу
Для таблиц, к которых режим кэширования (CacheLookup) установлен в EntireTable, система некорректно
работает с полями CreatedDate/ModifiedDate/Time... (которые включаются установкой соотв. свойств на таблице).
Как правило, во всех записях они будут соответствовать дате и времени начала текущей сессии АКСАПТы.
Таблиц с этим режимом кэша в AOT очень много - те же пресловутые LedgerTable, CustGroup, ...

Неужели у меня одного такие проблемы?????
Старый 05.07.2002, 21:42   #2  
AxDev is offline
AxDev
Участник
 
8 / 12 (1) ++
Регистрация: 29.05.2002
! Как программировать в sys-слое
Казалось бы, для того, чтобы записать свою модификацию в sys-слой, надо быть членом команды
Navision-hq или хакером.
Но на практике выяснилось следующее:
В рамках решения задачи тотального аудита системы возникла необходимость включить свойства
CreatedDate/ModifiedDate во многих таблицах, в т.ч. созданных в sys-слое.
Нелегкая работа - проставить руками свойства сразу в нескольких сотнях таблиц.
Поэтому был написан небольшой джоб, вроде этого:
static void AOT_ModifyAllTables_tst(Args _args)
{
treeNode treeNode;
xInfo xInfo = new xInfo();
DictTable dictTable;
int i;
;

treeNode = xInfo.rootNode();
treeNode = treeNode.AOTfindChild("Data Dictionary");
treeNode = treeNode.AOTfindChild("Tables");
treeNode = treeNode.AOTfirstChild();

while (treeNode)
{
dictTable = new DictTable(treeNode.applObjectId());

if (dictTable.dataPrCompany() && ! dictTable.isMap() && ! dictTable.isTmp())
{
treeNode.AOTsetProperties("PROPERTIES"+"\n"+"ModifiedDate #Yes"+"\n"+"CreatedDate #Yes"+"\n"+"ENDPROPERTIES");
treeNode.aotsave();

info(strfmt("Table %1 changed", treeNode.treeNodeName()));
i++;
}

treeNode = treeNode.nextSibling();
}

info(strfmt("Total %1 tables changed", i));
}
Если изменяемая таблица находилась в каком-нибудь из "низших" слоев, свойства изменялись,
но объект оставался в том же слое, в котором и был, а не переходил в usr
За это сообщение автора поблагодарили: aidsua (1), jeky (1).
Старый 08.04.2009, 16:05   #3  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
Cool
Может не в тему чуток. но из Вашего примера.
Есть код в 4 акс:
X++:
        treeNode = xInfo.rootNode();
        treeNode = treeNode.AOTfindChild("Forms");
        treeNode = treeNode.AOTfindChild("FormName");
        treeNode = treeNode.AOTfindChild("Designs");
        treeNode = treeNode.AOTfindChild("Design");
        treeNode = treeNode.AOTfindChild("Group1");
        treeNode = treeNode.AOTfindChild("WindowControl1");
при выполнении
treeNode = treeNode.AOTfindChild("Group1"); здесь ничего не находит
и на
treeNode = treeNode.AOTfindChild("WindowControl1"); уже выдает ошибку о том что treeNode не инициализирован.
Вроде бы все делаю так как нужно, после дизайна сразу идет группа. но почему то AOTfindChild() ее не находит.
Если кто нибудь знает подскажите плиз
Старый 08.04.2009, 16:32   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Заставьте код выполняться на клиенте, возможно это поможет.

Да, ещё можно слегка укоротить ваш код, используя сразу полный путь, напр:

X++:
static void Job1(Args _args)
{
    TreeNode    treeNode;
    ;
    
    treeNode = TreeNode::findNode("\\Forms\\Address\\Designs\\Design\\[Tab:Tab]\\[TabPage:TabOverview]\\[Grid:Grid]");
    
    treeNode.AOTshowProperties();
}

Последний раз редактировалось DSPIC; 08.04.2009 в 16:37.
За это сообщение автора поблагодарили: propeller (1).
Старый 08.04.2009, 16:57   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
А, тут в другом дело. Неправильно названы элементы дерева АОТ.
Напр., имя группы должно быть не "Group1", а "[Group:Group1]".
Но и выполнение кода на клиенте тож не лишним будет.
Старый 08.04.2009, 17:00   #6  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
да именно в этом был косяк , спасибо всем
Старый 08.04.2009, 19:05   #7  
aidsua is offline
aidsua
AX*****
Аватар для aidsua
 
106 / 40 (2) +++
Регистрация: 28.09.2005
Адрес: 2:463/Kyiv
Цитата:
Сообщение от AxDev Посмотреть сообщение
Если изменяемая таблица находилась в каком-нибудь из "низших" слоев, свойства изменялись,
но объект оставался в том же слое, в котором и был, а не переходил в usr
В DAX 4.0 меняет на текущем слое.. т.е. ошибку подправили.
__________________
О, как беден, как груб наш русский язык! [c] А.С.Пушкин
Теги
createddate, entiretable, modifieddate, modifiedtime, кэширование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axapta at Oracle Instant Client robocomp DAX: Администрирование 11 26.05.2005 14:13
Превышение кол-ва в "немедленная поставка" кол-ва "к поставке" Pegiy DAX: Функционал 16 23.03.2004 20:03
кто нибудь юзал фичу ToDo comments Антон Солдатов DAX: Программирование 5 31.03.2003 10:02

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

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

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