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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.11.2022, 09:50   #1  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Получение параметров из ER диалогов
Застрял вот на такой задачке, может кто-то решал подобное и подскажет куда вообще двигаться.
Есть журнал платежей поставщиков в нем стандартная функция Сгенерировать платеж, у которой стоит галка использовать ER. В формате который задает ER есть 2 параметра, т.е. перед генерацией файла с платежом ER отображает диалог с этими параметрами
Нажмите на изображение для увеличения
Название: ERDialog.png
Просмотров: 12
Размер:	41.0 Кб
ID:	13499
Задача заключается в том, чтобы взять эти 2 параметра, и записать их в соответствующие строки журнала платежей после генерации файла
Проблема в том что параметры и диалог для их отображения генерятся движком ER(куча вложенных друг в друга классов) и какой-то API для их получения сходу не удалось найти
Нажмите на изображение для увеличения
Название: ERExportClass.png
Просмотров: 13
Размер:	31.5 Кб
ID:	13500
Как получить доступ к этим параметрам?
Старый 17.11.2022, 10:37   #2  
axm2017 is offline
axm2017
Участник
 
1,933 / 313 (14) ++++++
Регистрация: 15.05.2017
Как понимаю в диалоге есть два параметра выбираемых пользователем и есть желание протащить их в Axapta?

В ER можно вызвать класс и метод Axapta и запихать в параметры метода соответственно параметры из ER
За это сообщение автора поблагодарили: trud (1).
Старый 17.11.2022, 11:16   #3  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Не решал, но нашёл вот такой пример в коробке, возможно вам поможет.

