Microsoft Dynamics NAV 2009 Hollanda sürümünde SEPA dosyaları oluşturursanız, bazı özel karakterler yanlış kaldırılır

Şablon: CPR - Navision kod Fiacx şablonu

# Hata: 216703 (İçerik Bakımı)

Belirtiler

Tek Euro ödemeleri alan (SEPA) ödeme dosyası oluşturursanız, tüm özel karakterler doğru Microsoft Dynamics NAV 2009 Felemenkçe sürümü kaldırılır. Bu sorunu çözmek için kod değişiklikleri bölümündeki adımları izleyin. Bu sorun aşağıdaki ürünlerde oluşur:

  • Microsoft Dynamics NAV 2009 R2 Felemenkçe sürümü

  • Microsoft Dynamics NAV 2009 SP1 Felemenkçe sürümü

Çözüm

Düzeltme bilgileri

Artık Microsoft tarafından desteklenen bir düzeltme sağlanmaktadır. Ancak bunun yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Yalnızca bu özel sorunla karşılaşmış olan sistemlere uygulayın. Bu düzeltme ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilenmiyorsanız, Microsoft Dynamics NAV 2009 sonraki hizmet paketini veya, bu düzeltmeyi içeren bir sonraki Microsoft Dynamics NAV sürümü için beklemek öneririz.

Not: Özel durumlarda, destek aramaları teknik destek uzmanı Microsoft Dynamics ve ilgili ürünlere yönelik iptal edilebilir çözeceğini giderleri belirleyen belirli bir güncelleştirmenin sorununuzu. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

Bu düzeltme genel karşıdan yükleme (Bu makalede bu düzeltme için genel bir URL sağlanmayan anlamına gelir) için nakledilmemişse, dağıtım için teknik lider, yükseltme ekibi üyesi veya yönetici onayı gerekir ve aşağıdaki bilgiler geçerlidir:

  • Düzeltmeyi almak için müşterilerin "Belirtiler" bölümünde sözü edilen hata ile karşılaşmaları gerekir.

  • Bunu gönderdiğiniz ve bir sonraki hizmet paketini (bir hizmet paketi yayımlanırsa) kullanılabilir duruma geldiğinde bunları tedarik müşterileri izlemeniz gerekir.

Bu düzeltmenin bir Microsoft Dynamics NAV hizmet paketine eklenmesi planlanmamıştır.

Yükleme bilgileri

Microsoft, programlama örneklerini yalnızca gösterim amacıyla zımni veya açık garanti olmadan sağlar. Bu, satılabilirlik veya belirli bir amaca uygunluk açısından zımni garantileri içerir ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini, yordamları oluşturmak ve yordamlardan hata ayıklamak için kullanılan araçları bildiğinizi varsayar. Microsoft destek mühendisleri belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir. Ancak, işlevsellik sağlamak veya yordamlar, belirli gereksinimlerinizi karşılayacak şekilde geliştirmek amacıyla bu örnekleri değiştirmezler.

Not: Bu düzeltmeyi yüklemeden önce tüm Microsoft Dynamics NAV istemci kullanıcıların sistem kaydedildiğini doğrulayın. Bu, Microsoft Dynamics NAV uygulama sunucusu (NAS) hizmetleri içerir. Bu düzeltmeyi uyguladığınızda yalnızca istemci kullanıcının oturum açmış olması gerekir.

Bu düzeltmeyi uygulamak için bir geliştirici lisansı olması gerekir.

Kullanıcı hesabının Windows oturumu açma penceresini veya veritabanı oturumu açma penceresi "Süper" rol kimliği atanması öneririz Kullanıcı hesabı "Süper" rol Kimliği atanamaz, kullanıcı hesabı aşağıdaki izinlere sahip olduğunu doğrulamanız gerekir:

  • Nesnenin, değiştirme değişiklik yapma izni.

  • Sistem nesne kimliği 9015 ve Sistem nesnesi kimliği 5210 nesne için Execute izni

    nesne.

Not: Veri onarım gerçekleştirmek zorunda sürece veri depoları haklarına sahip olmanız gerekmez.

Kod değişiklikleri

Not: Her zaman, uygulamadan önce test kodu denetimli bir ortamda üretim bilgisayarlarınıza düzeltmeler giderir.

Bu sorunu gidermek için şu adımları izleyin:

  1. Aşağıdaki işlevleri kontrol SEPA ISO20022 kod içinde (11000010) aşağıdaki gibi ekleyin:

    ...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. Global değişkenler kodunda SEPA ISO20022 Pain 01.01.03 raporu (11000012) aşağıdaki gibi değiştirin:
    Varolan kodu

    ...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;
    ...

    Kod değiştirme

    ...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. SEPA ISO20022 Pain 01.01.03 raporu (11000012) AddElement dizesinde işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu

    ...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;
    ...

    Kod değiştirme

    ...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. Global değişkenler kodunda SEPA ISO20022 Pain 008.001.02 raporu (11000013) aşağıdaki gibi değiştirin:
    Varolan kodu

    ...PmtHistoryLineSumAmount@1000006 : Text[50];
    PmtHistoryLineCount@1000007 : Text[20];
    FileMgt@1170000000 : Codeunit 419;

    PROCEDURE ExportSEPAFile@1000005();VAR...

    Kod değiştirme

    ...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. SEPA ISO20022 Pain 008.001.02 raporu (11000013) AddElement dizesinde işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu

    ...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);
    ...

    Kod değiştirme

    ...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);
    ...

Önkoşullar

Bu düzeltmeyi uygulamak için aşağıdaki ürünlerden birine sahip olmalıdır:

  • Microsoft Dynamics NAV 2009 R2 Felemenkçe sürümü

  • Microsoft Dynamics NAV 2009 SP1 Felemenkçe sürümü

Ayrıca, en son SEPA sürüm MSDNAV2009sp1SEPANLdebit yüklü olması gerekir.

Kaldırma bilgileri

Bu düzeltmeyi kaldıramazsınız.

Durum

Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Başvurular

VSFT DynamicsNAVSE: 353138

Not: Bu, doğrudan Microsoft destek kuruluşu bünyesinde oluşturulan bir "HIZLI YAYIN" makalesidir. Burada yer alan bilgiler, oluşan sorunlara yanıt olarak olduğu gibi sağlanmıştır. Makale hızla kullanıma sunulduğu için materyallerde yazım hataları olabilir ve materyaller bildirilmeksizin herhangi bir zamanda revize edilebilir. Kullanım koşullarıdiğer konular için bkz.

Author: Andreas.Guenther
Writer: v-luzo
Teknik İnceleme: Andreas.Guenther
Editor:

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Geri bildiriminiz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×