Announcements
Please help me to update the Product configuration attribute value from custom field. I am able to update xml but form is not refreshing with updated xml.
Tried below code:-
str configuredProductXML;
FormDataSource fds = sender.formRun().dataSource();// as PCRuntimeConfiguratorInfo;
PCRuntimeConfiguratorInfo RuntimeConfiguratorInfo = fds.cursor();
PCProductConfigurationModel productConfigurationModel ;//= PCProductConfigurationModel::findByName("LOGO");
//PCRuntimeControl runTimeControl = sender.formRun().design().controlName(formControlStr(PCRuntimeConfigurator,PCRuntimeControl));
FormControl itemSearch = sender.formRun().design().controlName(formControlStr(PCRuntimeConfigurator,WfsItemSearch));
FormTabPageControl tabPageCtrl = sender.formRun().design().controlName(formControlStr(PCRuntimeConfigurator,tabBody));
str item = itemSearch.valueStr();
FormRun fr = sender.formRun();
PCRuntimeControl runTimeControl = fr.parmPCRuntimeControl();
productConfigurationModel = fr.parmPCProductConfigurationModel();
//Info(strFmt("%1",runTimeControl.xmlModel()));
XmlDocument xmlDocument = XmlDocument::newXml(productConfigurationModel.getXML());
str modelXML = productConfigurationModel.getXML();
//Microsoft.Dynamics.AX.fr.Application.FormControlProxy runtimecontrolProxy = new Dynamics.AX.Application.FormControlProxy(runTimeControl);
//str XMLModel = new Microsoft.Dynamics.AX.Application.FormControlProxy(runTimeControl).CustomControlProperties[6];
System.String values;
values = '<Assignments>' ;//+
if(item != "")
{
values += '<Assignment xPath="ITEMNUMBER" value="'+item+'" />';// +
values += '<Assignment xPath="PROOFPLATE" value="'+item+'" />';// +
}
values +='</Assignments>';
PCRuntimeSynchronousConfigurator configurator = PCRuntimeSynchronousConfigurator::construct();
configurator.parmSolverStrategy(productConfigurationModel.getSolverStrategy());
Microsoft.Dynamics.Ax.Frameworks.Controls.ProductConfiguration.IsConfigurationComplete isConfigurationComplete;
isConfigurationComplete = configurator.configure(modelXML, values);
if (isConfigurationComplete ==
Microsoft.Dynamics.Ax.Frameworks.Controls.ProductConfiguration.IsConfigurationComplete::Complete)
{
configuredProductXML = configurator.getAllAssignedValues();
}
Microsoft.Dynamics.Ax.Frameworks.Controls.ProductConfiguration.IConfigurator configuratornew = Microsoft.Dynamics.Ax.Frameworks.Controls.ProductConfiguration.Configurator::Create(modelXML,true);
configuratornew.LoadAttributeValues();
configuratornew.AssignAttributeValueByXPath("ITEMNUMBER",item);
CLRObject configuratorCLR;
configuratorCLR = configuratornew;
runTimeControl.xmlModel(configuredProductXML);
runTimeControl.solverStrategy(productConfigurationModel.getSolverStrategy());
runTimeControl.columns(productConfigurationModel.Columns);
runTimeControl.attributeChanged("ITEMNUMBER",item);
configuratornew.StartSession();
configuratornew.WaitForIdleStateSync();
runTimeControl.editAutoPostback(true);
runTimeControl.resetUserSetting();
fds.reread();
fds.refresh();
It is Not working for me
Hi Hossein,
It didn't worked for me. Actually this form loads from xml
Hi Pupadhyay,
To do this , use fds.Research(); instead of fds.reread(); or fds.refresh();
André Arnaud de Cal...
293,327
Super User 2025 Season 1
Martin Dráb
232,243
Most Valuable Professional
nmaenpaa
101,158
Moderator