Я предлагаю следующие два изменения для версии 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);
Calling эти строки в методе init
слишком раньше, потому что метод run
(который выполняется после init
) вызывает метод refreshGrids
, который удаляет данные во временных источниках данных формы.
Большое спасибо :). Это сработало. – Raas
Это сработало, но когда я обновил кеш в AX и когда я попытался открыть форму: SelectedNode получает значение null, и я получаю ошибку в строке B: «Объект FormTreeItem не инициализирован. Stack trace Forms \ FormName \ Methods \ Run "LineA: selectedNode = ctrlDimensionTree.getItem (ctrlDimensionTree.getSelection()); LineB: budgetAnalysisDimensionNode = selectedNode.data(); Поэтому я прокомментировал строку A и строку B и текст с жестким кодом в ctrlSelectedNode.text («HardcodedExpectedText»). Любые входы? – Raas
@Raas: Не могли бы вы создать для этого новый вопрос и более подробно описать, как это можно воспроизвести? Я не уверен, что вы имеете в виду «когда я обновляю кеш в AX», поскольку AX имеет много разных кешей. –