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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.07.2012, 13:43   #1  
igorbrajnik is offline
igorbrajnik
Участник
 
3 / 10 (1) +
Регистрация: 02.07.2012
Upgrade from Ax4 to Ax2012 : Financial Dimensions
Работая над апгрейдом с 4 на 2012 возникла такая проблема: в четверке есть скрипты типа
this.Dimension[2] = salesLine.Dimension[2]
т.е. присвоение конкретной аналитики. А как то же самое осуществить в 2012? То что одна и та же по смыслу аналитика в 2012 не может получена каким-либо указанием индекса (как в примере) я понимаю
Старый 02.07.2012, 13:54   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Они же там "именованные" вроде как. Т.е. в виде ассоциативного списка хранятся. Наверное, должны быть какие-то классы для доступа к аналитике по её имени, я так думаю. Сам ещё не смотрел.

По опыту перехода с прошлых версий: лучший способ узнать как что-то работает в новой версии - это вспомнить/найти где в стандарте это используется системным кодом старой версии и посмотреть как этот код уже перенесён на новую версию.

Например (на вскидку): копирование финансовой аналитики номенклатуры из основной таблицы в строку складского журнала...
Старый 02.07.2012, 14:01   #3  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Вот с этим как раз и проблемы. т.е. нигде в стандарте такого кода(копирование именно аналитики 2) в принципе быть не может, ибо это завязка на конкретного клиента.

По поводу "копирование аналитики номенклатуры из основной таблицы в строку журнала" - там идет так называемый merge аналитик, вопрос больше в том, как вообще сейчас ссылаться на конкретную аналитику(т.е. 2 в указанном примере)
Старый 02.07.2012, 14:13   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от trud Посмотреть сообщение
вопрос больше в том, как вообще сейчас ссылаться на конкретную аналитику(т.е. 2 в указанном примере)
Ну так выбора, то особенно то и нет если не по номеру, то значит по имени. Если у вас раньше в коде была явно прописана числовая константа, то сейчас нужно её заменить на текстовую. правильнее будет конечно же не константой, а куда-нить в параметры вынести это текстовое значение

Извините, но я наверное не понимаю сути проблемы ...
Старый 02.07.2012, 14:38   #5  
igorbrajnik is offline
igorbrajnik
Участник
 
3 / 10 (1) +
Регистрация: 02.07.2012
давайте забудем про апгрейд и сформулируем задачу так: в Ax2012 при создании salesLine из purchLine копировать не все аналитики а только CostCentr
Старый 02.07.2012, 14:47   #6  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Извиняюсь, а типа такого тоже не прокатит?
X++:
this.(fieldId2Ext(fieldnum(MyTable, Dimension),2)) = SalesLine.(fieldid2ext(fieldnum(SalesLine, Dimension),2));
2012 нету, просто интересно?
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 02.07.2012 в 14:50.
Старый 02.07.2012, 15:12   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
to Pustik: Нет теперь поля Dimension, забудьте

http://stackoverflow.com/questions/8...lue-in-ax-2012
http://learnax.blogspot.com/2011/08/...imensions.html

Последний раз редактировалось S.Kuskov; 02.07.2012 в 15:16.
За это сообщение автора поблагодарили: Pustik (2).
Старый 02.07.2012, 15:29   #8  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Ну вот вроде что-то наподобии того что нужно.

http://sumitsaxfactor.wordpress.com/...ion-2-ax-2012/

Остается вопрос - что вообще должно добавляться в параметры в качестве ссылки на значение CostCentr(и должно ли добавляться вообще). в примере выше используется ID таблицы ( типа - tableNum(DimAttributeHcmWorker)).
За это сообщение автора поблагодарили: Pustik (2).
Старый 02.07.2012, 15:49   #9  
rDenis2 is offline
rDenis2
Участник
 
62 / 36 (2) +++
Регистрация: 13.05.2010
может пригодиться

http://download.microsoft.com/downlo...ork_AX2012.pdf
За это сообщение автора поблагодарили: Pustik (2).
Старый 02.07.2012, 15:57   #10  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Уже как-то здесь раньше говорили, что Dimension сделают по аналогии InventDim, т.е. складской аналитики. Может быть оно с каких-то высот и правильно, может оно и имеет какие-то разумные объяснения. Но как взглянешь на код:
X++:
DimensionStorage dimensionStorage;
DimensionAttribute deparmentDimensionAttribute;
DimensionAttributeValue newDepartmentValue;

// Find the deparment dimension attribute
deparmentDimensionAttribute = DimensionAttribute::findByName("Department");  

// Find the new department value we want to put in the new combination.
newDepartmentValue = DimensionAttributeValue::findByDimensionAttributeAndValue(deparmentDimensionAttribute, "abc");

// Load a DimensionStorage instance with the old combination and update the first segment with new value
dimensionStorage = DimensionStorage::findById(ledgerTable.LedgerDimension);
dimensionStorage.setSegment(1,DimensionStorageSegment::constructFromValue("abc", newDepartmentValue));
ledgerJournalTrans.LedgerDimension = dimensionStorage.save();
,который раньше можно было написать одной строчкой, думаешь ну и @опа
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 02.07.2012, 16:01   #11  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
ну в этом документе до таких мелочей как универсальная замена конкретной аналитики не опускаются к сожалению, вот народ и мучается.
вообще код из http://stackoverflow.com реальная жесть

