| 
	 | 
| 
			
			 | 
		#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). | |
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не вникал особой в логику, но по-моему основную часть кода можно вынести в метод и забыть об этой сложности.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В книге "Microsoft Dynamics AX 2012 Devel. Cookbook - M. Pocius (Packt, 2012) BBS" есть конкретный пример по работе с комбинацией счет ГК / аналитики из кода, пример общего метода для работы с комбинациями. Мне кажется, по аналогии можно собрать такой универсальный метод и пользоваться им. Что скажут знатоки?  
		
		
		
		
		
		
			 
		
				__________________ 
		
		
		
		
	Ivanhoe as is..  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Banned 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, конечно. Просто для эксперимента сделал в SQL, чтобы проиллюстрировать неприятности при импорте данных, точнее их самую малую часть.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А новые возможности интеграции с Office не помогут? Там же по идее лукапы должны работать.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Ivanhoe as is..  | 
| 
	
 | 
| 
			
			 | 
		#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.  | 
| 
	
 | 
| 
			
			 | 
		#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). | |
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А вы не думали над тем чтобы завести денормализованные временные таблички CustVendTableImportTMP, в которых завести все какие нам надо поля (Dimension, Name, и.т.п.) и при вставке значений в эти таблички, на Insert() искать соответсвующие записи реальных табличек и если есть то обновлять, а если нет то добавлять запись. Тогда вся сложная логика по сохранению наименований, складских аналитик, будет спрятана. Удобно получится. 
		
		
		
		
		
		
		
	Модификация вроде бы должна быть несложная. Один раз написать, а потом всегда использовать.  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Logger
			 
 
			А вы не думали над тем чтобы завести денормализованные временные таблички CustVendTableImportTMP, в которых завести все какие нам надо поля (Dimension, Name, и.т.п.) и при вставке значений в эти таблички, на Insert() искать соответсвующие записи реальных табличек и если есть то обновлять, а если нет то добавлять запись 
		
	 
		
				__________________ 
		
		
		
		
	-ТСЯ или -ТЬСЯ ?  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Logger (5). | |
| 
			
			 | 
		#10 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
			
			
			axsa: Microsoft Dynamics AX 2012 Data Import/Export Framework (Old name - Data Migration Framework) is now available on Information source
			 
				__________________ 
		
		
		
		
	-ТСЯ или -ТЬСЯ ?  | 
| 
	
 | 
| Теги | 
| ax2012, dmf | 
| 
	
	 | 
	
		
  |