13.11.2012, 22:33 | #1 |
Banned
|
AX2012: a way to keep it simple
AX2009:
X++: static void setDimension(Args _args) { CustTable custTable; ttsBegin; while select forUpdate custTable where custTable.LineOfBusinessId { custTable.Dimension[1] = custTable.LineOfBusinessId; custTable.update(); } ttsCommit; } X++: static void setDimension(Args _args) { DimensionValue dimValue; CustTable custTable; DimensionFinancialTag dimFinTag; FinancialTagCategory finTagCat; DimensionAttributeDirCategory dimAttrCat; DimensionAttribute dimAttr; DimensionAttributeValueSetItem dimAttrSetItem; DimensionAttributeValue dimAttrValue; DimensionDefault dimDefaultRecId; ttsBegin; while select forUpdate custTable order by custTable.LineOfBusinessId // the dimension value is stored here where custTable.LineOfBusinessId { if (custTable.LineOfBusinessId != dimValue) { dimValue = custTable.LineOfBusinessId; dimDefaultRecId = 0; select firstOnly dimFinTag where dimFinTag.Value == dimValue join finTagCat where finTagCat.RecId == dimFinTag.FinancialTagCategory join dimAttrCat where dimAttrCat.DirCategory == finTagCat.RecId join dimAttr where dimAttr.RecId == dimAttrCat.DimensionAttribute join dimAttrValue where dimAttrValue.DimensionAttribute == dimAttr.RecId && dimAttrValue.EntityInstance == dimFinTag.RecId; while select count(RecId), maxOf(DimensionAttributeValue) from dimAttrSetItem group by DimensionAttributeValueSet { if (dimAttrSetItem.RecId == 1 && dimAttrSetItem.DimensionAttributeValue == dimAttrValue.RecId) { dimDefaultRecId = dimAttrSetItem.DimensionAttributeValueSet; break; } } } custTable.DefaultDimension = dimDefaultRecId; custTable.update(); } ttsCommit; } Последний раз редактировалось EVGL; 13.11.2012 в 22:43. |
|
|
За это сообщение автора поблагодарили: mazzy (2), S.Kuskov (2). |
13.11.2012, 23:30 | #2 |
Участник
|
Не вникал особой в логику, но по-моему основную часть кода можно вынести в метод и забыть об этой сложности.
|
|
14.11.2012, 00:19 | #3 |
Участник
|
В книге "Microsoft Dynamics AX 2012 Devel. Cookbook - M. Pocius (Packt, 2012) BBS" есть конкретный пример по работе с комбинацией счет ГК / аналитики из кода, пример общего метода для работы с комбинациями. Мне кажется, по аналогии можно собрать такой универсальный метод и пользоваться им. Что скажут знатоки?
__________________
Ivanhoe as is.. |
|
14.11.2012, 00:28 | #4 |
Banned
|
Да, конечно. Просто для эксперимента сделал в SQL, чтобы проиллюстрировать неприятности при импорте данных, точнее их самую малую часть.
|
|
14.11.2012, 11:35 | #5 |
Участник
|
А новые возможности интеграции с Office не помогут? Там же по идее лукапы должны работать.
__________________
Ivanhoe as is.. |
|
14.11.2012, 11:37 | #6 |
Banned
|
Ну что вы! Может быть, в R2 что-то и заработает, а в AX2012 CU3 - каюк. Например, через Excel не удастся заимпортировать "ручные" аналитики, шанс есть только с отделами и центрами затрат, которые лежат в отдельных таблицах. Однако, копии значений этих аналитик в DimensionAttributeValue создаются только по мере необходимости, поэтому использовать их как Foreign Key в другой таблице сразу не удастся. Да и вообще, что-либо, связанное с фин. аналитиками, проще переносить вручную. С импортом справочников клиентов и поставщиков тоже будут массивные проблемы, поскольку убрали и денормализировали CustVendTable.Name и все, что связано с адресами; там теперь тройной-четверной джойн CustTable - DirParty - ... - LogisticsLocation.
Говорят, что есть шанс воспользоваться "IMDF - Intelligent Data Management Framework", но я не пробовал: https://mbs.microsoft.com/partnersou...es/ax_idmf.htm Хотя нет, это явно не для импорта, а для переноса данных между инсталлациями: Святой Грааль - архивация данных в AX. Последний раз редактировалось EVGL; 14.11.2012 в 11:59. |
|
14.11.2012, 12:13 | #7 |
Модератор
|
Цитата:
Сообщение от EVGL
С импортом справочников клиентов и поставщиков тоже будут массивные проблемы, поскольку убрали и денормализировали CustVendTable.Name и все, что связано с адресами; там теперь тройной-четверной джойн CustTable - DirParty - ... - LogisticsLocation.
Говорят, что есть шанс воспользоваться "IMDF - Intelligent Data Management Framework", но я не пробовал: https://mbs.microsoft.com/partnersou...es/ax_idmf.htm
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: EVGL (5), Ivanhoe (5). |
27.11.2012, 21:21 | #8 |
Участник
|
А вы не думали над тем чтобы завести денормализованные временные таблички CustVendTableImportTMP, в которых завести все какие нам надо поля (Dimension, Name, и.т.п.) и при вставке значений в эти таблички, на Insert() искать соответсвующие записи реальных табличек и если есть то обновлять, а если нет то добавлять запись. Тогда вся сложная логика по сохранению наименований, складских аналитик, будет спрятана. Удобно получится.
Модификация вроде бы должна быть несложная. Один раз написать, а потом всегда использовать. |
|
27.11.2012, 21:50 | #9 |
Модератор
|
Цитата:
Сообщение от Logger
А вы не думали над тем чтобы завести денормализованные временные таблички CustVendTableImportTMP, в которых завести все какие нам надо поля (Dimension, Name, и.т.п.) и при вставке значений в эти таблички, на Insert() искать соответсвующие записи реальных табличек и если есть то обновлять, а если нет то добавлять запись
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: Logger (5). |
16.03.2013, 19:37 | #10 |
Модератор
|
axsa: Microsoft Dynamics AX 2012 Data Import/Export Framework (Old name - Data Migration Framework) is now available on Information source
__________________
-ТСЯ или -ТЬСЯ ? |
|
Теги |
ax2012, dmf |
|
|