Dynamics AX Blog - Seite 14
Glückwunsch zum Microsoft MVP Award 2015!...so der Betreff des E-Mail mit dem mir gestern mitgeteilt wurde, daß mir zum zweiten Mal in Folge der Microsoft MVP Award verliehen wurde. Wer mehr über den Award wissen möchte, kann sich auf http://mvp.support.microsoft.com/default.aspx informieren. |
Die "Details anzeigen"-Funktion für eine als einzelnes Feld eingebundene Finanzdimension einbinden
28.03.2015Microsoft Dynamics AX (Axapta)
In diesem Beitrag habe ich beschrieben, wie man eine einzelne Finanzdimension als eigenes Feld einbinden kann. Dies ist ein Folgebeitrag und soll demonstrieren, wie man für ein solches Feld die "Details anzeigen"-Funktion programmieren kann. |
Eine Lookup-Methode für ein als einzelnes Feld eingebundene Finanzdimension überschreiben
28.03.2015Microsoft Dynamics AX (Axapta)
In diesem Beitrag habe ich beschrieben, wie man eine einzelne Finanzdimension als eigenes Feld einbinden kann. Dies ist ein Folgebeitrag und soll demonstrieren, wie man für ein solches Feld die lookup()-Methode überschreiben kann. |
Eine einzelne Finanzdimension als bearbeitbares Feld einbinden
28.03.2015Microsoft Dynamics AX (Axapta)
Wie man in Dynamics AX 2012 einen Datensatz um die Finanzdimensionen erweitert, ist im Internet an mehreren Stellen hinlänglich beschrieben. Was aber, wenn man bei einem solchen Datzensatz eine einzelne Dimension nicht über den über das Framework eingebundene Register bearbeiten möchte, sondern diese an einer anderen Stelle im Formular - beispielsweise im Grid - einbinden möchte? In einem solchen Fall kann evtl. die folgende edit()-Methode helfen. In meinem Beispiel wird die Dimension Kostenstelle mit Hilfe einer solchen Methode eingebunden. |
AX 2012: SysOperation-Framework: Ein eigenes Formular als Dialog verwenden IIIn dem folgenden Beitrag habe ich schon einmal beschrieben, wie man innerhalb des SysOperation-Frameworks ein eigenes Formular als Dialog einbinden kann. Mittlerweile bin ich auf eine wesentlich einfachere Variante gestossen:
protected FormName templateForm() { FormName ret; ret = formStr(CopyOfSysOperationTemplateForm); return ret; } |
Lookup eines FormControls übersteuern und dabei Feldgruppen verwenden
20.03.2015Microsoft Dynamics AX (Axapta)
Um einen Lookup eines Feldes zu übersteuern oder einen Lookup für ein Feld zu erstellen, welches standardmässig keinen Lookup anbietet, kann man die lookup()-Methode des FormControls überschreiben. So weit nichts wirklich neues. Das folgende Snippet zeigt, wie man in einer solchen lookup()-Methode statt fixen Feldlisten vorhandene Feldgruppen verwenden kann. Dies hat den Vorteil, daß sich auch dieser lookup() dynamisch mitändert, wenn jemand die jeweilige Feldgruppe modifiziert. Display-Methoden werden im folgenden nicht berücksichtigt, da nicht sichergestellt werden kann, daß alle für die Display-Methoden notwendigen Felder Teil der Feldgruppe sind (siehe dazu auch dieser Blog-Beitrag). public void lookup() { SysTableLookup sysTableLookup; Query query; QueryBuildDataSource qbds; SysDictTable sysDictTable = new sysDictTable(tableNum(CustTable)); SysDictFieldGroup sysDictFieldGroup; Counter f; query = new query(); qbds = query.addDataSource(tableNum(CustTable)); sysTableLookup = sysTableLookup::newParameters(tableNum(CustTable), this); sysTableLookup.parmQuery(query); sysDictFieldGroup = new SysDictFieldGroup(tableNum(CustTable), identifierStr(CaseMoreInformation)); for (f=1;f<=sysDictFieldGroup.numberOfFields();f++) { if( !sysDictFieldGroup.methodName(sysDictFieldGroup.field(f))) // no display methods { sysTableLookup.addLookupfield(sysDictFieldGroup.field(f), (sysDictTable.primaryKeyField() == sysDictFieldGroup.field(f))); } } sysTableLookup.performFormLookup(); } |
|
|
|
|
|
|
Mit dem folgenden Code kann man eine Stückliste inkl. Stücklistenversion per Code erstellen.
{
AxBOMTable axBOMTable;
AxBOMVersion axBOMVersion;
AxBOM axBOM;
InventTable inventTable = InventTable::find("100160");
InventDim inventDim;
try
{
ttsbegin;
// BOM Table
axBOMTable = AxBOMTable::construct();
axBOMTable.validateInput(true);
axBOMTable.continueOnError(false);
axBomTable.parmBOMId(BOMTable::numberSeq().num());
axBOMTable.parmItemGroupId(inventTable.itemGroupId());
axBOMTable.parmApprover(HcmWorker::userId2Worker(curUserId()));
axBOMTable.parmApproved(NoYes::Yes);
axBOMTable.parmName("Name of BOM");
axBOMTable.parmSiteId("GF");
axBOMTable.save();
// BOM Version
inventDim.clear();
inventDim.InventSiteId = axBOMTable.parmSiteId();
inventDim = InventDim::findOrCreate(inventDim);
axBOMVersion = AxBOMVersion::construct();
axBOMVersion.validateInput(true);
axBOMVersion.continueOnError(false);
axBOMVersion.parmBOMId(axBOMTable.parmBOMId());
axBOMVersion.parmItemId(inventTable.ItemId);
axBOMVersion.parmApprover(HcmWorker::userId2Worker(curUserId()));
axBOMVersion.parmApproved(NoYes::Yes);
axBOMVersion.parmActive(NoYes::Yes);
axBOMVersion.parmInventDimId(inventDim.InventDimId);
axBOMVersion.save();
// BOM
inventDim.clear();
inventDim.InventSiteId = axBOMTable.parmSiteId();
inventDim.ConfigId = "RoundNeck";
inventDim.InventSizeId = "XS";
inventDim.InventStyleId = "SlimFit";
inventDim.InventColorId = "Blue";
inventDim.InventLocationId = "902";
inventDim = InventDim::findOrCreate(inventDim);
axBOM = AxBOM::construct();
axBOM.validateInput(true);
axBOM.continueOnError(false);
axBOM.parmBOMId(axBOMTable.parmBOMId());
axBOM.parmItemId("100158");
axBOM.parmInventDimId(inventDim.InventDimId);
axBOM.parmBOMQty(17);
axBOM.save();
ttscommit;
}
catch
{
throw error("BOM creation failed");
}
}