{"id":1470,"date":"2018-06-13T00:57:32","date_gmt":"2018-06-12T21:57:32","guid":{"rendered":"http:\/\/guvensahin.com\/?p=1470"},"modified":"2020-05-12T23:57:35","modified_gmt":"2020-05-12T20:57:35","slug":"dynamics-ax-2012-ile-json-olusturma-islemleri","status":"publish","type":"post","link":"https:\/\/guvensahin.com\/tr\/dynamics-ax-2012-ile-json-olusturma-islemleri\/","title":{"rendered":"Dynamics AX 2012 ile JSON Olu\u015fturma \u0130\u015flemleri"},"content":{"rendered":"<p>\u015eu aralar \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131m bir entegrasyon projesinde ax 2012 de yo\u011fun \u015fekilde json kullanmam gerekti. Ax i\u00e7inde native \u015fekilde json \u00fcretmeniz i\u00e7in &#8220;RetailCommonWebAPI&#8221; isminde bir s\u0131n\u0131f bulunuyor. Ama bu s\u0131n\u0131f \u00e7ok ilkel kal\u0131yor. Bende bunun \u00fczerine kendi k\u00fct\u00fcphanemi haz\u0131rlad\u0131m. Bu k\u00fct\u00fcphanede ax i\u00e7inde \u00e7e\u015fitli \u015fekillerde \u00e7ok kolay \u015fekilde json olu\u015fturabileceksiniz. \u0130lgili k\u00fct\u00fcphaneyi ve \u00f6rnekleri <a href=\"https:\/\/www.dropbox.com\/s\/pqa5m7gm2celr97\/Guven_JsonHelper_2018062013430298.zip?dl=0\"><strong>buradan<\/strong><\/a> indirebilirsiniz.<\/p>\n<p>Gelin nas\u0131l kullan\u0131ld\u0131\u011f\u0131na bakal\u0131m.<\/p>\n<h2><\/h2>\n<h2>1. Json Object<\/h2>\n<p>En temel kullan\u0131m. \u0130stedi\u011finiz alanlara sahip bir json objesi yarat\u0131r.<\/p>\n<pre>\/\/ G\u00fcven \u015eahin - guvensahin.com\r\nstatic void AYXJsonSample_Object(Args _args)\r\n{\r\n    AYXJsonObject   obj;\r\n    CustTable       custTable;\r\n\r\n    select firstOnly custTable;\r\n    if (custTable)\r\n    {\r\n        obj = AYXJsonObject::constructJsonObject();\r\n        obj.insert(\"accountNum\", custTable.AccountNum);\r\n        obj.insert(\"custName\", custTable.name());\r\n        obj.insert(\"extraInfo\", \"json helper test\");\r\n\r\n        info(AYXJsonHelper::generateJsonObject(obj));\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Yukar\u0131daki kodu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda a\u015fa\u011f\u0131daki gibi bir \u00e7\u0131kt\u0131 elde edeceksiniz.<\/p>\n<p><a href=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1473\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_1.png\" alt=\"\" width=\"297\" height=\"111\" \/><\/a><\/p>\n<h2>2. Json List<\/h2>\n<p>\u0130stedi\u011finiz alanlara sahip bir json listesi yarat\u0131r.<\/p>\n<pre>\/\/ G\u00fcven \u015eahin - guvensahin.com\r\nstatic void AYXJsonSample_List(Args _args)\r\n{\r\n    AYXJsonObject   obj;\r\n    CustTable       custTable;\r\n    container       conList;\r\n\r\n    while select firstOnly10 custTable\r\n    {\r\n        obj = AYXJsonObject::constructJsonObject();\r\n        obj.insert(\"accountNum\", custTable.AccountNum);\r\n        obj.insert(\"custName\", custTable.name());\r\n        obj.insert(\"extraInfo\", \"json helper test\");\r\n\r\n        conList += [obj.pack()];\r\n    }\r\n\r\n    info(AYXJsonHelper::generateJsonList(conList));\r\n}\r\n<\/pre>\n<p>\u00c7\u0131kt\u0131:<br \/>\n<a href=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1474\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_2.png\" alt=\"\" width=\"333\" height=\"305\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_2.png 333w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_2-300x275.png 300w\" sizes=\"auto, (max-width: 333px) 100vw, 333px\" \/><\/a><\/p>\n<h2><\/h2>\n<h2>3. Record to Json<\/h2>\n<p>Bir ax record&#8217;unun t\u00fcm alanlar\u0131n\u0131 okuyup json objesi \u00fcretir. Bu i\u015flemi yaparken tarih, enum vs t\u00fcm alan tiplerini uygun \u015fekilde string&#8217;e \u00e7evirir. \u0130sterseniz i\u015flem sonras\u0131nda olu\u015fan json&#8217;a \u00e7e\u015fitli ekleme-\u00e7\u0131karmalarda yapabilirsiniz.<\/p>\n<pre>\/\/ G\u00fcven \u015eahin - guvensahin.com\r\nstatic void AYXJsonSample_Record(Args _args)\r\n{\r\n    CustGroup custGroup;\r\n\r\n    select firstOnly custGroup;\r\n    if (custGroup)\r\n    {\r\n        info(AYXJsonHelper::generateJsonFromAxRecord(custGroup));\r\n    }\r\n}\r\n<\/pre>\n<p>\u00c7\u0131kt\u0131:<br \/>\n<a href=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1475\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_3.png\" alt=\"\" width=\"385\" height=\"507\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_3.png 385w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_3-228x300.png 228w\" sizes=\"auto, (max-width: 385px) 100vw, 385px\" \/><\/a><\/p>\n<h2><\/h2>\n<h2>4. SQL Command to Json<\/h2>\n<p>Ax i\u00e7inde ax db&#8217;sine direkt bir TSQL komutu g\u00f6nderip sonucunu direkt json olarak alabilirsiniz.<\/p>\n<pre>\/\/ G\u00fcven \u015eahin - guvensahin.com\r\nstatic void AYXJsonSample_SQL(Args _args)\r\n{\r\n    str sqlQuery;\r\n    CompanyInfo companyInfo = CompanyInfo::findDataArea(curext());\r\n    ;\r\n\r\n    sqlQuery = strFmt(\"select top 3 accountNum, custGroup from custTable where dataAreaId = '%1' and partition = %2\",\r\n                    companyInfo.DataArea,\r\n                    companyInfo.Partition);\r\n\r\n    info(AYXJsonHelper::generateJsonFromSQLQuery(sqlQuery));\r\n}\r\n<\/pre>\n<p>\u00c7\u0131kt\u0131:<br \/>\n<a href=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1476\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_4.png\" alt=\"\" width=\"265\" height=\"259\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_4.png 265w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_4-60x60.png 60w\" sizes=\"auto, (max-width: 265px) 100vw, 265px\" \/><\/a><\/p>\n<h2><\/h2>\n<h2>5. Record List<\/h2>\n<p>Ax i\u00e7inde yazd\u0131\u011f\u0131n\u0131z bir query veya while select d\u00f6ng\u00fcs\u00fcn\u00fc 2. ve 3. maddelerde belirtti\u011fim kullan\u0131mlar\u0131 kombine ederek direkt json&#8217;a \u00e7evirebilirsiniz.<\/p>\n<pre>\/\/ G\u00fcven \u015eahin - guvensahin.com\r\nstatic void AYXJsonSample_RecordList(Args _args)\r\n{\r\n    AYXJsonObject   obj;\r\n    CustGroup       custGroup;\r\n    container       conList;\r\n\r\n    while select firstOnly10 custGroup\r\n    {\r\n        obj = AYXJsonHelper::axRecordToJsonObject(custGroup);\r\n\r\n        conList += [obj.pack()];\r\n    }\r\n\r\n    info(AYXJsonHelper::generateJsonList(conList));\r\n}\r\n<\/pre>\n<p>\u00c7\u0131kt\u0131:<br \/>\n<a href=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1477\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_5.png\" alt=\"\" width=\"440\" height=\"824\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_5.png 440w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_5-160x300.png 160w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<h2>6. Json Object &amp; List<\/h2>\n<p>Bir ax record&#8217;unun ba\u015fl\u0131k ve sat\u0131rlar\u0131 beraber, tek bir veri k\u00fcmesi halinde json&#8217;a d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz.<\/p>\n<pre>\/\/ G\u00fcven \u015eahin - guvensahin.com\r\nstatic void AYXJsonSample_ObjectAndList(Args _args)\r\n{\r\n    AYXJsonObject   objHeader, objLine;\r\n    SalesTable      salesTable;\r\n    SalesLine       salesLine;\r\n    container       conList;\r\n\r\n    select firstOnly salesTable;\r\n    if (salesTable)\r\n    {\r\n        while select salesLine\r\n        where salesLine.SalesId == salesTable.SalesId\r\n        {\r\n            objLine = AYXJsonHelper::axRecordToJsonObject(salesLine);\r\n            conList += [objLine.pack()];\r\n        }\r\n\r\n        objHeader = AYXJsonHelper::axRecordToJsonObject(salesTable);\r\n        objHeader.insert(\"Lines\", conList, true);\r\n\r\n        info(AYXJsonHelper::generateJsonObject(objHeader));\r\n    }\r\n}\r\n<\/pre>\n<p>\u00c7\u0131kt\u0131:<\/p>\n<p><a href=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1523\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_6.png\" alt=\"\" width=\"380\" height=\"740\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_6.png 380w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2018\/06\/ax_json_sample_6-154x300.png 154w\" sizes=\"auto, (max-width: 380px) 100vw, 380px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Son olarak bu s\u0131n\u0131f\u0131 isterseniz \u00e7ok kolay bir \u015fekilde AX 2009 yada D365&#8217;e uyarlay\u0131p kullanabilirsiniz.<\/p>\n<p>Ho\u015f\u00e7akal\u0131n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u015eu aralar \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131m bir entegrasyon projesinde ax 2012 de yo\u011fun \u015fekilde json kullanmam gerekti. Ax i\u00e7inde native \u015fekilde json \u00fcretmeniz i\u00e7in &#8220;RetailCommonWebAPI&#8221; isminde bir s\u0131n\u0131f bulunuyor. Ama bu s\u0131n\u0131f \u00e7ok ilkel kal\u0131yor. Bende bunun \u00fczerine kendi k\u00fct\u00fcphanemi haz\u0131rlad\u0131m. Bu k\u00fct\u00fcphanede ax i\u00e7inde \u00e7e\u015fitli \u015fekillerde \u00e7ok kolay \u015fekilde json olu\u015fturabileceksiniz. \u0130lgili k\u00fct\u00fcphaneyi ve \u00f6rnekleri buradan&hellip;&nbsp;<a href=\"https:\/\/guvensahin.com\/tr\/dynamics-ax-2012-ile-json-olusturma-islemleri\/\" rel=\"bookmark\">Daha fazlas\u0131n\u0131 oku &raquo;<span class=\"screen-reader-text\">Dynamics AX 2012 ile JSON Olu\u015fturma \u0130\u015flemleri<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1487,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","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":[234],"tags":[193,198,382,415,285],"class_list":["post-1470","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dynamics-ax","tag-axapta","tag-dynamics-ax-2","tag-json","tag-web-service","tag-x"],"_links":{"self":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/1470","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=1470"}],"version-history":[{"count":15,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/1470\/revisions"}],"predecessor-version":[{"id":1524,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/1470\/revisions\/1524"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/media\/1487"}],"wp:attachment":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/media?parent=1470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/categories?post=1470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/tags?post=1470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}