Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012
Dynamics AX 2012
Great, thanks thats exactly what I neded. |
Kommentar hinzufügen
|
|
|
|
|
|
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012
Kommentar hinzufügen
|
Szenario: Auf einer Tabelle wurde ein neues Feld vom EDT DirPartyRecId eingefügt. In der Tabelle selbst dürfen aber nur Parteien mit bestimmten Rollen eingetragen werden (im konkreten Fall nur Debitoren). Dennoch soll der Standard-Lookup der DirPartyTable verwendet werden.
Lösung: In der DataSource des betroffenen Formulares - im Beispiel ist dies die Tabelle SMAServiceObjectTable - auf dem neuen Feld die Methode lookupReference überschreiben
{
return SMAServiceObjectTable::LookupDirPartyCustomers(_formReferenceControl, SMAObjectTable);
}
Die dort aufgerufene Methode sieht wie folgt aus:
{
FormReferenceGroupControl callingReferenceGroupControl;
Common selectedRecord;
FormRun lookupForm;
Args args;
dirPartyLookupEntitiesFilter dirPartyLookupEntitiesFilter;
if (!_control)
{
// %1 FormControl parameter is null or is not valid.
throw(error(strFmt("@SYS137393", Error::wrongUseOfFunction(funcName())) ));
}
dirPartyLookupEntitiesFilter =
dirPartyLookupEntitiesFilter::generateDirPartyLookupEntitiesFilter(
NoYes::No, // If YES, all parties will be shown
FilterStatus::Set, // Customer
FilterStatus::Undefined, // Vendor
FilterStatus::Undefined, // Prospect/Business relation
FilterStatus::Undefined, // Competitor
FilterStatus::Undefined, // Contacts
FilterStatus::Undefined, // Employees
FilterStatus::Undefined, // Prospective vendors
FilterStatus::Undefined, // Applicants
CompanyInfo::find().DataArea);
args = new Args(formStr(DirPartyLookup));
// Set filters for a party type and set the value for the filter
//args.parmEnumType(enumNum(DirPartyType));
//args.parmEnum(DirPartyType::Organization);
args.parmObject(dirPartyLookupEntitiesFilter);
args.record(_callerRecord);
args.caller(_control);
lookupForm = classfactory.formRunClass(args);
lookupForm.init();
if (_control.handle() == classNum(FormReferenceGroupControl))
{
callingReferenceGroupControl = _control;
callingReferenceGroupControl.performFormLookup(lookupForm);
selectedRecord = lookupForm.selectRecordModeSelectedRecord();
}
return selectedRecord;
}
Wichtig ist dabei die Klasse dirPartyLookupEntitiesFilter, über die gesteuert wird, welche Rollen angezeigt werden sollen