X++:
 class LedgerSIEExportFile 

    public void dialogClosedWithOk(Object _dialog)
    {
        super(_dialog);

        var paramsActions = this.createParamActions();
        var formatMappingRun = ERObjectsFactory::createFormatMappingRunByFormatMappingId(erBinding, '', true)
            .withParameter(paramsActions);

        var formatRunController = formatMappingRun.getController();
        erDialogClosedOk = formatRunController.prompt();

        if (erDialogClosedOk)
        {
            formatRunContract = formatRunController.getDataContractObject() as ERIFormatMappingRunContract;
            modelDefinitionParameters = formatRunContract.parmModelDefinitionParameters();
        }
Получается, что примерно такой стек formatMappingRun -> formatRunController -> ERIFormatMappingRunContract -> parmModelDefinitionParameters.

Возможно решать надо будет аналогичным способом - при нажатии на ОК в основном диалоге, показывать диалог из ER самому, запоминать введенные значения в переменные, а дальше их уже передавать в вызов генерации файла и не показывать диалог там.
__________________
Sergey Nefedov
Старый 18.11.2022, 08:19   #4  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от axm2017 Посмотреть сообщение
Как понимаю в диалоге есть два параметра выбираемых пользователем и есть желание протащить их в Axapta?

В ER можно вызвать класс и метод Axapta и запихать в параметры метода соответственно параметры из ER
Да, в диалоге 2 параметра. Причем один из них задается в модели, откуда возникает второй(дата в диалоге) вообще не понятно.
Идея с вызомом класса в принципе выглядит нормально, вопрос а как в дизайнере указать что надо вызывать класс
Нажмите на изображение для увеличения
Название: Format.png
Просмотров: 17
Размер:	18.0 Кб
ID:	13501
Старый 18.11.2022, 09:22   #5  
axm2017 is offline
axm2017
Участник
 
1,933 / 313 (14) ++++++
Регистрация: 15.05.2017
На уровне идей в mapping вроде есть
Нажмите на изображение для увеличения
Название: Screenshot example.jpg
Просмотров: 19
Размер:	117.4 Кб
ID:	13502
Старый 22.11.2022, 10:16   #6  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Спасибо за ответы, но так и не удалось пробраться через структуру ER классов. По ходу выяснилось что могут быть 2 типа параметров(для модели и для дизайна), как с ними работать никто из знакомых не смог ответить. В документации есть вот такая статья, но проблема в том что метод который обновляет строки журнала вызывается как post задача, в новой сессии и как достать оттуда параметры не очень понятно
https://learn.microsoft.com/en-us/dy...om-source-code
В итоге решил несколько иначе. После запуска класса с диалогом он сохраняет свое состояние в SysLastValue, кодом ниже получилось достать XML и взять из него сохраненную дату

X++:
         ERFormatMappingTable  formatMappingTable = ERFormatMappingTable::find(erBinding);
        SysLastValue          sysLastValue;
        FIEpaymentAdvDate = dateNull();
        if (formatMappingTable)
        {
            Name designName = strFmt('%1:%2', 
                    tableStr(ERFormatMappingTable), formatMappingTable.GUID);

            select firstonly sysLastValue
                order by RecId desc
                where sysLastValue.userId == curUserId() &&
                      sysLastValue.company == curExt() &&
                      sysLastValue.elementName == classStr(ERContractEditorController) &&
                      sysLastValue.designName  == designName;
Старый 22.11.2022, 10:25   #7  
axm2017 is offline
axm2017
Участник
 
1,933 / 313 (14) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от trud Посмотреть сообщение
Спасибо за ответы, но так и не удалось пробраться через структуру ER классов...
Не совсем понятно зачем это надо.
Из ER мы можем же вызвать методы Ax (собственно так реализована подмена SSRS провайдеров - где в ER вызываются методы классов провайдеров) и передать туда в том числе и значения параметров введенные пользователем (завел в модели поле под это и честно записал значение).

Последний раз редактировалось axm2017; 22.11.2022 в 10:38.
Старый 23.11.2022, 03:21   #8  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Решение не очень, согласен. Но непонятно как сделать то что вы пишите. Т.е. даже упрощенный случай - создаем модель с параметром, при выборе этого параметра он к примеру выводится в инфолог
Напишите статью если делали так
Старый 23.11.2022, 09:14   #9  
axm2017 is offline
axm2017
Участник
 
1,933 / 313 (14) ++++++
Регистрация: 15.05.2017
Ок как найду время то попытаюсь (просто сейчас отпуск близится и не до экспериментов надо закрыть текущие вопросы)
+ чуть упрощу: запишу в табличку (можно при желании будет сделать event и тем самым получить инфолог) то что ввел юзер.
Старый 25.11.2022, 12:49   #10  
axm2017 is offline
axm2017
Участник
 
1,933 / 313 (14) ++++++
Регистрация: 15.05.2017
Мелкий пример так как скоро уже надеюсь буду в солнечной Турции чтобы закрыть вопрос со своей стороны
1 Есть модель в которой указан параметр (2) и какой то набор записей (1)
Нажмите на изображение для увеличения
Название: pic1 test .jpg
Просмотров: 10
Размер:	40.5 Кб
ID:	13504
2 Делаю mapping в котором задаю пользовательский параметр для выбора и выборку записей по поставщику
Нажмите на изображение для увеличения
Название: pic 2 param test.jpg
Просмотров: 10
Размер:	66.0 Кб
ID:	13505

3 На таблице или в классе у меня есть статический метод (можно и не статический но так было бы сложнее и для показа смысла не имеет) вида

Нажмите на изображение для увеличения
Название: pic 3 test.jpg
Просмотров: 10
Размер:	50.2 Кб
ID:	13506

4 пишу в сопоставлении код, который дергает метод таблицы передавая в него в качестве параметра введенное пользователем
Нажмите на изображение для увеличения
Название: pic 4 test.jpg
Просмотров: 16
Размер:	46.8 Кб
ID:	13507

4 Тестю
Название: pic5 form.jpg
Просмотров: 84

Размер: 22.4 Кб

5 Получаю результат
Нажмите на изображение для увеличения
Название: test6_table.jpg
Просмотров: 10
Размер:	33.6 Кб
ID:	13509
За это сообщение автора поблагодарили: trud (20).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
erconsult: Electronic Reporting (ER) Cookbook 4: References in a model Blog bot DAX Blogs 0 04.12.2020 06:14
cleverax: ER: Add product image to your Business documents Blog bot DAX Blogs 0 17.04.2020 13:11
erconsult: Electronic Reporting (ER) Cookbook 2: new tips from the kitchen Blog bot DAX Blogs 0 06.08.2018 17:11
powerobjects: Electronic Reporting in Dynamics 365 for Finance and Operations Blog bot DAX Blogs 0 14.02.2018 03:28
erconsult: Electronic Reporting (ER) Cookbook Blog bot DAX Blogs 24 09.10.2017 08:47

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

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

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