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 Réponses :
Tout d'abord, les dimensions héritées de la hache 2009 ont été 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();
Cela a aidé beaucoup. Lisez également le livre blanc à nouveau i> Bonne fois passé.
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();
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.
Vous pouvez obtenir 2 méthodes pour ce faire ici: p>
http://daxldsoft.blogspot.it/ 2012/11 / AX-2012-Financière-dimension-update.html p>
Veuillez résumer le contenu du lien; Il suffit de publier un lien n'est pas utile.
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.