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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.01.2018, 17:57   #1  
Maximin is offline
Maximin
NavAx
NavAx Club
 
408 / 341 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
AX7 D365 Перехват lookup на поле datasource
Доброго дня, коллеги!

Кто-нибудь пробовал в D365 (AX7) сделать кастомный lookup, перекрывая (registerOverride) событие lookup именно у поля datasource, а не контрола (FormStringControl). У кого-то это получилось? А то или лыжи не едут, или поломано что-то где-то. Нужно, т.к. хочу, чтобы лукап работал всегда, даже если юзер руками добавил поле на форму.
Так вот - в поле даже перевернутый треугольник для выбора не появляется (т.е. оно остается просто полем,а не combobox). При попытке принудительно сказать ему FormLookupButton:Always, оно становится Combobox, но при поытке открыть ниспадающий список - "Cannot open lookup due to insufficient metadata information".
Делаю так, регистрация registerOverride проходит, никаких runtime ошибок:
X++:
[ExtensionOf(FormStr(<myForm>))]
final public class <myForm>_Extension
{
    [FormDataSourceEventHandler(formDataSourceStr(<myForm>, <datasource>), FormDataSourceEventType::Initialized)]
    public static void <datasource>_OnInitialized(FormDataSource _sender, FormDataSourceEventArgs _e)
    {
        var overrider = <myForm>EventHandler::construct();

        _sender.object(fieldNum(<table from datasource>, <field for lookup>)).registerOverrideMethod(
            methodStr(FormDataObject, lookup),
            methodStr(<myForm>EventHandler, priceOverride_OnLookup), overrider);
    }
}
//Теперь класс, обрабатывающий лукап
class <myForm>EventHandler
{
    protected void new()
    {
    }

    public static <myForm>EventHandler construct()
    {
        return new <myForm>EventHandler();
    }

    public void priceOverride_OnLookup(FormDataObject _targetField, FormControl _formControl, str _filterStr)
    {
        <myForm>EventHandler::LookupField(_formControl);
    }

    protected static void LookupField(FormControl callingControl)
    {
        Query query = new Query();
        QueryBuildDataSource queryBuildDataSource;
        QueryBuildRange queryBuildRange;

        ///blah-blah-blah
        ///...
        ///blah-blah-blah

        sysTableLookup.parmQuery(query);

        sysTableLookup.performFormLookup();
    }
}
P.S. Боже, какое это AX7 тормознутое, убогое и неудобное в разработке. Приходится сказать по сраному Visual Studio как лягушка по раскаленной сковороде, чтобы что-то увидеть и открыть. По десятку кликов, чтобы посмотреть пару форм. Дизайнер UI в VS и не ночевал. А чего стоят формы, не влезающие по вертикали на экран, особенно с гридом где-нибудь поближе к нижней границе, и кол-вом строк в ней побольше. Скачешь к кнопкам "+Add line" (или еще какой нужной кастомной) в заголовке грида, как идиот.
Такое впечатление, что в MS уже давно используют мысленные интерфейсы вместо клавиатур и мышей и никто не запаривается о тех, кто будет это все допиливать врукопашную.
И это я еще плевался на AX2012... да я сейчас почти молиться на неё готов.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...

Последний раз редактировалось Maximin; 09.01.2018 в 18:00. Причина: Куда-то проваливаются русские символы в треугольных скобках
Старый 09.01.2018, 22:41   #2  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
А эта же логика на контроле точно работает?

https://dynamicsuser.net/ax/f/develo...orking-in-ax-7
Тут аналогично уперлись в то что таблица UtilElements пустая.

P.S.
Цитата:
P.S. Боже, какое это AX7 тормознутое, убогое и неудобное в разработке
У вас просто маломощный компьютер и маленький экран, а также необоснованный негатив к корпорации бабла.
И еще любовь к садо-мазо. Есть ли вообще какой-то смысл тратить на AX7 свое время?

Последний раз редактировалось ax_mct; 09.01.2018 в 22:52.
Старый 09.01.2018, 22:56   #3  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Оно раньше не работало, потом его чинили, потом опять поломали, видимо так и не починили. Но такой ошибки я не встречал, обычно просто метод не вызывался. Заведите баг, пусть опять починят.
Если есть возможность можете лукап форму на EDT поставить.
За это сообщение автора поблагодарили: ax_mct (1).
Старый 10.01.2018, 01:44   #4  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
На моем 7.3, PU13 работает как часы. С сигнатурой как у вас
X++:
(FormDataObject _targetField, FormControl _formControl, str _filterStr)
кидает ошибку "метод бла-бла не существует в классе бла-бла", "рабочая" сигнатура:
X++:
OnLookup(FormStringControl _callingControl)
"Перевернутая стрелочка" появилась сама без никаких манипуляций. Так что АХ лучше чем вы думаете, вы просто не умеете ее готовить или сидите на старой версии
Старый 10.01.2018, 12:54   #5  
Maximin is offline
Maximin
NavAx
NavAx Club
 
