นำไปใช้กับ
Dynamics NAV 2009

อาการ

ถ้าคุณสร้างไฟล์การชำระเงินเดียวยูโรชำระพื้นที่ (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 ของวัตถุวัตถุ

หมายเหตุ คุณไม่จำเป็นต้องมีสิทธิ์ไปยังร้านค้าข้อมูลยกเว้นว่าคุณจำเป็นต้องซ่อมแซมข้อมูล

การเปลี่ยนแปลงรหัส

หมายเหตุ เสมอทดสอบรหัสแก้ไขในสภาพแวดล้อมการควบคุมก่อนที่คุณนำไปใช้แก้ไขปัญหากับคอมพิวเตอร์ของคุณผลิตเมื่อต้องการแก้ไขปัญหานี้ ให้ทำตามขั้นตอนเหล่านี้:

  1. เพิ่มฟังก์ชันต่อไปนี้ในการตรวจสอบ 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;...
  2. เปลี่ยนแปลงรหัสนี้ในตัวแปรส่วนกลางในรายงานปวด 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;...
  3. เปลี่ยนแปลงรหัสนี้ในฟังก์ชัน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;...
  4. เปลี่ยนแปลงรหัสนี้ในตัวแปรส่วนกลางในรายงานปวด 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...
  5. เปลี่ยนแปลงรหัสนี้ในฟังก์ชัน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 สนับสนุนองค์กร ข้อมูลในที่นี้ให้ไว้ตามสภาพ เพื่อตอบสนองกับปัญหาที่เกิดขึ้นใหม่ เป็นผลมาจากความเร็วในการทำให้พร้อมใช้งาน วัสดุอาจรวมถึงข้อผิดพลาดการพิมพ์ผิด และอาจแก้ไขได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบ ดูข้อตกลงการใช้สำหรับข้อควรพิจารณาอื่น ๆ

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