Сетка правого окна формы бюджетного анализа должна по умолчанию открываться, когда я открываю форму для отдельного проекта. Топор динамики

В форме анализа бюджета, когда мы открываем форму, она показывает список проектов в левой сетке. Затем, когда мы выбираем значение в левой сетке, заполняется только сетка справа. Если у меня есть только один проект с левой стороны, могу ли я получить правую сетку, заполненную для этого проекта, в то время, когда я открываю форму?

Я попытался перенести код из метода выбора измененного метода левой сетки в метод инициализации формы, но у меня возникают некоторые трудности с узлами дерева и т. Д.

Может ли кто-нибудь предложить мне лучший способ сделать это?




Ответы (1)


Я бы предложил следующие два изменения для версии AX 2012 R3. Я предполагаю, что это также будет работать в других версиях AX 2012. Я не смог найти никакого анализа бюджета в AX 2009 и сомневаюсь, что он там существует, потому что он является частью розничного модуля, который был представлен в AX 2012.

Во-первых, настройте построение элемента управления в виде дерева так, чтобы первый дочерний элемент был выбран вместо корня. Для этого настройте метод initTreeControl класса BudgetAnalysisInquiryHelper_PSN и добавьте следующую строку после того, как дерево было развернуто:

_formTreeControl.select(_formTreeControl.getChild(_formTreeControl.getRoot()));

Теперь, когда выбран правильный узел в дереве, можно вызвать getBudgetSummary метод формы BudgetAnalysisInquiry_PSN для обновления сетки. Для этого после открытия формы поместите следующие строки в конец метода run (в основном те же строки, что и в методе selectionChanged древовидного элемента управления):

selectedNode = ctrlDimensionTree.getItem(ctrlDimensionTree.getSelection());
budgetAnalysisDimensionNode = selectedNode.data();
ctrlSelectedNode.text(budgetAnalysisDimensionNode.getNodeText());
element.getBudgetSummary(ctrlDimensionTree);

Вызывать эти строки в методе init слишком рано, потому что метод run (который выполняется после init) вызывает метод refreshGrids, который удаляет данные во временных источниках данных формы.

person FH-Inway    schedule 02.05.2016
comment
Это сработало, но когда я обновляю кеш в AX и когда я пытался открыть форму: SelectedNode получает нулевое значение, и я получаю сообщение об ошибке в строке B: объект FormTreeItem не инициализирован. Трассировка стека Forms \ FormName \ Methods \ Run LineA: selectedNode = ctrlDimensionTree.getItem (ctrlDimensionTree.getSelection ()); СтрокаB: budgetAnalysisDimensionNode = selectedNode.data (); Итак, я прокомментировал строки A и B и жестко закодированный текст в ctrlSelectedNode.text (HardcodedExpectedText); Любые входные данные? - person Raas; 05.05.2016
comment
@Raas: Не могли бы вы создать для этого новый вопрос и более подробно описать, как это можно воспроизвести? Я не уверен, что вы имеете в виду, когда я обновляю кеш в AX, поскольку в AX много разных кешей. - person FH-Inway; 06.05.2016