408 / 341 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Цитата:
Сообщение от skuull Посмотреть сообщение
На моем 7.3, PU13 работает как часы. С сигнатурой как у вас
X++:
(FormDataObject _targetField, FormControl _formControl, str _filterStr)
кидает ошибку "метод бла-бла не существует в классе бла-бла", "рабочая" сигнатура:
X++:
OnLookup(FormStringControl _callingControl)
Фиг знает, где смотреть но в About версия "Update9 (7.0.4612.35162)".
Попробовал. Даже с вашей сигнатурой метод не вызывается. Странно, что никаких ошибок не кидается даже с неправильной сигнатурой.
Значит, поломано.

Кстати, насчет сигнатур - свою брал здесь: https://community.dynamics.com/ax/f/33/t/252260
Здесь писали, что поломано для lookup https://ievgensaxblog.wordpress.com/...ut-overlaying/
А вот здесь уже в 2012й- как у вас: http://imdaxershiv.blogspot.ru/2016/...alogfield.html
Видимо, в 7ке поломали, на входе должен быть FormDataObject (или как у меня - полный набор всего), но для него не работало. Да и на входе хорошо бы контрол иметь, а не поле, вот и запатчили. Вот интересно, а где сигнатуры правильные-то брать, кстати? Нормального справочника по API как в 2012й-то нету, сплошная беллетристика с примерами...

Цитата:
Сообщение от ax_mct Посмотреть сообщение
А эта же логика на контроле точно работает?

https://dynamicsuser.net/ax/f/develo...orking-in-ax-7
Тут аналогично уперлись в то что таблица UtilElements пустая.
Там другая проблема - там речь о том, что товарищ собирался все доступные формы показать в лукапе, а их в UtilElements уже нет. У меня до вызова лукапа дело не доходит.
Цитата:
Сообщение от ax_mct Посмотреть сообщение
P.S.

У вас просто маломощный компьютер и маленький экран, а также необоснованный негатив к корпорации бабла.
И еще любовь к садо-мазо. Есть ли вообще какой-то смысл тратить на AX7 свое время?
Ну, экран 1650на сколько-то там, да - не FullHD. Да и удаленка на разработческую ВМ через браузер жрет место - неудобно его в фуллскрине держать. Но современные ж экраны скорее широкие, чем высокие.
А смысл тратить время есть, если это хорошо оплачивается. Так что если платят - почему не копаться? Но чувствуешь себя сродни золотарю...
Да, я умею в иронию.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...

Последний раз редактировалось Maximin; 10.01.2018 в 12:58.
Старый 10.01.2018, 22:05   #6  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Что вас останавливает поставить последний PU и радоваться рабочему лукапу ? И что случилось с ошибкой о которой вы раньше писали ?
Старый 10.01.2018, 23:30   #7  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,486 / 408 (16) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от skuull Посмотреть сообщение
Что вас останавливает поставить последний PU и радоваться рабочему лукапу?
Если вся команда работает в PU9 то какой смысл отдельному разработчику обновляться до актуала?
__________________
С уважением,
Вячеслав
Старый 11.01.2018, 07:15   #8  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
А какой смысл команде работать в PU9 если там что-то не работает и все равно рано или поздно придется обновляться ...
Старый 11.01.2018, 15:26   #9  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от Maximin Посмотреть сообщение
А смысл тратить время есть, если это хорошо оплачивается. Так что если платят - почему не копаться? Но чувствуешь себя сродни золотарю...
Да, я умею в иронию.
Оно действительно оплачивается здесь и сейчас? Задача сама по себе не выглядит коммерческой, проблема чисто внутри-программистская.

Больше похоже на собственные лабы в расчете на золотые горы обещанные "неграми за франк".
Если так то не стоит.

В лучшем случае задача постоянному программисту пощупать и потрогать AX7, тогда да почему бы и нет. Но чтобы такое на проекте? - Не верится.
Старый 11.01.2018, 15:51   #10  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,486 / 408 (16) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от skuull Посмотреть сообщение
А какой смысл команде работать в PU9 если там что-то не работает и все равно рано или поздно придется обновляться ...
это уже вопрос к тимлиду
как я понял, автор таковым не является, значит надо принимать ситуацию в команде такой, какая она есть
__________________
С уважением,
Вячеслав
Старый 11.01.2018, 15:53   #11  
Maximin is offline
Maximin
NavAx
NavAx Club
 
408 / 341 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Цитата:
Сообщение от skuull Посмотреть сообщение
А какой смысл команде работать в PU9 если там что-то не работает и все равно рано или поздно придется обновляться ...
Голосом советской продавщицы, уперевшей руки в боки:
"Мужчина из Майкрософт! Вы там в Майкраасофте все тааакие интересные... "
Потому что платить за работу по обновлению никто не хочет, пока нет таких критичных багов, которые программеры не могут обойти. That's all.

