17.11.2022, 09:50 | #1 |
Участник
|
Получение параметров из ER диалогов
Застрял вот на такой задачке, может кто-то решал подобное и подскажет куда вообще двигаться.
Есть журнал платежей поставщиков в нем стандартная функция Сгенерировать платеж, у которой стоит галка использовать ER. В формате который задает ER есть 2 параметра, т.е. перед генерацией файла с платежом ER отображает диалог с этими параметрами Задача заключается в том, чтобы взять эти 2 параметра, и записать их в соответствующие строки журнала платежей после генерации файла Проблема в том что параметры и диалог для их отображения генерятся движком ER(куча вложенных друг в друга классов) и какой-то API для их получения сходу не удалось найти Как получить доступ к этим параметрам? |
|
17.11.2022, 10:37 | #2 |
Участник
|
Как понимаю в диалоге есть два параметра выбираемых пользователем и есть желание протащить их в Axapta?
В ER можно вызвать класс и метод Axapta и запихать в параметры метода соответственно параметры из ER |
|
|
За это сообщение автора поблагодарили: trud (1). |
17.11.2022, 11:16 | #3 |
Участник
|
Не решал, но нашёл вот такой пример в коробке, возможно вам поможет.
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(); } Возможно решать надо будет аналогичным способом - при нажатии на ОК в основном диалоге, показывать диалог из ER самому, запоминать введенные значения в переменные, а дальше их уже передавать в вызов генерации файла и не показывать диалог там.
__________________
Sergey Nefedov |
|
18.11.2022, 08:19 | #4 |
Участник
|
Цитата:
Идея с вызомом класса в принципе выглядит нормально, вопрос а как в дизайнере указать что надо вызывать класс |
|
18.11.2022, 09:22 | #5 |
Участник
|
|
|
22.11.2022, 10:16 | #6 |
Участник
|
Спасибо за ответы, но так и не удалось пробраться через структуру 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 |
Участник
|
Цитата:
Из ER мы можем же вызвать методы Ax (собственно так реализована подмена SSRS провайдеров - где в ER вызываются методы классов провайдеров) и передать туда в том числе и значения параметров введенные пользователем (завел в модели поле под это и честно записал значение). Последний раз редактировалось axm2017; 22.11.2022 в 10:38. |
|
23.11.2022, 03:21 | #8 |
Участник
|
Решение не очень, согласен. Но непонятно как сделать то что вы пишите. Т.е. даже упрощенный случай - создаем модель с параметром, при выборе этого параметра он к примеру выводится в инфолог
Напишите статью если делали так |
|
23.11.2022, 09:14 | #9 |
Участник
|
Ок как найду время то попытаюсь (просто сейчас отпуск близится и не до экспериментов надо закрыть текущие вопросы)
+ чуть упрощу: запишу в табличку (можно при желании будет сделать event и тем самым получить инфолог) то что ввел юзер. |
|
25.11.2022, 12:49 | #10 |
Участник
|
Мелкий пример так как скоро уже надеюсь буду в солнечной Турции чтобы закрыть вопрос со своей стороны
1 Есть модель в которой указан параметр (2) и какой то набор записей (1) 2 Делаю mapping в котором задаю пользовательский параметр для выбора и выборку записей по поставщику 3 На таблице или в классе у меня есть статический метод (можно и не статический но так было бы сложнее и для показа смысла не имеет) вида 4 пишу в сопоставлении код, который дергает метод таблицы передавая в него в качестве параметра введенное пользователем 4 Тестю 5 Получаю результат |
|
|
За это сообщение автора поблагодарили: trud (20). |
|
|