Dynamics 365 Blog - Seite 3

FormViewOption einer Form per Code steuern

Um die FormViewOption einer Form zu steuern, kann man Code wie den folgenden verwenden:

public static void setFormViewOption(
    FormRun _formRun,
    FormViewOption _formViewOption = FormViewOption::Details
    )
{
    if (_formRun
        && _formRun.viewOptionHelper())
    {
        _formRun.viewOptionHelper().setViewOption(_formViewOption);
    }
}

 


 
 

Best-Practice-Abweichungen unterdrücken

Prinzipiell sollte jede Lösung in Dynamics 365 for Finance and Operations frei von Best-Practice-Abweichungen sein, dennoch gibt es ab und an die Notwendigkeit, sie unterdrücken zu müssen.

Ein solcher Fall sind beispielsweise Eventhandler, die ein vorgegebenes Paramterprofil aufweisen, im Falle eine Nicht-Verwendung eines dieser Parameter aber eine BP-Abweichung verursachen.

class MyFreeTextInvoiceHeaderFooterTmpEH
{
    [DataEventHandler(tableStr(FreeTextInvoiceHeaderFooterTmp), DataEventType::Inserting)]
    public static void FreeTextInvoiceHeaderFooterTmp_onInserting(Common sender, DataEventArgs e)
    {
        FreeTextInvoiceHeaderFooterTmp freeTextInvoiceHeaderFooterTmp;
    
        freeTextInvoiceHeaderFooterTmp = sender;
    
        if (freeTextInvoiceHeaderFooterTmp.CompanyBankAccount == "")
        {
            freeTextInvoiceHeaderFooterTmp.CompanyBankName = "Unknown";
        }
    }
}

Bei obigem EH würde folgende BP-Abweichung ausgegeben werden, da der Parameter e nicht verwendet wird:

BP Rule: [BPParameterNotUsed]:The parameter 'e' is not used.


 
 

Exception beim Platformupdate 30

Als ich vor kurzem eine lokales D365-VPC mit dem Platform Update 30 versorgen wollte, trat bei Step 19 der folgende Fehler auf:

GlobalUpdate script for service model: AOSService on machine: D365Local
Sync AX database
The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: System.Management.Automation.RuntimeException: An exception of type System.Net.WebException occurred when making an http request to: http://127.0.0.1/ReportServer. Refer to the log file for more details.
The step failed

Die Ursache für diesen Fehler war rasch gefunden - nach dem Download des VPC aus LCS wurde der Name des virtuellen Computers geändert, dieser aber nicht überall nachgezogen. Dadurch hatten die SQL Reporting Services ein Problem, hier musste eine neue Database eingetragen werden. Wie dies geht, und was man noch alles beim Umbenennen eines VPCs berücksichtigen muss steht übrigens hier.


 
 

Fehler "The step failed" beim Platformupdate 30 in Verbindung mit Reporting services

Tritt während eines Platform Updates eines lokalen VPCs folgender Fehler auf...

Executing step: 19
GlobalUpdate script for service model: AOSService on machine: D365FOSHLocal
Sync AX database
The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: System.Management.Automation.RuntimeException: An exception of type System.Net.WebException occurred when making an http request to: http://127.0.0.1/ReportServer. Refer to the log file for more details.
The step failed
The step: 19 is in failed state, you can use rerunstep command to debug the step explicitly
   at Microsoft.Dynamics.AX.AXUpdateInstallerBase.RunbookExecutor.ExecuteRunbookStepList(RunbookData runbookData, String updatePackageFilePath, Boolean silent, String stepID, ExecuteStepMode executeStepMode, Boolean versionCheck, Parameters parameters)
   at Microsoft.Dynamics.AX.AXUpdateInstallerBase.AXUpdateInstallerBase.execute(String runbookID, Boolean silent, String updatePackageFilePath, IRunbookExecutor runbookExecutor, Boolean versionCheck, Parameters param)
   at Microsoft.Dynamics.AX.AXUpdateInstaller.Program.InstallUpdate(String[] args)
   at Microsoft.Dynamics.AX.AXUpdateInstaller.Program.Main(String[] args)

...kann die Ursache sein, daß der Computername des VPCs geändert wurde, und dabei aber nicht alle von Microsoft empfohlenen Schritte durchgeführt wurden.

Welche das sind, ist hier zu finden: https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/migration-upgrade/vso-machine-renaming

 

 


 
 

Finanzdimension als Display-Methode anzeigen

[SysClientCacheDataMethodAttribute(true)]
public display DimensionDisplayValue displayLedgerDimensionValue()
{
    return LedgerDimensionFacade::getDisplayValueForLedgerDimension(this.LedgerDimension);
}

 
 

Fehler "Argument für Methode getFieldValue liegt außerhalb des zulässigen Bereichs" beim Importieren über eine Entität

Beim Importieren von Daten über eine selbst erstellte Data Entity, für eine ebenfalls selbst erstellte Tabelle die Finanzdimensionen enthält, hatte ich vor kurzem das Problem, dass der Import immer mit dem folgenden Fehler fehlschlug:

Argument für Methode getFieldValue liegt außerhalb des zulässigen Bereichs.

Beim Debuggen stelte sich heraus, daß in der Methode DimensionDynamicAccountDataEntityResolver.getEnumValue() ein Feldname nicht ermittelt werden konnte. Allerdings ist die verantwortliche Methode DictDataEntityField.dynamicDimensionEnumartionField() nicht einsehbar.


 
 

Feld vom Typ LedgerDimension zu einer (eigenen) Tabelle hinzufügen

Um in Dynamics 365 for Finance and Operations zu einer (eigenen) Tabelle ein Feld vom Typ LedgerDimension hinzuzufügen - also ein Feld, welches Finanzdimensionen aufnehmen soll - sind nur wenige Schritte erforderlich:

  1. Neue Foreign-Key-Relation zur Tabelle DimensionAttributeValueCombination erstellen
  2. Als Index dieser Relation RecId auswählen
    Dadurch wird nun ein neues Feld in der Tabelle generiert und die Relation zu diesem Feld erstellt
  3. Die Eigenschaft Extends dieses neuen Feldes sollte nun auf DimensionDynamicAccount geändert werden
    Das Feld kann nun ggf. umbenannt werden, z.B. LedgerDimension
  4. Nun muss ein weiteres neues Feld eingefügt werden, daß von BaseEnum LedgerJournalACType ableitet

Um ein solches Feld nun auch in einem (eigenen) Formular anzuzeigen, sind folgende Schritte notwendig:

  1. Per Drag & Drop beide erstellten Felder im Design platzieren
  2. Dabei wird für das Feld, das die Dimension aufnehmen soll (z.B. LedgerDimension), ein Segmented Entry Control erstellt
  3. In den Eigenschaften dieses Controls sind nun folgende Eigenschaften anzupassen
    • Controller Class: DimensionDynamicAccountController
    • Account type field: Hier muss jenes Feld eingetragen werden, das von LedgerJournalACType abgeleitet wurde

Abhängig von der Klasse die man am Segmented Entry Control in der Eigenschaft Controller Class hinterlegt, sind noch ggf. weitere Einstellungen vorzunehmen, wobei nicht alle immer zulässig sein. Mehr dazu unter https://docs.microsoft.com/de-at/dynamics365/unified-operations/dev-itpro/financial/segmented-entry-control-metadata-specification


 
 
Seiten « 1 2 3 4 5 6 » 

 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu