{"id":2212,"date":"2020-06-27T03:09:53","date_gmt":"2020-06-27T00:09:53","guid":{"rendered":"https:\/\/guvensahin.com\/?p=2212"},"modified":"2020-07-05T15:04:50","modified_gmt":"2020-07-05T12:04:50","slug":"dynamics-365-fo-finansal-boyut-islemleri-default-dimension","status":"publish","type":"post","link":"https:\/\/guvensahin.com\/tr\/dynamics-365-fo-finansal-boyut-islemleri-default-dimension\/","title":{"rendered":"Dynamics 365 F&#038;O Finansal Boyut \u0130\u015flemleri (Default Dimension)"},"content":{"rendered":"\n<p>Merhaba. Daha \u00f6nce yazd\u0131\u011f\u0131m <a href=\"https:\/\/guvensahin.com\/tr\/dynamics-ax-2012-ledger-dimension-islemleri\/\">bu yaz\u0131da<\/a> AX 2012 i\u00e7in \u00e7e\u015fitli boyut i\u015flemlerinin nas\u0131l yap\u0131ld\u0131\u011f\u0131ndan bahsetmi\u015ftim. Dynamics 365 F&amp;O ile birlikte boyut g\u00fcncelleme i\u015flemleri i\u00e7in eskiden kulland\u0131\u011f\u0131m\u0131z baz\u0131 s\u0131n\u0131flar (AxdDimensionUtil) art\u0131k yok.<\/p>\n\n\n\n<p>Bende kollar\u0131 s\u0131vad\u0131m ve Dynamics 365 ile yeni gelen boyut s\u0131n\u0131flar\u0131n\u0131 tespit ettim. DefaultDimension&#8217;lar\u0131 tek sat\u0131rda kolayca okuyup g\u00fcncellemeye yard\u0131mc\u0131 olacak, \u00e7e\u015fitli kontrolleri otomatik yapacak yard\u0131mc\u0131 bir s\u0131n\u0131f haz\u0131rlad\u0131m.<\/p>\n\n\n\n<p>Kaynak kodlar\u0131na yaz\u0131n\u0131n sonundan eri\u015febilirsiniz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kullan\u0131m<\/h2>\n\n\n\n<p><strong>DefaultDimension i\u00e7indeki bir boyutu okuma<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GvnDimensionHelper::getDimensionValue(defDim, #CostCenter);<\/code><\/pre>\n\n\n\n<p><strong>DefaultDimension&#8217;\u0131 s\u0131f\u0131rdan yaratmak<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GvnDimensionHelper::updateDefaultDimension(0, #CostCenter, \"015\");<\/code><\/pre>\n\n\n\n<p><strong>Mevcut bir DefaultDimension i\u00e7indeki boyut de\u011ferini g\u00fcncelleme<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GvnDimensionHelper::updateDefaultDimension(defDim, #CostCenter, \"015\");<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Parametreler<\/h2>\n\n\n\n<p><strong>targetDimValueMustEmpty<\/strong>: Bu parametre true ise g\u00fcncellenmek istenen boyut de\u011ferinin bo\u015f olup olmad\u0131\u011f\u0131 kontrol edilir. Bo\u015f ise g\u00fcncelleme yap\u0131l\u0131r, de\u011fil ise yap\u0131lmaz. Mevcutta de\u011feri dolu olan bir boyutu yanl\u0131\u015fl\u0131kla ezmemek gereken durumlarda kullanabilirsiniz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GvnDimensionHelper::updateDefaultDimension(defDim, #CostCenter, \"015\", true);<\/code><\/pre>\n\n\n\n<p><strong>isCustomDimVal<\/strong>: DefaultDimension i\u00e7inde custom yani tamamiyle kullan\u0131c\u0131 taraf\u0131ndan olu\u015fturulan de\u011ferlere sahip boyutlar\u0131 g\u00fcncellemek i\u00e7in kullan\u0131l\u0131r. True verildi\u011finde boyut i\u00e7in girilen de\u011fer DimensionFinancialTag tablosunda arat\u0131l\u0131r, yok ise olu\u015fturularak g\u00fcncelleme i\u015flemine devam edilir.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GvnDimensionHelper::updateDefaultDimension(defDim, #IthalatDosyaNo, \"A10051\", false, true);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Kaynak Kodlar\u0131<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/ &lt;summary>\n\/\/\/ created by: G\u00fcven \u015eahin - guvensahin.com\n\/\/\/ default dimension'\u0131 tek sat\u0131r kod ile kolayca g\u00fcncellemeye yarar.\n\/\/\/ &lt;\/summary>\npublic class GvnDimensionHelper\n{\n    public static str getDimensionValue(RecId defaultDimension, Name dimName)\n    {\n        DimensionAttributeValueSetStorage   dimStorage;\n        DimensionAttribute\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dimAttribute;\n        ;\n\n        dimStorage      = DimensionAttributeValueSetStorage::find(defaultDimension);\n        dimAttribute    = DimensionAttribute::findByName(dimName);\n\n        return dimStorage.getDisplayValueByDimensionAttribute(dimAttribute.RecId);\n    }\n\n    private static void createCustomDimensionValue(str _dimName, str _customDimVal)\n    {\n        DimensionAttribute      DimensionAttribute;\n        DimensionFinancialTag   DimensionFinancialTag;\n        RecId                   financialTagCategory;\n        ;\n    \n    \n        if (_dimName &amp;&amp; _customDimVal)\n        {\n            DimensionAttribute = DimensionAttribute::findByName(_dimName);\n            if (DimensionAttribute)\n            {\n                financialTagCategory = DimensionAttribute.financialTagCategory();\n    \n                \/\/ de\u011fer zaten tan\u0131ml\u0131ysa tekrar olu\u015fturmaya gerek kalmaz.\n                if (!DimensionFinancialTag::findByFinancialTagCategoryAndValue(financialTagCategory, _customDimVal))\n                {\n                    DimensionFinancialTag.clear();\n                    DimensionFinancialTag.FinancialTagCategory  = financialTagCategory;\n                    DimensionFinancialTag.Value                 = _customDimVal;\n                    DimensionFinancialTag.Description           = _customDimVal;\n                    DimensionFinancialTag.insert();\n                }\n            }\n        }\n    }\n\n    public static DimensionDefault updateDefaultDimension(\n                                    DimensionDefault _defaultDimension,\n                                    str _dimName,\n                                    str _dimValue,\n                                    boolean _targetDimValueMustEmpty = false,\n                                    boolean _isCustomDimVal = false)\n    {\n        DimensionDefault    ret = _defaultDimension;\n        ;\n\n        if (!_dimName)\n        {\n            throw error(\"@GvnUtil:DimNameNotFound\");\n        }\n        \n        try\n        {\n            \n            ttsBegin;\n    \n            \/\/ de\u011fer custom ise \u00f6nce yarat\u0131l\u0131r\n            if (_isCustomDimVal)\n            {\n                GvnDimensionHelper::createCustomDimensionValue(_dimName, _dimValue);\n            }\n    \n            \/\/ boyut var ise g\u00fcncelle\u015ftirilir.\n            if (_defaultDimension)\n            {\n                \/\/ _targetValueMustEmpty parametresi true ise g\u00fcncellenecek boyut de\u011feri bo\u015f olmal\u0131. halihaz\u0131rda de\u011fer var ise g\u00fcncelleme yap\u0131lmaz.\n                if (!_targetDimValueMustEmpty\n                    || !GvnDimensionHelper::getDimensionValue(_defaultDimension, _dimName))\n                {\n                    DimensionAttributeValueSetStorage\u00a0\u00a0 dimStorage      = DimensionAttributeValueSetStorage::find(_defaultDimension);\n                    DimensionAttribute\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dimAttribute    = DimensionAttribute::findByName(_dimName);\n\n                    if (_dimValue)\n                    {\n                        DimensionAttributeValue dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttribute, _dimValue, true, true);\n                        dimStorage.addItem(dimAttributeValue);\n                    }\n                    else\n                    {\n                        dimStorage.removeDimensionAttribute(dimAttribute.RecId);\n                    }\n\n                    ret = dimStorage.save();\n                }\n            }\n            \/\/ boyut yok ise yarat\u0131l\u0131r.\n            \/\/ dimVal mutlaka dolu olmal\u0131\n            else if (_dimValue)\n            {\n                DimensionAttributeValueContract contract = DimensionAttributeValueContract::construct(_dimName, _dimValue);\n\n                List listDimension = new List(Types::Class);\n                listDimension.addEnd(contract);\n\n                DimensionNameValueListContract listContract = new DimensionNameValueListContract();\n                listContract.parmValues(listDimension);\n\n                DimensionStorageResult result = DimensionNameValueListServiceProvider::newForDimensionNameValueListContract(listContract).resolve();\n\n                ret = result.parmSavedRecId();\n            }\n    \n            ttsCommit;\n        }\n        catch\n        {\n            error(\"@GvnUtil:DimUpdateFailed\");\n        }\n\n        return ret;\n    }\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba. Daha \u00f6nce yazd\u0131\u011f\u0131m bu yaz\u0131da AX 2012 i\u00e7in \u00e7e\u015fitli boyut i\u015flemlerinin nas\u0131l yap\u0131ld\u0131\u011f\u0131ndan bahsetmi\u015ftim. Dynamics 365 F&amp;O ile birlikte boyut g\u00fcncelleme i\u015flemleri i\u00e7in eskiden kulland\u0131\u011f\u0131m\u0131z baz\u0131 s\u0131n\u0131flar (AxdDimensionUtil) art\u0131k yok. Bende kollar\u0131 s\u0131vad\u0131m ve Dynamics 365 ile yeni gelen boyut s\u0131n\u0131flar\u0131n\u0131 tespit ettim. DefaultDimension&#8217;lar\u0131 tek sat\u0131rda kolayca okuyup g\u00fcncellemeye yard\u0131mc\u0131 olacak, \u00e7e\u015fitli kontrolleri otomatik&hellip;&nbsp;<a href=\"https:\/\/guvensahin.com\/tr\/dynamics-365-fo-finansal-boyut-islemleri-default-dimension\/\" rel=\"bookmark\">Daha fazlas\u0131n\u0131 oku &raquo;<span class=\"screen-reader-text\">Dynamics 365 F&#038;O Finansal Boyut \u0130\u015flemleri (Default Dimension)<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1505,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"off","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[405],"tags":[193,367,394,438,198,285],"class_list":["post-2212","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dynamics-365-fo","tag-axapta","tag-dimension","tag-dynamics-365","tag-dynamics-365-finance-and-operations","tag-dynamics-ax-2","tag-x"],"_links":{"self":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/2212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/comments?post=2212"}],"version-history":[{"count":3,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/2212\/revisions"}],"predecessor-version":[{"id":2215,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/2212\/revisions\/2215"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/media\/1505"}],"wp:attachment":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/media?parent=2212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/categories?post=2212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/tags?post=2212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}