Т.е. делается несколько предположений - что аналитика называется Department(в русской версии я так понимаю это будет Подразделение) и что она стоит в сегменте на первом месте - setSegment(1, - что вообще является настройкой

X++:
// Find the deparment dimension attribute
deparmentDimensionAttribute = DimensionAttribute::findByName("Department");  

// Find the new department value we want to put in the new combination.
newDepartmentValue = DimensionAttributeValue::findByDimensionAttributeAndValue(deparmentDimensionAttribute, "abc");

// Load a DimensionStorage instance with the old combination and update the first segment with new value
dimensionStorage = DimensionStorage::findById(ledgerTable.LedgerDimension);
dimensionStorage.setSegment(1,DimensionStorageSegment::constructFromValue("abc", newDepartmentValue));
ledgerJournalTrans.LedgerDimension = dimensionStorage.save();
Сколько чудных ошибок будет

Последний раз редактировалось trud; 02.07.2012 в 16:03.
Старый 02.07.2012, 16:19   #12  
igorbrajnik is offline
igorbrajnik
Участник
 
3 / 10 (1) +
Регистрация: 02.07.2012
люди из MS что писали 2012 будто задались целью камня на камне от 2009 не оставить - а на проектах заказчиков вообще похоже никогда не работали. Я не могу вспомнить ни одного проекта где бы не присаивалавась конкретная аналитика - то есть задача то наиактуальнейшая
Старый 02.07.2012, 16:40   #13  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Сдаётся мне что при нужной доле смекалки, систему фин.аналитик в AX2012 можно настроить под структуру AX2009. Т.е на всех счетах настроить одну и туже комбинацию, с одной и той же последовательностью. Написать дисплейных и едит - методов для доступа по старой схеме, и т.д и т.п. ... Вот только стоит ли хвататься за старое или лучше начать адаптироваться к новому. Уверен кроме недостатков, видных невооружённым взглядом, у новой схемы найдутся и достоинства. По крайней мере на это надеюсь
Старый 02.07.2012, 16:56   #14  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Поставьте еще Upgrade(или Update) модель, в ней есть классы - хелперы, которые помогают конвертнуть старый код для фин. аналитик. Если не ошибаюсь DimensionConversionHelper.
Старый 02.07.2012, 16:59   #15  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Кстати, код приведенный выше с
X++:
DimensionAttribute::findByName([COLOR=red]"Department"[/COLOR]);
- очень плохая затея. Аналитики можно переименовывать. При такой подходе, после переименования аналитики, код резко перестанет работать.
Старый 02.07.2012, 17:02   #16  
Evgeniy2020 is offline
Evgeniy2020
Участник
 
309 / 68 (3) ++++
Регистрация: 10.04.2007
Адрес: Москва, САО, СЗАО
сталкивался с подбным. добавлял в параметры привязку.
никто не мешает в глобальных параметрах ГК добавить закладку с аналитиками. сделать lookup по имени к DimensionAttribute к финансовым аналитикам (customlist, existinglist). И соответственно присвоить индекс.
по сути сделать жесткий mapping в параметрах индекса к Name дименшена.

dimMap.NameByIndex(1) будет выдавать имя дименшена..
а его уже использовать DimensionAttribute::findByName(dimMap.NameByIndex(1))..
или дописать обертку.

Но это только для общих аналитик. то есть глобально везде.. может конфликтовать - например с комбинациями для отдельных счетов (mainAccount) если там задана другая иерархия, с допустимимой комбинацией аналитик .. да и еще могут применяьться правила..

Последний раз редактировалось Evgeniy2020; 02.07.2012 в 17:05.
Старый 02.07.2012, 17:04   #17  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Цитата:
Сообщение от Evgeniy2020 Посмотреть сообщение
сталкивался с подбным. добавлял в параметры привязку.
никто не мешает в глобальных параметрах ГК добавить закладку с аналитиками. сделать lookup по имени к DimensionAttribute к финансовым аналитикам (customlist, existinglist). И соответственно присвоить индекс.
по сути сделать жесткий mapping в параметрах индекса к Name дименшена.
.
ИМХО, а других вариантов особо и нет.
Старый 02.07.2012, 20:00   #18  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Уверен кроме недостатков, видных невооружённым взглядом, у новой схемы найдутся и достоинства.
Надо признать, что строка this.Dimension[2] = salesLine.Dimension[2] тоже оптимизма не добавляет. Ну хорошо, мы все знаем, что 2 - это Центр затрат в стандартной версии. А как ее переименовали на конкретном проекте? А если это не 2, а 6 ?
Т.е. я всегда бы писал this.Dimension[SysDimension::CostCenter]. Да, стандартные значения енумов не переименуешь. Но новые-то уже точно можно создавать как захочется. Конечно, если приложение используется на нескольких проектах и на разных проектах у этой аналитики свое предназначение - то 2 - тут возможно оправдано. Возможно.
В АХ 2012 попытались эту проблему решить "программистким" путем, т.е. сделав универсальный механизм. Забыв, что структура аналитик для каждой компании по большому счету есть нечто незыблемое, на что можно и нужно заложиться. Ибо отчеты могут строиться только исходя из конкретной структуры аналитик (я говорю сейчас про отчеты, понятные пользователю, а не конструкторы отчетов).
В результате - получаем - что там, где надо достать конкретно Подразделение - приходится хардкодить "Department" или выносить это в настройки, но это по сути - тот же хардкод, только глаза не режет, ибо никто никогда не проверяет работоспособность системы, если в настройке, где ожидается увидеть "Department" стоит "Cost Center" к примеру.

Главный плюс старого механизма - его простота и понятность. Как с т.з. программирования, так с т.з. заполнения и с т.з. выборок (отчетов). Однако, при этом - я не уверен, что найдется хотя бы одно приложение, на котором бы использовались фин. аналитики, но при этом не была бы предпринята попытка какую-то из аналитик интегрировать с каким-нибудь справочником.

Но раз уж нам пришлось столкнуться с универсальностью - давайте уж из нее выжмем все положительные моменты.
Например, то, что любой код аналитики можно связать со справочником. Например, поставщиков. И это в уже имеющейся системе. А если нужна связь с таким справочником, которого нет в системе - то достаточно несложное создание вьюшки с правильным названием, ссылающейся на наш справочник добавит и другой справочник в список возможных.
Правда тут тоже есть оговорка в плане сложности выборки. Не всегда удобный ввод способствует удобному выводу

А еще можно вспомнить любимую программу бухгалтера. Всем прижился термин субконто. Со всеми его плюсами и минусами. А тут мож сказать любимый вендор сделал большой шаг вперед по объединению идеологий

Это все шутки конечно. Однако, я думаю со временем - устоится вариант с финаналитиками, как со складскими аналитиками, которые тоже сначала были все равны, а потом уже появились "индивидуальные галочки" типа "контроль серийных номеров" или целые документы типа "заказ на перемещение", в которых есть "особые" аналитики.
Как говорится - не все сразу.
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: Pustik (3), S.Kuskov (1).
Старый 02.07.2012, 21:07   #19  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Интересна главная идея этой универсальности. Если речь идет о том, что любую аналитику (я имею ввиду состав)можно будет привязать к конкретному справочнику, то это сильный аргумент. Получается, что справочник фин. аналитик не будет просто существовать своей жизнью, а может при желании быть привязан к определенным сущестующим справочникам, тем самым упрощая анализ? Я правильно понимаю?
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 02.07.2012, 21:44   #20  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Pustik Посмотреть сообщение
Интересна главная идея этой универсальности. Если речь идет о том, что любую аналитику (я имею ввиду состав)можно будет привязать к конкретному справочнику, то это сильный аргумент. Получается, что справочник фин. аналитик не будет просто существовать своей жизнью, а может при желании быть привязан к определенным сущестующим справочникам?
Да.
В АХ 2012, чтобы создать новую аналитику (в терминах АХ 2009 - новый код аналитики) - нужно создать запись в таблице DimensionAttribute (\General ledger\Setup\Financial dimensions\Financial dimensions), выбрав из списка тот справочник, с которым будет связана новая аналитика
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 310
Размер:	28.1 Кб
ID:	7803
Либо выбрать <Custom dimension>, если мы хотим иметь аналитику, как свой собственный справочник, не связанный с каким-либо другим.

А список справочников на картинке выше состоит из вьюшек, имеющих префикс DimAttribute и ссылающихся на эти справочники. Соответственно, добавление в АОТ нужной и правильно названной вьюшки (плюс еще выполнение некоторых требований) может добавить в список свой справочник.
Нажмите на изображение для увеличения
Название: Снимок2.PNG
Просмотров: 394
Размер:	26.3 Кб
ID:	7804
Цитата:
Сообщение от Pustik Посмотреть сообщение
, тем самым упрощая анализ? Я правильно понимаю?
А вот тут уже надо бы поизучать структуру (см. выше ссылку на файл) таблиц, чтобы понять, насколько легко будет в такой структуре сделать выборку в разрезе по финансовой аналитике.
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 372
Размер:	234.5 Кб
ID:	7805
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: AvrDen (1).
Теги
ax2012, ledgerdimensions

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Enterprise Portal AX2012 - upgrade from AX2009 offenmeier DAX: Программирование 0 01.02.2012 02:21
sumitsaxfactor: Ledger Accounts and Financial Dimensions Blog bot DAX Blogs 0 13.12.2011 22:11
UPGRADE FROM AX2009 TO AX2012 polygris DAX: Программирование 11 20.10.2011 05:37
sumitax: AX2012 Features – Financial Dimensions changes Blog bot DAX Blogs 0 12.05.2011 15:11
Khue Trinh: Setting up a link between a financial dimension and the site inventory dimension Blog bot DAX Blogs 0 27.09.2010 13:05

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

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

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