10
votes

Comment définir une valeur de dimension unique dans AX 2012?

Mon problème est de définir des valeurs de dimension lues à partir d'une source externe.

Compte tenu de l'instruction AX 2009: P>

ledgerJournalTrans.Dimension    = ledgerTable.Dimension;
ledgerJournalTrans.Dimension[1] = "abc";


3 commentaires

On m'a récemment dit que les dimensions financières sont stockées dans une table séparée en 2012 et elles sont également illimitées. Je n'ai pas encore eu la chance de chercher encore, mais je suppose que c'est semblable à Inventdim où vous faites :: FindorCreate () et vous avez un invendimide. Je ne sais pas si cela peut vous aider à vous diriger dans la bonne direction.


Vous êtes correct, mais il n'y a pas de simple FindorCreate (), toutes les références sont recticulées, rappelez-vous :)


Je n'ai pas eu le temps de voir la hache 2012 pourtant complètement progressivement. Malheureusement. J'ai un important représentant de support Microsoft derrière moi faire du travail, mais nous sommes en 2009 et je suis sûr qu'il serait confus si je lui ai posé une question de programmation de 2012. J'aimerais pouvoir être plus d'aide.


3 Réponses :


17
votes

Tout d'abord, les dimensions héritées de la hache 2009 ont été complètement refaites et remplacées forte> à AX 2012. Le nouveaudgerdimension est une combinaison du compte et des valeurs de dimension anciennes nécessaires en fonction de la Structure de compte et structures de règles avancées. Pour en savoir plus sur le nouveau cadre de dimension dans AX 2012, essayez de lire le whitepaper sur le nouveau cadre de dimension.

En supposant que le département est la première dimension et que les deux dimensions utilisent ledgerdimensionAccount Edt simplifie un peu ce scénario, mais le nouveau cadre de la dimension est très flexible pour ce faire. hypothèse peut ne pas être correcte. Même si c'est le cas, la simple spécification d'une nouvelle valeur pour le département peut nécessiter que la structure de la combinaison doit modifier radicalement en raison de structures de règles avancées pouvant être configurées. P>

Honnêtement, Je n'envisagerais que le code ci-dessous comme une démonstration de la manière dont certaines des bases fonctionnent, pas quelque chose qui devrait être utilisé dans la production. strong> avec cela dit, ce code devrait Accomplir ce que vous voulez, si ce champ de dimension sur LEDGertable a été remplacé par un champ dedimensionDIMENSILEDIMENSIONNEMPECTABONT EDT qui stocke une combinaison complète. P>

DimensionStorage dimensionStorage;
DimensionAttribute deparmentDimensionAttribute;
DimensionAttributeValue newDepartmentValue;

// Find the deparment dimension attribute
deparmentDimensionAttribute = DimensionAttribute::findByName("Department");  

// Find the new department value we want to put in the new combination.
newDepartmentValue = DimensionAttributeValue::findByDimensionAttributeAndValue(deparmentDimensionAttribute, "abc");

// Load a DimensionStorage instance with the old combination and update the first segment with new value
dimensionStorage = DimensionStorage::findById(ledgerTable.LedgerDimension);
dimensionStorage.setSegment(1,DimensionStorageSegment::constructFromValue("abc", newDepartmentValue));
ledgerJournalTrans.LedgerDimension = dimensionStorage.save();


1 commentaires

Cela a aidé beaucoup. Lisez également le livre blanc à nouveau Bonne fois passé.



2
votes

Mon cas était le scénario "Dimensions par défaut", alors je devais m'adapter un peu. Ceci est la méthode que j'ai finalement utilisée:

sur la table code> dimensionAttribute code> Ajouter un nouveau nom de champ Numéro code> Ajoutez cette méthode: P>

dimensionStorage = DimensionAttributeValueSetStorage::find(salesTable.DefaultDimension);
dimensionStorage.addItemNumber(1, "abc");
salesTable.DefaultDimension = dimensionStorage.save();


2 commentaires

Je suppose que vous avez également eu du travail ou quelque chose de similaire qui définit les valeurs du champ Numéro sur la table DimensionAttribute, est-ce correct?


Non, je viens d'ajouter le champ au groupe de champ Description, puis édité les valeurs manuellement dans la finance \ SETUP \ DIMENSIONS financières.



0
votes

1 commentaires

Veuillez résumer le contenu du lien; Il suffit de publier un lien n'est pas utile.