Цитата:
Сообщение от ax_mct Посмотреть сообщение
Оно действительно оплачивается здесь и сейчас? Задача сама по себе не выглядит коммерческой, проблема чисто внутри-программистская.
Чесслово, оплачивается! Конс добавил (ну, как добавил - вернул user customizationом) поле на форму, а на нем, когда оно было нормальным, был кастомный лукап. Теперь не лукапится, ессно. Просил "вернуть relation". Наивный такой... Я полез разобраться, а фиг там. Пришлось сказать ему не выделываться, и добавить обратно контрол с перекрытым лукапом. Вот тебе и "no programming".

BTW, мне вот интересно в свете анонсированной MS возможности "добавить поле без программирования". Как насчет "добавить поле-ссылку на связанную таблицу с лукапом, в котором будет еще и описание и пара полей"? А как насчет "добавить поле и показать не все записи из связанной таблицы в этом лукапе"?
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
За это сообщение автора поблагодарили: ax_mct (3).
Старый 11.01.2018, 16:04   #12  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Maximin Посмотреть сообщение
Потому что платить за работу по обновлению никто не хочет
Сколько ее там, "работы по обновлению" на текуций PU ? По часу на окружение ?
Цитата:
пока нет таких критичных багов, которые программеры не могут обойти
Либо у Вас очень рукастые программисты, либо Вы CoC использовать в полный рост еще не начали Пошукайте на LCS в описаниях доступных платформенных патчей, сразу появится мотивация обновиться
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: skuull (1).
Старый 11.01.2018, 16:30   #13  
Maximin is offline
Maximin
NavAx
NavAx Club
 
408 / 341 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Post
Цитата:
Сообщение от Vadik Посмотреть сообщение
Сколько ее там, "работы по обновлению" на текуций PU ? По часу на окружение ?
Вы просто в контексте находитесь, и в курсе - куда надо смотреть, чего отвалится, чего нового поправили. А на проекте уже чего надо запатчили сами и забыли. А при обновлении будешь сидеть и каждую затычку пересматривать - не отвалилось ли чего. Какой там час... Там одни только release notes будешь час читать. И с тормознутостью VS и ограниченностью его средств сравнения я даже предполагать не хочу - сколько нервов и времени может уйти на всё это.
Это только в МС все быстро делается - есть автоматизированное производительное окружение и куча тестов. Накатил - запустил, посмотрел что отвалилось. На практике - ресурсы ограничены, тесты мало кто пишет.

Цитата:
Сообщение от Vadik Посмотреть сообщение
Либо у Вас очень рукастые программисты, либо Вы CoC использовать в полный рост еще не начали Пошукайте на LCS в описаниях доступных платформенных патчей, сразу появится мотивация обновиться
CoC используем, пока все работает. Сильно сложных вещей пока не делали на нем. Может быть, в будущем что-то и выползет. В любом случае - этот геморрой будет не мой, а тимлида/архитектора.
Я слишком стар для этого дерьма. Я знаю, как оно должно делаться, и делать так, как делается сейчас - не хочу. А сделать "как правильно" - нет возможности, т.к. все начинает упираться в деньги. Поэтому я тихонечко делаю таски, мне за это платят, поскольку все что напилю - работает. А дальше - хоть трава не расти.
Найдутся те, кто вытрясет из людей кучу денег на ликвидацию тех.долга - на здоровье.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
За это сообщение автора поблагодарили: Link (5), sukhanchik (4), Logger (1).
Старый 11.01.2018, 18:19   #14  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от Maximin Посмотреть сообщение
Я слишком стар для этого дерьма. Я знаю, как оно должно делаться, и делать так, как делается сейчас - не хочу. А сделать "как правильно" - нет возможности, т.к. все начинает упираться в деньги. Поэтому я тихонечко делаю таски, мне за это платят, поскольку все что напилю - работает. А дальше - хоть трава не расти.
Найдутся те, кто вытрясет из людей кучу денег на ликвидацию тех.долга - на здоровье.
Выделенное это наше всех.
Но все же да
Теги
d365o, lookup

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
alirazazaidi: Custom financial Dimension shows in lookup D365 for Finance and operations Blog bot DAX Blogs 0 14.09.2017 13:11
dynamicsaxinsight: AX7/D365/Operations: Create custom data entity Blog bot DAX Blogs 0 14.09.2017 13:11
sunilrakesh: Reference group lookup in D365 (Ax7) Blog bot DAX Blogs 0 31.05.2017 17:11
patrickmouwen: AX7 – My top 12 highlights Blog bot DAX Blogs 0 27.02.2016 13:11
axforum blogs: Вспомогательный документооборот. Поле "Код конфигурации вспомогательного бизнес-правила" lookup ни чего не показывает. Blog bot DAX Blogs 0 08.04.2011 10:11
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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