{"id":1719,"date":"2019-03-24T14:42:39","date_gmt":"2019-03-24T11:42:39","guid":{"rendered":"http:\/\/guvensahin.com\/?p=1719"},"modified":"2021-11-17T11:17:20","modified_gmt":"2021-11-17T08:17:20","slug":"dynamics-ax-csv-ve-excel-aktarim-siniflari","status":"publish","type":"post","link":"https:\/\/guvensahin.com\/tr\/dynamics-ax-csv-ve-excel-aktarim-siniflari\/","title":{"rendered":"Dynamics AX CSV ve Excel Aktar\u0131m S\u0131n\u0131flar\u0131"},"content":{"rendered":"\n<p>AX developerlar\u0131 olarak her projede \u00e7ok fazla csv-excel aktar\u0131mlar\u0131 yaz\u0131yoruz. Bundan 6 y\u0131l \u00f6nce bir projede o kadar \u00e7ok yazd\u0131m ki, en sonunda can\u0131ma tak etti ve a\u015fa\u011f\u0131da size tan\u0131taca\u011f\u0131m s\u0131n\u0131flar\u0131 yazd\u0131m. O g\u00fcnden beride bu s\u0131n\u0131flar\u0131 kullan\u0131yorum, gerektik\u00e7e yeni \u00f6zellikler ekleyerek geli\u015ftiriyorum.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00d6zellikleri<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Bu s\u0131n\u0131flar ile a\u015fa\u011f\u0131daki \u00f6rneklerde de g\u00f6rebilece\u011finiz gibi dosyadan aktar\u0131m yazmak \u00e7ok k\u0131sa s\u00fcr\u00fcyor.<\/li><li>Her seferinde dialog dan dosyan\u0131n path&#8217;ini al, format\u0131n\u0131 kontrol et, <br>d\u00f6ng\u00fcde d\u00f6n dosyay\u0131 sat\u0131r sat\u0131r oku gibi kodlar\u0131 tekrar tekrar yazmaktan ve kod karma\u015fas\u0131ndan kurtuluyorsunuz.<\/li><li>Yazd\u0131\u011f\u0131n\u0131z aktar\u0131m\u0131 csv&#8217;den excel&#8217;e \u00e7evirmek yada tam tersini yapmak 2 saniyenizi al\u0131yor.<\/li><li>Aktar\u0131m s\u0131ras\u0131nda kay\u0131t say\u0131s\u0131n\u0131 alg\u0131lay\u0131p, otomatik progress bar \u00e7\u0131kararak i\u015flenen \/ kalan kay\u0131t say\u0131s\u0131n\u0131 g\u00f6steriyor.<\/li><li>Hata al\u0131nd\u0131\u011f\u0131nda, hatan\u0131n al\u0131nd\u0131\u011f\u0131 sat\u0131r bilgisini otomatik d\u00f6n\u00fcyor.<\/li><li>Ba\u015flang\u0131\u00e7-biti\u015f vererek dosyadan sadece istedi\u011finiz sat\u0131rlar\u0131 alabiliyorsunuz.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u0130ndirme<\/h3>\n\n\n\n<p>S\u0131n\u0131flar\u0131 <strong><a href=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2021\/11\/PrivateProject_GvnFileImportHelpers.xpo_.zip\" title=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2019\/03\/PrivateProject_GvnFileImportHelpers.zip\">buradan indirebilirsiniz<\/a><\/strong><a href=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2019\/03\/PrivateProject_GvnFileImportHelpers.zip\">.<\/a> AX 2012 ve  <br>D365 F&amp;O i\u00e7in direkt \u00e7al\u0131\u015fmaktad\u0131r. AX 2009&#8217;a ise ufak d\u00fczenlemelerle aktat\u0131p kullanabilirsiniz.<\/p>\n\n\n\n<p>XPO i\u00e7inde a\u015fa\u011f\u0131daki gibi 3 s\u0131n\u0131f g\u00f6receksiniz.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>GvnImport<\/li><li>GvnImport_Csv<\/li><li>GvnImport_Excel<\/li><\/ul>\n\n\n\n<p>Bu 3 s\u0131n\u0131f\u0131 AX&#8217;da i\u00e7eri alman\u0131z yeterli. Ben \u00e7al\u0131\u015ft\u0131\u011f\u0131m her projede bu s\u0131n\u0131flar\u0131n prefixlerini, \u00e7al\u0131\u015ft\u0131\u011f\u0131m\u0131z partner&#8217;a g\u00f6re d\u00fczenleyip aktar\u0131yorum  <br>(ObsImport, PRGImport, ETG, DMR vs&#8230;).<\/p>\n\n\n\n<div style=\"height:37px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Kullan\u0131m\u0131 <\/h2>\n\n\n\n<p>\u00d6rnek olarak <strong>SalesPool<\/strong> tablosuna dosyadan kay\u0131t aktaral\u0131m. A\u015fa\u011f\u0131daki resimdeki gibi 2 kolonlu bir dosya haz\u0131rlay\u0131n. Bunu ister csv ister excel olarak kaydedin.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"777\" height=\"504\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2019\/03\/GvnImport-Template.png\" alt=\"\" class=\"wp-image-1806\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2019\/03\/GvnImport-Template.png 777w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2019\/03\/GvnImport-Template-300x195.png 300w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2019\/03\/GvnImport-Template-768x498.png 768w\" sizes=\"auto, (max-width: 777px) 100vw, 777px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>\u0130ndirdi\u011finiz yard\u0131mc\u0131 s\u0131n\u0131flar\u0131 ax&#8217;da i\u00e7eri ald\u0131ktan sonra yeni bir s\u0131n\u0131f olu\u015fturuyoruz.<\/li><li>Aktar\u0131m yapmak istedi\u011fimiz formata g\u00f6re ilgili s\u0131n\u0131f\u0131 extend ediyoruz. <strong>GvnImport_Csv<\/strong> yada <strong>GvnImport_Excel<\/strong>.<\/li><li><strong>main<\/strong> method&#8217;unu olu\u015fturup s\u0131n\u0131f\u0131 \u00e7a\u011f\u0131r\u0131yoruz. Gerekli parametreleri burada tan\u0131mlayabiliriz.<\/li><li><strong>doEveryRow<\/strong> method&#8217;unu override edip, dosyan\u0131n her bir sat\u0131r\u0131nda yapmas\u0131n\u0131 istedi\u011fimiz i\u015flemi buraya yaz\u0131yoruz.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">CSV Aktar\u0131m\u0131<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<pre>\/\/ G\u00fcven \u015eahin\n\/\/ guvensahin.com\nclass GvnIMPSalesPoolCsv extends GvnImport_Csv\n{\n}\n\npublic static void main(Args _args)\n{\n    GvnIMPSalesPoolCsv  GvnIMPSalesPoolCsv;\n    ;\n\n    GvnIMPSalesPoolCsv = new GvnIMPSalesPoolCsv();\n    GvnIMPSalesPoolCsv.parmCaption(\"Sipari\u015f havuzlar\u0131 aktar\u0131m\u0131 - CSV\");\n\n    if (GvnIMPSalesPoolCsv.prompt())\n    {\n        \/\/ 2. sat\u0131rdan ba\u015fla. kolon ba\u015fl\u0131\u011f\u0131n\u0131 okuma\n        GvnIMPSalesPoolCsv.run(2);\n    }\n}\n\nprotected void doEveryRow()\n{\n    SalesPool   SalesPool;\n    ;\n\n    SalesPool.SalesPoolId   = this.getCol(1);\n    SalesPool.Name          = this.getCol(2);\n    SalesPool.insert();\n}\n<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Excel Aktar\u0131m\u0131<\/h2>\n\n\n\n<pre>\/\/ G\u00fcven \u015eahin\n\/\/ guvensahin.com\nclass GvnIMPSalesPoolExcel extends GvnImport_Excel\n{\n}\n\npublic static void main(Args _args)\n{\n    GvnIMPSalesPoolExcel  GvnIMPSalesPoolExcel;\n    ;\n\n    GvnIMPSalesPoolExcel = new GvnIMPSalesPoolExcel();\n    GvnIMPSalesPoolExcel.parmCaption(\"Sipari\u015f havuzlar\u0131 aktar\u0131m\u0131 - Excel\");\n\n    if (GvnIMPSalesPoolExcel.prompt())\n    {\n        \/\/ 2. sat\u0131rdan ba\u015fla. kolon ba\u015fl\u0131\u011f\u0131n\u0131 okuma\n        GvnIMPSalesPoolExcel.run(2);\n    }\n}\n\nprotected void doEveryRow()\n{\n    SalesPool   SalesPool;\n    ;\n\n    SalesPool.SalesPoolId   = this.getCol(1);\n    SalesPool.Name          = this.getCol(2);\n    SalesPool.insert();\n}\n<\/pre>\n\n\n\n<div style=\"height:27px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Parametreler<\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>getCol<\/td><td>String olarak ilgili kolondaki de\u011feri d\u00f6ner   <\/td><\/tr><tr><td>getColBoolean<\/td><td>Boolean olarak ilgili kolondaki de\u011feri d\u00f6ner   <\/td><\/tr><tr><td>getColDate<\/td><td>Date olarak ilgili kolondaki de\u011feri d\u00f6ner   <\/td><\/tr><tr><td>getColInt<\/td><td>Integer olarak ilgili kolondaki de\u011feri d\u00f6ner   <\/td><\/tr><tr><td>getColInt64<\/td><td>Int64 olarak ilgili kolondaki de\u011feri d\u00f6ner   <\/td><\/tr><tr><td>getColReal<\/td><td>Real olarak ilgili kolondaki de\u011feri d\u00f6ner   <\/td><\/tr><tr><td>parmFilePath<\/td><td>Okunacak dosya yolu. Prompt method&#8217;u \u00e7a\u011fr\u0131l\u0131rsa, dialog \u00e7\u0131kararak kullan\u0131c\u0131dan al\u0131n\u0131r.   <\/td><\/tr><tr><td>parmCaption<\/td><td>Prompt method&#8217;unun \u00e7a\u011f\u0131rd\u0131\u011f\u0131 dialogda g\u00f6z\u00fckecek ba\u015fl\u0131k   <\/td><\/tr><tr><td>parmDialogText<\/td><td>Prompt method&#8217;unun \u00e7a\u011f\u0131rd\u0131\u011f\u0131 dialogda, caption&#8217;\u0131n alt\u0131ndaki text. Genellikle kolon s\u0131ralamas\u0131 bilgisi girilir.   <\/td><\/tr><tr><td>setUserDefinedRowNum<\/td><td>Bu parametre i\u015faretli ise run method&#8217;una verilen start, end parametreleri ge\u00e7ersiz k\u0131l\u0131n\u0131r. Dialog&#8217;a okumaya ba\u015flanacak ve bitirilecek sat\u0131r ad\u0131nda parametreler eklenir.   <\/td><\/tr><tr><td>setCsvSeperator<\/td><td>Csv dosyas\u0131nda veriler aras\u0131ndaki ayra\u00e7 tan\u0131mlan\u0131r. Varsay\u0131lan olarak noktal\u0131 virg\u00fcld\u00fcr.   <\/td><\/tr><tr><td>parmSheetNum<\/td><td>Excelde okunacak sheet (sayfa). Varsay\u0131lan olarak ilk sheet&#8217;e okur.   <\/td><\/tr><tr><td>getRowNum<\/td><td>Hata al\u0131nmas\u0131 vb durumlarda hatan\u0131n al\u0131nd\u0131\u011f\u0131 sat\u0131r bilgisini d\u00f6ner   <\/td><\/tr><tr><td>isRowEmpty<\/td><td>\u0130lgili sat\u0131r\u0131n ilk kolonunda de\u011fer olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.   <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Aktar\u0131mlar\u0131 birbirine \u00e7evirmek<\/h2>\n\n\n\n<p>Bunun i\u00e7in tek yapman\u0131z gereken extend etti\u011finiz s\u0131n\u0131f\u0131 de\u011fi\u015ftirmek. Bu kadar basit. E\u011fer run method&#8217;u gibi methodlar\u0131 override ettiyseniz yada  <br><strong>setCsvSeperator<\/strong> gibi csv&#8217;ye, <strong>parmSheetNum <\/strong>gibi excel&#8217;e \u00f6zel methodlar\u0131 kulland\u0131ysan\u0131z, bunlar\u0131 d\u00fczenlemeniz gerekiyor.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>S\u0131n\u0131flar\u0131 <strong><a href=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2021\/11\/PrivateProject_GvnFileImportHelpers.xpo_.zip\">buradan indirebilirsiniz.<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AX developerlar\u0131 olarak her projede \u00e7ok fazla csv-excel aktar\u0131mlar\u0131 yaz\u0131yoruz. Bundan 6 y\u0131l \u00f6nce bir projede o kadar \u00e7ok yazd\u0131m ki, en sonunda can\u0131ma tak etti ve a\u015fa\u011f\u0131da size tan\u0131taca\u011f\u0131m s\u0131n\u0131flar\u0131 yazd\u0131m. O g\u00fcnden beride bu s\u0131n\u0131flar\u0131 kullan\u0131yorum, gerektik\u00e7e yeni \u00f6zellikler ekleyerek geli\u015ftiriyorum. \u00d6zellikleri Bu s\u0131n\u0131flar ile a\u015fa\u011f\u0131daki \u00f6rneklerde de g\u00f6rebilece\u011finiz gibi dosyadan aktar\u0131m yazmak&hellip;&nbsp;<a href=\"https:\/\/guvensahin.com\/tr\/dynamics-ax-csv-ve-excel-aktarim-siniflari\/\" rel=\"bookmark\">Daha fazlas\u0131n\u0131 oku &raquo;<span class=\"screen-reader-text\">Dynamics AX CSV ve Excel Aktar\u0131m S\u0131n\u0131flar\u0131<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1820,"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,392,394,438,198,395,285],"class_list":["post-1719","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dynamics-ax","tag-axapta","tag-csv","tag-dynamics-365","tag-dynamics-365-finance-and-operations","tag-dynamics-ax-2","tag-excel","tag-x"],"_links":{"self":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/1719","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=1719"}],"version-history":[{"count":43,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/1719\/revisions"}],"predecessor-version":[{"id":2493,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/1719\/revisions\/2493"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/media\/1820"}],"wp:attachment":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/media?parent=1719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/categories?post=1719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/tags?post=1719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}