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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.06.2019, 11:12   #1  
Blog bot is offline
Blog bot
Участник
 
22,325 / 771 (70) +++++++
Регистрация: 28.10.2006
ievgensaxblog: MSDyn365FO. How-to extend product dimension lookup to add dimension description.
Источник: https://ievgensaxblog.wordpress.com/...n-description/
==============

Recently I saw a question on community forum asking how to extend InventProductDimensionLookup form to add description column, it’s not an obvious task, so I decided to write small blog post about it.

InventProductDimensionLookup form is used to lookup all product dimensions, so we will add new display method to retrieve description from EcoResProductMasterDimValueTranslation table. Simple solution would be to extend form data source, but currently (PU27) there is an issue with display methods. Display method added directly to a form data source accepts current record but display method on extension does not accept anything. Without table buffer display method shows value based on a first record in the grid, that does not make any sense. To workaround this issue we will add new display method to a table extension and check if it is called from a form to grab data required.

[ExtensionOf(tableStr(InventDim))] public final class InventDim_IM_Extension { public display Name displayDimDescription_IM() { FieldId dimFieldId; EcoResProductRecId product; boolean isCalledFromnventProductDimensionLookup; if (FormDataUtil::isFormDataSource(this)) { FormDataSource dataSource = FormDataUtil::getFormDataSource(this); if (formHasMethod(dataSource.formRun(), formMethodStr(InventProductDimensionLookup, inventDimSetupObject))) { Object formRun = dataSource.formRun(); InventDimCtrl_Frm_Lookup inventDimCtrl_Frm_Lookup = formRun.inventDimSetupObject(); dimFieldId = inventDimCtrl_Frm_Lookup.parmMainSortFieldId(); product = InventTable::find(inventDimCtrl_Frm_Lookup.callerItemId()).Product; isCalledFromnventProductDimensionLookup = true; } } Name dimName; if (!isCalledFromnventProductDimensionLookup) { return dimName; } LanguageId userLanguageId = new xInfo().language(); RecId dimRecId; switch (dimFieldId) { case fieldNum(InventDim, configId): EcoResConfiguration ecoResConfiguration; EcoResProductMasterConfiguration ecoResProductMasterConfiguration; select firstonly RecId from ecoResProductMasterConfiguration where ecoResProductMasterConfiguration.ConfigProductMaster == product exists join ecoResConfiguration where ecoResConfiguration.RecId == ecoResProductMasterConfiguration.Configuration && ecoResConfiguration.Name == this.(dimFieldId); dimRecId = ecoResProductMasterConfiguration.RecId; break; case fieldNum(InventDim, inventSizeId): EcoResSize ecoResSize; EcoResProductMasterSize ecoResProductMasterSize; select firstonly RecId from ecoResProductMasterSize where ecoResProductMasterSize.SizeProductMaster == product exists join ecoResSize where ecoResSize.RecId == ecoResProductMasterSize.Size && ecoResSize.Name == this.(dimFieldId); dimRecId = ecoResProductMasterSize.RecId; break; case fieldNum(InventDim, inventColorId): EcoResColor ecoResColor; EcoResProductMasterColor ecoResProductMasterColor; select firstonly RecId from ecoResProductMasterColor where ecoResProductMasterColor.ColorProductMaster == product exists join ecoResColor where ecoResColor.RecId == ecoResProductMasterColor.Color && ecoResColor.Name == this.(dimFieldId); dimRecId = ecoResProductMasterColor.RecId; break; case fieldNum(InventDim, inventStyleId): EcoResStyle ecoResStyle; EcoResProductMasterStyle ecoResProductMasterStyle; select firstonly RecId from ecoResProductMasterStyle where ecoResProductMasterStyle.StyleProductMaster == product exists join ecoResStyle where ecoResStyle.RecId == ecoResProductMasterStyle.Style && ecoResStyle.Name == this.(dimFieldId); dimRecId = ecoResProductMasterStyle.RecId; break; } if (dimRecId) { dimName = EcoResProductMasterDimValueTranslation::getDescriptionOrDefaultDescription(dimRecId, userLanguageId); } return dimName; } } Now extend the form and add new control





If you cannot select data method from the drop down, compile class first and then it should be available.





Источник: https://ievgensaxblog.wordpress.com/...n-description/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Старый 01.07.2019, 04:38   #2  
trud is offline
trud
Участник
Лучший по профессии 2017
 
