{"id":1101,"date":"2017-05-01T06:53:33","date_gmt":"2017-05-01T04:53:33","guid":{"rendered":"http:\/\/blog.systemconnect.dk\/?p=1101"},"modified":"2017-04-29T16:36:13","modified_gmt":"2017-04-29T14:36:13","slug":"gaa-aldrig-tilbage-til-en-event-fuser","status":"publish","type":"post","link":"https:\/\/scblog.lynge.org\/?p=1101","title":{"rendered":"G\u00e5 aldrig tilbage til en Dynamics NAV event-fuser"},"content":{"rendered":"<p>Hvis du nogensinde har oplevet at tabel event subscriber ikke bliver afviklet selvom den er defineret og aktiv jf. Dynamics NAV, ja s\u00e5 kan det skyldes at du er ramt af bug id 203304, &#8220;Events stop being triggered after compiling other objects&#8221;, som blev l\u00f8st i Dynamics NAV 2016 CU16 og NAV 2017 CU4.<\/p>\n<p>Fejlen fremprovokeres let med f\u00f8lgende subscriber codeunit, der gerne skulle kaldes n\u00e5r &#8220;Description 2&#8221; \u00e6ndres p\u00e5 Item-tabellen:<\/p>\n<pre>OBJECT Codeunit 50000 DynHookTest\r\n{\r\n\u00a0 OBJECT-PROPERTIES\r\n\u00a0 {\r\n\u00a0\u00a0\u00a0 Date=28-04-17;\r\n\u00a0\u00a0\u00a0 Time=09:43:53;\r\n\u00a0\u00a0\u00a0 Modified=Yes;\r\n\u00a0\u00a0\u00a0 Version List=Dyn Hook Test;\r\n\u00a0 }\r\n\u00a0 PROPERTIES\r\n\u00a0 {\r\n\u00a0\u00a0\u00a0 OnRun=BEGIN\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 END;\r\n\r\n\u00a0 }\r\n\u00a0 CODE\r\n\u00a0 {\r\n\r\n\u00a0\u00a0\u00a0 [EventSubscriber(Table,27,OnAfterValidateEvent,\"Description 2\")]\r\n\u00a0\u00a0\u00a0 LOCAL PROCEDURE ItemAfterValidateDescription2@1000000001(VAR Rec@1000000000 : Record 27;VAR xRec@1000000001 : Record 27;CurrFieldNo@1000000002 : Integer);\r\n\u00a0\u00a0\u00a0 BEGIN\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 MESSAGE('Hook call');\r\n\u00a0\u00a0\u00a0 END;\r\n\r\n\u00a0\u00a0\u00a0 BEGIN\r\n\u00a0\u00a0\u00a0 END.\r\n\u00a0 }\r\n}<\/pre>\n<p>For at fremprovokere fejlen g\u00f8res f\u00f8lgende:<\/p>\n<ol>\n<li>Importer ovenst\u00e5ende codeunit 50000, Dyn Hook Test<\/li>\n<li>Tilf\u00f8j &#8220;Description 2&#8221; til page 30,\u00a0Item Card<\/li>\n<li>K\u00f8r klienten og check at dialogen &#8220;Hook call&#8221; dukker op n\u00e5r du retter i &#8220;Description 2&#8221; p\u00e5 et varekort<\/li>\n<li>Ret derefter fx tabel 37, Sales Line &#8211; du kan n\u00f8jes med at skrive noget i Description p\u00e5 et felt og slette det igen. Og s\u00e5 gemme tabellen compileret.<\/li>\n<li>Lav derefter samme test som i punkt 3 &#8211; og b\u00e6m\u00e6rk at dialogen &#8220;Hook call&#8221; IKKE dukker op.<\/li>\n<\/ol>\n<p>Det hj\u00e6lper ikke selvom du lukker klienten og starter den igen. Men overs\u00e6tter du codeunit 50000, Dyn Hook Test igen, s\u00e5 kommer event subscriptionen til live igen.<\/p>\n<p>Fejlen er som sagt l\u00f8st i Dynamics NAV 2016 CU 16 og Dynamics NAV 2017 CU 4, og\u00a0blev s\u00e5 vidt vides trigget p\u00e5 tabeller der havde flowfields til tabeller, som blev \u00e6ndret. Det er l\u00f8st ved at de tabeller ogs\u00e5 bliver markeret som \u00e6ndret n\u00e5r kildetabellen for flowfields \u00e6ndres. Det kan ses ved at en \u00e5ben Windowsklient nu advarer om at tabellen er \u00e6ndret (fx vil klienten advare om at Item tabellen er \u00e6ndret, selvom du \u00e6ndrer i Sales Line tabellen\u00a0med ovenst\u00e5ende eksempel).<\/p>\n<p>Workarounds kan fx v\u00e6re at genovers\u00e6tte samtlige codeunits (da de er de eneste der kan indeholder event subscribers) HVER gang du retter i en tabel. Og det er man efter min mening n\u00f8dt til at g\u00f8re indtil man har opdateret platformen\u00a0til mindst\u00a0hhv. NAV 2016 CU16 eller NAV 2017 CU4 (du b\u00f8r naturligvis opdatere til nyeste nu hvor du er i gang).<\/p>\n<p>I \u00f8vrigt: Hermed en opfordring til at bruge events alle steder hvor det er muligt &#8211; og indrapportere steder hvor du evt. mangler event publishers til Microsoft (enten via NAV support eller som \u00f8nske p\u00e5\u00a0<a href=\"http:\/\/connect.microsoft.com\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/connect.microsoft.com<\/a>). Det er genialt og g\u00f8r det v\u00e6sentligt lettere at opdatere NAV og at strukturere dine tilpasninger p\u00e6nt.<\/p>\n<p>&nbsp;<\/p>\n<p>Credits til f\u00f8lgende som har lavet benarbejdet med at identificere fejlen, herunder lavet ovenst\u00e5ende codeunit og repro:<\/p>\n<ul>\n<li>Nikolaj S. Jensen, <a href=\"http:\/\/www.dynalogic.dk\" target=\"_blank\" rel=\"noopener noreferrer\">Dynalogic<\/a><\/li>\n<li>Thomas S\u00f8rensen, <a href=\"http:\/\/www.dynalogic.dk\" target=\"_blank\" rel=\"noopener noreferrer\">Dynalogic<\/a><\/li>\n<\/ul>\n<p>&#8230;og som s\u00e5 ofte ogs\u00e5 tak til Lars Lohndorf-Larsen, <a href=\"http:\/\/www.microsoft.com\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft<\/a> for at identificere bug-id&#8217;et som var skyld i fejlen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hvis du nogensinde har oplevet at tabel event subscriber ikke bliver afviklet selvom den er defineret og aktiv jf. Dynamics NAV, ja s\u00e5 kan det skyldes at du er ramt af bug id 203304, &#8220;Events stop being triggered after compiling &hellip; <a href=\"https:\/\/scblog.lynge.org\/?p=1101\">L\u00e6s resten <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40,41,38,32,35,36],"tags":[30,43,11,54,52,29,23,14,42,44,31,9,7],"class_list":["post-1101","post","type-post","status-publish","format-standard","hentry","category-c5-support","category-c5-teknik","category-dynamics-c5","category-dynamics-nav","category-nav-support","category-nav-teknik","tag-bug","tag-c5","tag-dynamics","tag-dynamics-c5","tag-dynamics-nav","tag-fejl","tag-hint","tag-microsoft","tag-nav","tag-navigator","tag-navision","tag-udgivelse","tag-versioner"],"_links":{"self":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/1101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1101"}],"version-history":[{"count":3,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/1101\/revisions"}],"predecessor-version":[{"id":1104,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/1101\/revisions\/1104"}],"wp:attachment":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}