{"id":2220,"date":"2020-07-15T22:07:19","date_gmt":"2020-07-15T19:07:19","guid":{"rendered":"https:\/\/guvensahin.com\/?p=2220"},"modified":"2020-07-17T20:10:55","modified_gmt":"2020-07-17T17:10:55","slug":"dynamics-365-fo-lookup-hakkinda-hersey","status":"publish","type":"post","link":"https:\/\/guvensahin.com\/tr\/dynamics-365-fo-lookup-hakkinda-hersey\/","title":{"rendered":"Dynamics 365 F&#038;O &#8211; Lookup Olu\u015fturma"},"content":{"rendered":"\n<p>Bu yaz\u0131da Dynamics 365 Finance and Operations da yer alan lookup&#8217;lardan bahsedece\u011fim. Bu yaz\u0131y\u0131 yeni ba\u015flayan arkada\u015flar\u0131 d\u00fc\u015f\u00fcnerek haz\u0131rlad\u0131m. Fakat D365 F&amp;O&#8217;a yeni ge\u00e7en AX 2012 geli\u015ftiricilerine de faydal\u0131 olacakt\u0131r.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lookup Nedir ?<\/h2>\n\n\n\n<p>Bir alana t\u0131klad\u0131\u011f\u0131n\u0131zda a\u00e7\u0131lan k\u00fc\u00e7\u00fck form&#8217;a lookup denmekte.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"356\" height=\"327\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-lookup.png\" alt=\"\" class=\"wp-image-2250\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-lookup.png 356w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-lookup-300x276.png 300w\" sizes=\"auto, (max-width: 356px) 100vw, 356px\" \/><\/figure>\n\n\n\n<p>Lookup dedi\u011fimiz asl\u0131nda run-time da generate edilen bir formdur. D365 F&amp;O bir alan\u0131n ba\u015fka bir tablo ile ili\u015fkisini g\u00f6rd\u00fc\u011f\u00fcnde, tablodaki de\u011ferlerden se\u00e7im yapabilmemiz i\u00e7in otomatik bir lookup g\u00f6sterir. Bu otomatik \u00e7\u0131kard\u0131\u011f\u0131 lookup&#8217;da tablo \u00f6zelliklerinde TitleField1, TitleField2 olarak belirledi\u011fimiz alanlar\u0131 kullan\u0131r.<\/p>\n\n\n\n<p>Baz\u0131 durumlarda bu \u00e7\u0131kan lookup&#8217;\u0131n sorgusunu d\u00fczenlemek yada g\u00f6sterilen alanlar\u0131 de\u011fi\u015ftirmek isteyebilirsiniz. Bunun i\u00e7in a\u015fa\u011f\u0131da anlatt\u0131\u011f\u0131m gibi kendi lookup kodunuzu yazman\u0131z gerekmekte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Custom Lookup Olu\u015fturma<\/h2>\n\n\n\n<p>\u0130lgili formu a\u00e7\u0131n. Lookup&#8217;\u0131n g\u00f6z\u00fckmesini istedi\u011finiz alan\u0131n \u00fczerine gelin. <strong>Events<\/strong> b\u00f6l\u00fcm\u00fcnden <strong>OnLookup<\/strong> se\u00e7ene\u011fine sa\u011f t\u0131k &gt; <strong>Copy event handler method<\/strong>&#8216;u se\u00e7in. Yeni bir s\u0131n\u0131f olu\u015fturup, kopyalad\u0131\u011f\u0131n\u0131z kodu yap\u0131\u015ft\u0131r\u0131n.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"565\" height=\"434\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-copy-event-handler-lookup.png\" alt=\"\" class=\"wp-image-2283\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-copy-event-handler-lookup.png 565w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-copy-event-handler-lookup-300x230.png 300w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">String Lookup<\/h3>\n\n\n\n<p>Yap\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131z method&#8217;un i\u00e7ini a\u015fa\u011f\u0131daki gibi doldurun. Buradaki newParameters ve query k\u0131s\u0131mlar\u0131n\u0131 kendinize g\u00f6re d\u00fczenlemeniz gerekmekte. Visual Studio&#8217;yu build etti\u011finizde de\u011fi\u015fiklikler aktif olacakt\u0131r.<\/p>\n\n\n\n<p>Bu \u00f6rnek kod, FormStringControl tipindeki string alanlar i\u00e7indir.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/ &lt;summary>\n\/\/\/ G\u00fcven \u015eahin - guvensahin.com\n\/\/\/ &lt;\/summary>\n&#91;FormControlEventHandler(formControlStr(TrvRequisition, TrvRequisitionTable_GvnLocation), FormControlEventType::Lookup)]\npublic static void TrvRequisitionTable_GvnLocation_OnLookup(FormControl sender, FormControlEventArgs e)\n{\n\tTrvRequisitionTable     trvRequisitionTable = sender.formRun().dataSource(formdatasourcestr(TrvRequisition, TrvRequisitionTable)).cursor();\n\tQuery                   query;\n\tQueryBuildDataSource    qbds;\n\tSysTableLookup          sysTableLookup;\n\n\tquery = new Query();\n\tqbds = query.addDataSource(tableNum(TrvLocations));\n\tqbds.addRange(fieldNum(TrvLocations, GvnLocationType)).value(queryValue(trvRequisitionTable.GvnLocationType));\n\n\n\tsysTableLookup = SysTableLookup::newParameters(tableNum(TrvLocations), sender);\n\tsysTableLookup.addLookupfield(fieldNum(TrvLocations, Location), true);\n\tsysTableLookup.addLookupfield(fieldNum(TrvLocations, CountryRegionId));\n\tsysTableLookup.addLookupfield(fieldNum(TrvLocations, StateId));\n\n\tsysTableLookup.parmQuery(query);\n\tsysTableLookup.performFormLookup();\n\n\n\tFormControlCancelableSuperEventArgs event = e;\n\tevent.CancelSuperCall();\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Int64 Lookup<\/h3>\n\n\n\n<p>Int64 tipindeki bir alan\u0131n\u0131z varsa formda ReferenceGroup \u015feklinde eklendi\u011fini g\u00f6rm\u00fc\u015fs\u00fcn\u00fczd\u00fcr. Bu tip alanlar i\u00e7in a\u015fa\u011f\u0131daki kodu kullanman\u0131z gerekmekte.<\/p>\n\n\n\n<p>String olan \u00f6rnekten farkl\u0131 olarak, addLookupField method&#8217;u ek bir de\u011fer almaz. D\u00f6n\u00fc\u015f tipiniz her durumda RecId&#8217;dir.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/ &lt;summary>\n\/\/\/ G\u00fcven \u015eahin - guvensahin.com\n\/\/\/ &lt;\/summary>\n&#91;FormControlEventHandler(formControlStr(TrvCashAdvances, General_GvnWorker), FormControlEventType::Lookup)]\npublic static void General_GvnWorker_OnLookup(FormControl sender, FormControlEventArgs e)\n{\n\tTrvCashAdvance          trvCashAdvance = sender.formRun().dataSource(formdatasourcestr(TrvCashAdvances, TrvCashAdvance)).cursor();\n\tQuery                   query;\n\tQueryBuildDataSource    qbds;\n\tSysReferenceTableLookup sysTableLookup;\n\n\tquery = new Query();\n\tqbds = query.addDataSource(tableNum(HcmWorker));\n\n\tqbds = qbds.addDataSource(tableNum(GvnSubWorkerView));\n\tqbds.relations(false);\n\tqbds.addLink(fieldNum(HcmWorker, RecId), fieldNum(GvnSubWorkerView, SubWorker));\n\tqbds.joinMode(JoinMode::ExistsJoin);\n\tqbds.addRange(fieldNum(GvnSubWorkerView, Worker)).value(queryValue(trvCashAdvance.RequestingWorker));\n\n\n\tsysTableLookup = SysReferenceTableLookup::newParameters(tableNum(HcmWorker), sender);\n\tsysTableLookup.addLookupMethod(\"name\");\n\tsysTableLookup.addLookupfield(fieldNum(HcmWorker, PersonnelNumber));\n\n\tsysTableLookup.parmQuery(query);\n\tsysTableLookup.performFormLookup();\n\n\n\tFormControlCancelableSuperEventArgs event = e;\n\tevent.CancelSuperCall();\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Sistem Lookuplar\u0131<\/h2>\n\n\n\n<p>D365 F&amp;O kendisinin \u00e7e\u015fitli formlarda kulland\u0131\u011f\u0131 lookuplar\u0131, genellikle ilgili tablonun \u00fczerine kaydetmi\u015f olur. \u00d6rne\u011fin CustTable tablosu \u00fczerinde lookupCustomer isminde bir method mevcut. Ayn\u0131 \u015fekilde SalesTable \u00fczerinde de lookup ifadesi ile ba\u015flayan pek \u00e7ok method bulunuyor. Bu standart lookuplar ihtiyac\u0131n\u0131z\u0131 kar\u015f\u0131l\u0131yor ise bunlar\u0131 kullanabilirsiniz.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"314\" height=\"242\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-salestable-lookup.png\" alt=\"\" class=\"wp-image-2258\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-salestable-lookup.png 314w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-salestable-lookup-300x231.png 300w\" sizes=\"auto, (max-width: 314px) 100vw, 314px\" \/><\/figure>\n\n\n\n<p>D365 F&amp;O baz\u0131 \u00f6zel alanlar i\u00e7in \u00f6nceden <strong>lookup form<\/strong>&#8216;lar olu\u015fturmu\u015ftur. \u00d6rne\u011fin bir formda \u00e7al\u0131\u015fan se\u00e7mek istedi\u011finizde, \u00e7al\u0131\u015fan\u0131n resminin de oldu\u011fu \u00f6zel bir lookup form a\u00e7\u0131l\u0131r.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"899\" height=\"400\" src=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-worker-lookup.png\" alt=\"\" class=\"wp-image-2259\" srcset=\"https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-worker-lookup.png 899w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-worker-lookup-300x133.png 300w, https:\/\/guvensahin.com\/tr\/wp-content\/uploads\/2020\/07\/d365-fo-worker-lookup-768x342.png 768w\" sizes=\"auto, (max-width: 899px) 100vw, 899px\" \/><\/figure>\n\n\n\n<p>Bu lookup formlar\u0131, haz\u0131rlad\u0131\u011f\u0131 yard\u0131mc\u0131 s\u0131n\u0131f ile \u00e7e\u015fitli parametrelere g\u00f6re \u00e7a\u011f\u0131r\u0131r. \u00d6rne\u011fin <strong>HcmWorkerLookup<\/strong>, <strong>InventItemIdLookup<\/strong> s\u0131n\u0131flar\u0131. E\u011fer sizde bu tip bir alan i\u00e7in lookup yazmay\u0131 hedefliyorsan\u0131z, yazmadan \u00f6nce standart yap\u0131 ihtiyac\u0131n\u0131z\u0131 kar\u015f\u0131l\u0131yormu bakmak isteyebilirsiniz. A\u015fa\u011f\u0131da \u00f6rnek bir kod mevcut.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HcmWorkerLookup::newOnlyActiveEmployeesWithinCompany().lookupWorker(_callerControl);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Bilinen K\u0131s\u0131tlamalar ve \u00d6neriler<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>AX 2012&#8217;de ki t\u00fcm k\u0131s\u0131tlamalar D365 F&amp;O i\u00e7inde ge\u00e7erli.<\/li><li>Lookup query&#8217;sinde sadece ana tabloyu g\u00f6sterebilirsiniz. Join ile ekledi\u011finiz di\u011fer tablolar\u0131n alanlar\u0131 maalesef lookup&#8217;da g\u00f6z\u00fckmez. B\u00f6yle bir ihtiyac\u0131n\u0131z varsa <strong>addLookupMethod<\/strong> isimli method&#8217;u kullanarak display method&#8217;lar\u0131 g\u00f6sterebilirsiniz.<\/li><li>Birden fazla tablodan mutlaka alan g\u00f6stermeniz gerekiyorsa, bu tablolar\u0131 view ile birle\u015ftirin. View&#8217;\u0131 lookup sorgusunda kullan\u0131n.<\/li><li>Benim sorgum \u00e7ok kar\u0131\u015f\u0131k, standart query-view yap\u0131s\u0131 kar\u015f\u0131lamaz diyorsan\u0131z son \u00e7are olarak <strong>lookup form<\/strong> yapman\u0131z gerekiyor. Burada asl\u0131nda yeni bir form yap\u0131yorsunuz. Design &gt; Pattern k\u0131sm\u0131ndan Lookup ile ilgili olanlar\u0131 se\u00e7erseniz g\u00f6r\u00fcn\u00fc\u015f olarak lookup&#8217;a benziyor. Daha sonra lookup ile bu custom form&#8217;u \u00e7a\u011f\u0131r\u0131yorsunuz. Daha detay bilgiye k\u0131sa bir Google ara\u015ft\u0131rmas\u0131yla ula\u015fabilirsiniz.<\/li><li>AX 2012&#8217;deki gibi form datasource&#8217;u \u00fczerine direkt lookup yaz\u0131lam\u0131yor. B\u00f6yle bir ihtiyac\u0131n\u0131z varsa datasource&#8217;un init method&#8217;unda a\u015fa\u011f\u0131daki gibi lookup method&#8217;u override etmelisiniz.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sender.object(fieldNum(TrvExpTrans, CostType))\n\t.registerOverrideMethod(methodStr(FormDataObject, lookup), staticMethodStr(GvnUtil, lookupCostType));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Son Olarak<\/h2>\n\n\n\n<p>Lookup ile ilgili bahsedeceklerim bu kadard\u0131. Di\u011fer D365 F&amp;O yaz\u0131lar\u0131ma <a href=\"https:\/\/guvensahin.com\/tr\/category\/dynamics-365\/\">buradan<\/a>, Dynamics AX yaz\u0131lar\u0131ma da <a href=\"https:\/\/guvensahin.com\/tr\/category\/dynamics-ax\/\">\u015furadan<\/a> bakabilirsiniz. Ho\u015f\u00e7akal\u0131n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131da Dynamics 365 Finance and Operations da yer alan lookup&#8217;lardan bahsedece\u011fim. Bu yaz\u0131y\u0131 yeni ba\u015flayan arkada\u015flar\u0131 d\u00fc\u015f\u00fcnerek haz\u0131rlad\u0131m. Fakat D365 F&amp;O&#8217;a yeni ge\u00e7en AX 2012 geli\u015ftiricilerine de faydal\u0131 olacakt\u0131r. Lookup Nedir ? Bir alana t\u0131klad\u0131\u011f\u0131n\u0131zda a\u00e7\u0131lan k\u00fc\u00e7\u00fck form&#8217;a lookup denmekte. Lookup dedi\u011fimiz asl\u0131nda run-time da generate edilen bir formdur. D365 F&amp;O bir alan\u0131n ba\u015fka&hellip;&nbsp;<a href=\"https:\/\/guvensahin.com\/tr\/dynamics-365-fo-lookup-hakkinda-hersey\/\" rel=\"bookmark\">Daha fazlas\u0131n\u0131 oku &raquo;<span class=\"screen-reader-text\">Dynamics 365 F&#038;O &#8211; Lookup Olu\u015fturma<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":2249,"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,394,438,198,440,285],"class_list":["post-2220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dynamics-365-fo","tag-axapta","tag-dynamics-365","tag-dynamics-365-finance-and-operations","tag-dynamics-ax-2","tag-lookup","tag-x"],"_links":{"self":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/2220","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=2220"}],"version-history":[{"count":25,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/2220\/revisions"}],"predecessor-version":[{"id":2286,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/posts\/2220\/revisions\/2286"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/media\/2249"}],"wp:attachment":[{"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/media?parent=2220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/categories?post=2220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guvensahin.com\/tr\/wp-json\/wp\/v2\/tags?post=2220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}