769 / 998 (35) +++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Simple solution would be to extend form data source, but currently (PU27) there is an issue with display methods. Display method added directly to a form data source accepts current record but display method on extension does not accept anything. Without table buffer display method shows value based on a first record in the grid, that does not make any sense
Четко. Как интерестно такое вообще проходит(если он есть в каком-то виде) контроль качества внутри микрософта. Я так понимаю исправить это в принципе теперь нельзя, так как старый код перестанет компилиться, а OneVersion должна гарантировать бинарную совместимость. RIP дисплей методы на форме
Старый 01.07.2019, 08:47   #3  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
648 / 669 (24) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Там в 1 методе косяк, FormUtil класс или как-то так, туда приходит буфер, все с ним хорошо, а потом какие-то интеллектуалы из него получают датасоурс и передают его как параметр в dictClass.callStatic. На яммере 3 месяца назад писали, что об этом знают и баг в очереди но без PU, видимо не приоритет. Как будут чинить это вопрос хороший, наверное допишут костыль и будут проверять сколько параметров у метода, как уже сделано чтобы отличить edit методы.
Старый 01.07.2019, 10:18   #4  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,974 / 3867 (186) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
https://www.youtube.com/watch?v=MC96YUdWFt4
к концу 4й минуты видео в голове отчетливо проявляются цитаты великого мыслителя Нахуа.
к конце 13й минуты наступает дзен и разливается восхищение от тотальной бессмысленности труда создателей.

просто, чтобы было "красиво".
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
За это сообщение автора поблагодарили: twilight (1).
Старый 01.07.2019, 11:08   #5  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
648 / 669 (24) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
А чем "красиво" не повод? А то выходит что надо просто пойти и умереть.
Старый 01.07.2019, 11:11   #6  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,974 / 3867 (186) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от skuull Посмотреть сообщение
А чем "красиво" не повод?
вполне.

Цитата:
Сообщение от skuull Посмотреть сообщение
А то выходит что надо просто пойти и умереть.
а вариант "красиво" и "с пользой" совсем не рассматривается?

например, следующее видео от этих же авторов https://www.youtube.com/watch?v=hvEh8xrgqZY
вполне можно озаглавить "из говна и палок".
но впечатления от проделанной работы совсем другие.
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 01.07.2019, 11:17   #7  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
648 / 669 (24) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
ИМХО, польза и красота субьективные критерии. На лодке можно плыть, а в шалаше жить, но вот почему-то шалаш полезней...
Старый 01.07.2019, 11:21   #8  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,974 / 3867 (186) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от mazzy Посмотреть сообщение
На лодке
?!
лодке?!

Как скажешь.
Так выпьем за специально обученных людей, которые умеют продать этот продукт!
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 01.07.2019, 11:35   #9  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
648 / 669 (24) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
А что там было в первом видео? Не паравоз же.
Старый 01.07.2019, 11:42   #10  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,504 / 4772 (165) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от skuull Посмотреть сообщение
А что там было в первом видео? Не паравоз же.
Мне показалось что это видео про карго-культ. Потому что лодка там была построена в далеке от воды, с щелями по всему корпусу да и еще и каркас лодки был вкопан в землю.
Старый 01.07.2019, 11:50   #11  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
648 / 669 (24) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Для меня загадка откуда у mazzy такие познание в творчестве этих ребят А лодка настолько же хороша насколько и это блог.
Старый 01.07.2019, 11:57   #12  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,974 / 3867 (186) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от skuull Посмотреть сообщение
Для меня загадка откуда у mazzy такие познание в творчестве этих ребят А лодка настолько же хороша насколько и это блог.
Му-ха-ха. И маззи плох, и блог гавно.

а запоротые display/edit методы - норм. как и тотально бессмысленная работа над текущими финасовыми аналитиками.

подкину дровишек:
блог бесплатный. а вот продукт за деньги продается выдается в аренду.
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 01.07.2019, 12:13   #13  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
648 / 669 (24) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Мне блог нравится и лодка была красивая.

Я бы назвал их "недореализованные" display/edit методы. Проблема в том, что всем пофиг на их реализацию как и на много других мелких вещей.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ievgensaxblog: MSDyn365FO. How to Import CSV file using Electronic Reporting. Part 2 – Format. Blog bot DAX Blogs 0 06.02.2019 07:12
alexef: How to add a field to Item Card in Business Central Blog bot NAV: Blogs 0 22.05.2018 20:11
How to lookup and set a new value for Financial dimension Blog bot DAX Blogs 0 03.10.2015 02:35
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
DynamicsAxSCM: Product-item data management services Blog bot DAX Blogs 0 06.07.2011 17:11
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:09.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.