อาการ
ถ้าคุณสร้างไฟล์การชำระเงินเดียวยูโรชำระพื้นที่ (SEPA) อักขระพิเศษไม่ทั้งหมดจะถูกเอาออกอย่างถูกต้องใน Microsoft Dynamics NAV 2009 รุ่นภาษาดัตช์ ทำตามขั้นตอนต่าง ๆ ในส่วนของการเปลี่ยนแปลงรหัสเพื่อแก้ไขปัญหานี้ ปัญหานี้เกิดขึ้นในผลิตภัณฑ์ต่อไปนี้:
-
Microsoft Dynamics NAV 2009 R2 รุ่นภาษาดัตช์
-
SP1 2009 นำทางของ Dynamics Microsoft รุ่นภาษาดัตช์
การแก้ปัญหา
ข้อมูลโปรแกรมแก้ไขด่วน
โปรแกรมแก้ไขด่วนจะพร้อมใช้งานได้ในขณะนี้จาก Microsoft อย่างไรก็ตาม มีเป้าหมายเพียงเพื่อการแก้ไขปัญหาที่อธิบายไว้ในบทความนี้ นำวิธีนี้ไปใช้กับระบบที่ประสบกับปัญหาที่เฉพาะเจาะจงเท่านั้น โปรแกรมแก้ไขด่วนนี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณจะไม่รุนแรงได้รับผลกระทบจากปัญหานี้ เราขอแนะนำให้ คุณรอ service pack ถัดไปของ Microsoft Dynamics NAV 2009 หรือเวอร์ชันถัดไป Microsoft Dynamics NAV ที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้หมายเหตุ ในกรณีพิเศษ ค่าธรรมเนียมค่าใช้จ่ายสำหรับการสนับสนุนโทรศัพท์อาจถูกยกเลิกถ้า Technical Support Professional สำหรับ Microsoft Dynamics และผลิตภัณฑ์ที่เกี่ยวข้องตรวจพบว่าการปรับปรุงเฉพาะจะแก้ปัญหาของคุณ ค่าใช้จ่ายในการสนับสนุนตามปกติจะใช้กับคำถามและปัญหาในการสนับสนุนเพิ่มเติมซึ่งไม่สอดคล้องตามเกณฑ์สำหรับโปรแกรมปรับปรุงเฉพาะที่เกี่ยวข้อง
ข้อมูลการติดตั้ง
Microsoft ให้ตัวอย่างการเขียนโปรแกรมไว้สำหรับประกอบการอธิบายเท่านั้นโดยไม่มีการรับประกันไม่ว่าจะโดยชัดแจ้งหรือโดยนัย กรณีนี้รวมถึงแต่มิได้จำกัดเพียงแค่การการรับประกันโดยนัยเกี่ยวกับการจำหน่ายเป็นสินค้าหรือความเหมาะสำหรับวัตถุประสงค์เฉพาะ บทความนี้ตั้งสมมติฐานว่าคุณมีความคุ้นเคยกับภาษาการเขียนโปรแกรมที่กำลังแสดงและคุ้นเคยกับเครื่องมือที่ใช้ใน การสร้างและแก้จุดบกพร่องของขั้นตอนการดำเนินการ วิศวกรฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายเกี่ยวกับหน้าที่การใช้งานของกระบวนการเฉพาะ อย่างไรก็ตาม จะไม่แก้ไขตัวอย่างเหล่านี้เพื่อเพิ่มฟังก์ชัน หรือสร้างขั้นตอนเพื่อตอบสนองความต้องการเฉพาะของคุณหมายเหตุ ก่อนที่คุณติดตั้งโปรแกรมแก้ไขด่วนนี้ โปรดตรวจสอบว่า ผู้ใช้ไคลเอนต์ของ Microsoft Dynamics NAV ทั้งหมดเข้าสู่ระบบออกจากระบบ ข้อมูลนี้รวมถึงบริการ Microsoft Dynamics NAV แอพพลิเคชันเซิร์ฟเวอร์ (NAS) คุณควรไคลเอ็นต์เฉพาะผู้ใช้ที่เข้าสู่ระบบเมื่อคุณใช้โปรแกรมแก้ไขด่วนนี้เมื่อต้องการใช้โปรแกรมแก้ไขด่วนนี้ คุณต้องมีสิทธิ์การใช้งานสำหรับนักพัฒนาเราขอแนะนำว่า บัญชีผู้ใช้ ในหน้าต่างล็อกอินของ Windows หรือ ในหน้าต่างล็อกอินฐานข้อมูลสามารถกำหนดรหัสการเข้าถึงข้อมูล "ขั้นสูง" ถ้าบัญชีผู้ใช้ไม่สามารถกำหนดรหัสการบทบาท "SUPER" คุณต้องตรวจสอบว่า บัญชีผู้ใช้มีสิทธิ์ต่อไปนี้:
-
สิทธิ์การปรับเปลี่ยนสำหรับออปเจ็กต์ที่คุณจะสามารถเปลี่ยน
-
สิทธิ์ในการดำเนินการ สำหรับออบเจ็กต์5210 รหัสวัตถุของระบบและระบบ 9015 ID ของวัตถุวัตถุ
หมายเหตุ คุณไม่จำเป็นต้องมีสิทธิ์ไปยังร้านค้าข้อมูลยกเว้นว่าคุณจำเป็นต้องซ่อมแซมข้อมูล
การเปลี่ยนแปลงรหัส
หมายเหตุ เสมอทดสอบรหัสแก้ไขในสภาพแวดล้อมการควบคุมก่อนที่คุณนำไปใช้แก้ไขปัญหากับคอมพิวเตอร์ของคุณผลิตเมื่อต้องการแก้ไขปัญหานี้ ให้ทำตามขั้นตอนเหล่านี้:
-
เพิ่มฟังก์ชันต่อไปนี้ในการตรวจสอบ SEPA ISO20022 โค้ดยูนิต (11000010) เป็นดังนี้:
...PROCEDURE WindowsToASCII@1(InText@1000 : Text[1024]) : Text[1024]; VAR OutText@1003 : Text[1024]; i@1001 : Integer; Len@1005 : Integer; BEGIN OutText := InText; Len := STRLEN(InText); FOR i := 1 TO Len DO OutText[i] := WindowsToASCIIChar(CP850toUTF8(InText[i])); EXIT(OutText); END; LOCAL PROCEDURE WindowsToASCIIChar@2(c@1000 : Integer) : Char; BEGIN // EPC217-08 conversion rules CASE c OF 1..127: EXIT(WindowsToASCIICharEPC(c)); 128..255: EXIT(WindowsToASCIIChar8Bit(c)); 8364: // Euro sign EXIT('E'); ELSE EXIT(WindowsToASCIIChar16Bit(c)); END; END; LOCAL PROCEDURE WindowsToASCIIChar8Bit@4(c@1000 : Integer) : Char; BEGIN CASE c OF 191: EXIT('?'); 192..198: EXIT('A'); 199: EXIT('C'); 200..203: EXIT('E'); 204..207: EXIT('I'); 208: EXIT('D'); 209: EXIT('N'); 210..214,216: EXIT('O'); 217..220: EXIT('U'); 221: EXIT('Y'); 222: EXIT('T'); 223: EXIT('s'); 224..230: EXIT('a'); 231: EXIT('c'); 232..235: EXIT('e'); 236..239: EXIT('i'); 240: EXIT('d'); 241: EXIT('n'); 242..246,248: EXIT('o'); 249..252: EXIT('u'); 253,255: EXIT('y'); 254: EXIT('t'); END; EXIT('.'); END; LOCAL PROCEDURE WindowsToASCIIChar16Bit@5(c@1000 : Integer) : Char; BEGIN CASE c OF 256,258,260,902,913,1040,1066: EXIT('A'); 257,259,261,940,945,1072,1098: EXIT('a'); 1041: EXIT('B'); 1073: EXIT('b'); 262,264,266,268,935,1063: EXIT('C'); 263,265,267,269,967,1095: EXIT('c'); 270,272,916,1044: EXIT('D'); 271,273,948,1076: EXIT('d'); 274,276,278,280,282,904,917,1045: EXIT('E'); 275,277,279,281,283,941,949,1077: EXIT('e'); 934,1060: EXIT('F'); 966,1092: EXIT('f'); 284,286,288,290,915,1043: EXIT('G'); 285,287,289,291,947,1075: EXIT('g'); 292,294,1061: EXIT('H'); 293,295,1093: EXIT('h'); 296,298,300,302,304,306,905,906,919,921,938,1048: EXIT('I'); 297,299,301,303,305,307,912,942,943,951,953,970,1080: EXIT('i'); 308: EXIT('J'); 309: EXIT('j'); 310,922,1050: EXIT('K'); 311,954,1082: EXIT('k'); 313,315,317,319,321,923,1051: EXIT('L'); 314,316,318,320,322,955,1083: EXIT('l'); 924,1052: EXIT('M'); 956,1084: EXIT('m'); 323,325,327,925,1053: EXIT('N'); 324,326,328,957,1085: EXIT('n'); 336,338,908,911,927,937,1054: EXIT('O'); 337,339,959,969,972,974,1086: EXIT('o'); 928,936,1055: EXIT('P'); 960,968,1087: EXIT('p'); 340,342,344,929,1056: EXIT('R'); 341,343,345,961,1088: EXIT('r'); 346,348,350,352,536,931,1057,1064,1065: EXIT('S'); 347,349,351,353,537,962,963,1089,1096,1097: EXIT('s'); 354,356,358,538,920,932,1058,1062: EXIT('T'); 355,357,359,539,952,964,1090,1094: EXIT('t'); 360,362,364,366,368,370,1059: EXIT('U'); 361,363,365,367,369,371,1091: EXIT('u'); 914,1042: EXIT('V'); 946,1074: EXIT('v'); 372: EXIT('W'); 373: EXIT('w'); 926: EXIT('X'); 958: EXIT('x'); 374,376,910,933,939,1049,1068,1070,1071: EXIT('Y'); 375,944,965,971,973,1081,1100,1102,1103: EXIT('y'); 377,379,381,918,1046,1047: EXIT('Z'); 378,380,382,950,1078,1079: EXIT('z'); END; EXIT('.'); END; LOCAL PROCEDURE WindowsToASCIICharEPC@6(c@1000 : Integer) : Char; BEGIN CASE c OF 33,35..37,42,61,64,94,127: // !,#,$,%,&,*,=,@,delete EXIT('.'); 34,39,60,62,96: // ",',<,>,` EXIT(' '); 38: // AMPERSAND EXIT('+'); 59: // ; EXIT(','); 91,123: // [,{ EXIT('('); 92,124: // \,| EXIT('/'); 93,125: // ],} EXIT(')'); 95,126: // _,~ EXIT('-'); END; EXIT(c); END; LOCAL PROCEDURE CP850toUTF8@1000000(c@1000000 : Integer) : Char; BEGIN IF c IN [128..255] THEN CASE c OF 129: EXIT(252); 130: EXIT(233); 131: EXIT(226); 132: EXIT(228); 136: EXIT(234); 137: EXIT(235); 138: EXIT(232); 139: EXIT(239); 142: EXIT(196); 144: EXIT(201); 147: EXIT(244); 148: EXIT(246); 150: EXIT(251); 153: EXIT(214); 154: EXIT(220); 160: EXIT(225); 161: EXIT(237); 162: EXIT(243); 163: EXIT(250); 181: EXIT(193); 182: EXIT(194); 210: EXIT(202); 211: EXIT(203); 212: EXIT(200); 214: EXIT(205); 216: EXIT(207); 224: EXIT(211); 226: EXIT(212); 233: EXIT(218); 234: EXIT(219); ELSE EXIT('.'); END; EXIT(c); END;...
-
เปลี่ยนแปลงรหัสนี้ในตัวแปรส่วนกลางในรายงานปวด ISO20022 SEPA 01.01.03 (11000012) เป็นดังนี้:รหัสที่มีอยู่
...PaymentHistoryLine@1000002 : Record 11000002;CompanyInfo@1000003 : Record 79;XMLDomDoc@1000004 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 3.0:{F6D90F11-9C73-11D3-B32E-00C04F990BB4}:'Microsoft XML, v3.0'.DOMDocument";ExportFileName@1000000 : Text[250];AlwaysNewFileName@1000001 : Boolean;...
รหัสแทน
...PaymentHistoryLine@1000002 : Record 11000002;CompanyInfo@1000003 : Record 79;XMLDomDoc@1000004 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 3.0:{F6D90F11-9C73-11D3-B32E-00C04F990BB4}:'Microsoft XML, v3.0'.DOMDocument";// Add the following line.CheckSEPA@1000006 : Codeunit 11000010;// End of the added line.ExportFileName@1000000 : Text[250];AlwaysNewFileName@1000001 : Boolean;...
-
เปลี่ยนแปลงรหัสนี้ในฟังก์ชันAddElementในรายงานปวด ISO20022 SEPA 01.01.03 (11000012) เป็นดังนี้:รหัสที่มีอยู่
...EXIT(FALSE);IF NodeText <> '' THEN// Delete the following lines.NewChildNode.text := CONVERTSTR(NodeText,'����������������������������������������������i������������������','CueaaaaceeeiiiAAEaAooouuyOUoOaiounAAAcyaAoDEEEiIIIEEIOBOOoOuUUUyY');// End of the deleted lines.XMLNode.appendChild(NewChildNode);CreatedXMLNode := NewChildNode;...
รหัสแทน
...EXIT(FALSE);IF NodeText <> '' THEN// Add the following line.NewChildNode.text := CheckSEPA.WindowsToASCII(NodeText);// End of the added line.XMLNode.appendChild(NewChildNode);CreatedXMLNode := NewChildNode;...
-
เปลี่ยนแปลงรหัสนี้ในตัวแปรส่วนกลางในรายงานปวด ISO20022 SEPA 008.001.02 (11000013) เป็นดังนี้:รหัสที่มีอยู่
...PmtHistoryLineSumAmount@1000006 : Text[50];PmtHistoryLineCount@1000007 : Text[20];FileMgt@1170000000 : Codeunit 419;PROCEDURE ExportSEPAFile@1000005();VAR...
รหัสแทน
...PmtHistoryLineSumAmount@1000006 : Text[50];PmtHistoryLineCount@1000007 : Text[20];FileMgt@1170000000 : Codeunit 419;// Add the following line.CheckSEPA@1000005 : Codeunit 11000010;// End of the added line.PROCEDURE ExportSEPAFile@1000005();VAR...
-
เปลี่ยนแปลงรหัสนี้ในฟังก์ชันAddElementในรายงานปวด ISO20022 SEPA 008.001.02 (11000013) เป็นดังนี้:รหัสที่มีอยู่
...EXIT(FALSE);IF NodeText <> '' THEN// Delete the following lines.NewChildNode.text := CONVERTSTR(NodeText,'����������������������������������������������i������������������','CueaaaaceeeiiiAAEaAooouuyOUoOaiounAAAcyaAoDEEEiIIIEEIOBOOoOuUUUyY');// End of the deleted lines.XMLNode.appendChild(NewChildNode);CreatedXMLNode := NewChildNode;CLEAR(NewChildNode);...
รหัสแทน
...EXIT(FALSE);IF NodeText <> '' THEN// Add the following line.NewChildNode.text := CheckSEPA.WindowsToASCII(NodeText);// End of the added line.XMLNode.appendChild(NewChildNode);CreatedXMLNode := NewChildNode;CLEAR(NewChildNode);...
ข้อกำหนดเบื้องต้น
คุณต้องมีหนึ่งผลิตภัณฑ์ต่อไปนี้ติดตั้งอยู่เพื่อใช้โปรแกรมแก้ไขด่วนนี้:
-
Microsoft Dynamics NAV 2009 R2 รุ่นภาษาดัตช์
-
SP1 2009 นำทางของ Dynamics Microsoft รุ่นภาษาดัตช์
นอกจากนี้ คุณต้องมี SEPA รุ่นล่าสุดติดตั้งMSDNAV2009sp1SEPANLdebit
ข้อมูลการเอาออก
คุณไม่สามารถเอาโปรแกรมแก้ไขด่วนนี้
สถานะ
Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "นำไปใช้กับ"
หมายเหตุ นี่คือบทความ "เผยแพร่เร็ว" ที่สร้างขึ้นโดยตรงจากภายใน Microsoft สนับสนุนองค์กร ข้อมูลในที่นี้ให้ไว้ตามสภาพ เพื่อตอบสนองกับปัญหาที่เกิดขึ้นใหม่ เป็นผลมาจากความเร็วในการทำให้พร้อมใช้งาน วัสดุอาจรวมถึงข้อผิดพลาดการพิมพ์ผิด และอาจแก้ไขได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบ ดูข้อตกลงการใช้สำหรับข้อควรพิจารณาอื่น ๆ