匯入與 CAMT 的銀行對帳單,在荷蘭文版本的 Microsoft 動態航行點 2009年時,就會發生這個問題。此外,開啟 「 客戶 」 總帳項目不會調解自動。請依照下列程式碼變更一節,若要解決這個問題的步驟。下列產品中,就會發生這個問題︰
-
荷蘭文版本的 Microsoft 動態航行點 2009 R2
-
Microsoft 動態航行點 2009 Service Pack 1 (SP1) 的荷蘭文版本
解決方案
Hotfix 資訊
已經可以從 Microsoft 取得支援的 hotfix。不過,它只被用來修正本文所述的問題。它只適用於發生此特定問題的系統上。此 hotfix 可能會接受其他測試。因此,如果此問題不會嚴重影響,我們建議您等候下一步的 Microsoft 動態航行點 2009 service pack 或包含此 hotfix 的下一個 Microsoft 動態航行點版本。
注意 在特殊的情況下,通常會支援呼叫可能已被取消如果技術支援專業人員的 Microsoft 動態及相關的產品所產生的費用會決定某特定更新程式可以解決您的問題。收取支援費用會套用,如果有其他支援問題是,不能限定的特定更新程式。
安裝資訊
Microsoft 會提供程式設計範例僅供說明,而不做任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已相當熟悉使用的我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能。不過,它們不會修改這些範例以提供附加功能或建構程序來滿足您特定需求。
注意套用此 hotfix 之前,請確認所有的 Microsoft 動態航行點用戶端使用者會登出系統。這包括 Microsoft 動態航行點應用程式伺服器 (NAS) 服務。您應該是唯一的用戶端使用者已登入,當您實作此 hotfix。
若要實作此 hotfix,您必須有開發人員授權。
我們建議您在 Windows 登入] 視窗中的色彩,或資料庫登入] 視窗中的使用者帳戶被指派 「 進階 」 的角色識別碼。如果使用者帳戶不能指派為 「 超級 」 的角色識別碼,您必須確認使用者帳戶具有下列權限︰
-
您將會變更物件的 [修改] 權限。
-
執行權限的系統物件 ID 5210物件和系統物件 ID 9015
物件。
注意您沒有擁有資料存放區的權限,除非您需要執行資料修復。
程式碼變更
注意永遠測試程式碼修正在受控制的環境中才能套用到實際執行電腦的修正程式。
若要解決這個問題,請依照下列步驟執行:
-
變更中屬性的程式碼,在 CBG 陳述式對帳 codeuint (11000006) 如下所示︰
現有的程式碼...CBGStatementRec@1000000 : Record 11400;
BEGIN
ResetNumbers;
// Delete the following lines.
IF CBGStatementRec.FIND('-') THEN BEGIN
REPEAT
MatchCBGStatement(CBGStatementRec);
UNTIL CBGStatementRec.NEXT() = 0;
END;
// End of the deleted lines.
END;
}
...取代程式碼
...CBGStatementRec@1000000 : Record 11400;
BEGIN
ResetNumbers;
// Add the following lines.
IF CBGStatementRec.FIND('-') THEN
REPEAT
MatchCBGStatement(CBGStatementRec);
UNTIL CBGStatementRec.NEXT = 0;
// End of the added lines.
END;
}
... -
變更在全域變數在 CBG 陳述式對帳 codeuint (11000006) 中的程式碼如下所示︰
現有的程式碼 1...PostDesRec@1000016 : Record 11000006;
PaymenthistorylineRec@1000017 : Record 11000002;
TransactionModeRec@1000018 : Record 11000004;
// Delete the following lines.
Tab@1000019 : Text[2];
BankaccountNo@1000020 : ARRAY [5] OF Code[40];
Name@1000021 : Code[40];
// End of the deleted lines.
Address@1000022 : Code[40];
City@1000023 : Code[40];
Identification@1000024 : Code[40];
...取代程式碼 1
...PostDesRec@1000016 : Record 11000006;
PaymenthistorylineRec@1000017 : Record 11000002;
TransactionModeRec@1000018 : Record 11000004;
// Add the following lines.
TempBankAccount@1000025 : Record 270;
Name@1000021 : Code[80];
// End of the added lines.
Address@1000022 : Code[40];
City@1000023 : Code[40];
Identification@1000024 : Code[40];
...現有的程式碼 2
...Address@1000022 : Code[40];
City@1000023 : Code[40];
Identification@1000024 : Code[40];
// Delete the following lines.
Invoicenumber@1000025 : Text[250];
Len@1000026 : Integer;
NumberOfPossibleBankAccounts@1000027 : Integer;
// End of the deleted lines.
NumberOfDocumentNumbers@1000028 : Integer;
NumberOfLinesProcessed@1000029 : Integer;
NumberOfLinesChanged@1000030 : Integer;
...取代程式碼 2
...Address@1000022 : Code[40];
City@1000023 : Code[40];
Identification@1000024 : Code[40];
NumberOfDocumentNumbers@1000028 : Integer;
NumberOfLinesProcessed@1000029 : Integer;
NumberOfLinesChanged@1000030 : Integer;
...現有的程式碼 3
...Window@1000040 : Dialog;
LocalFunctionalityMgt@1000041 : Codeunit 11400;
HideMessages@1000042 : Boolean;
PROCEDURE MatchCBGStatement@1000000(CBGStatementRec@1000000 : Record 11400);
VAR
...取代程式碼 3
...Window@1000040 : Dialog;
LocalFunctionalityMgt@1000041 : Codeunit 11400;
HideMessages@1000042 : Boolean;
// Add the following line.
BankAccountCharsToKeep@1000019 : Text[250];
PROCEDURE MatchCBGStatement@1000000(CBGStatementRec@1000000 : Record 11400);
VAR
... -
變更 CBG 陳述式對帳 codeuint (11000006) 的MatchCBGStatementLine函式中的程式碼如下所示︰
現有的程式碼 1...PROCEDURE MatchCBGStatementLine@1000001(CBGStatementRec@1000000 : Record 11400;VAR CBGStatementlineRec@1000001 : Record 11401);
VAR
RecChanged@1000002 : Boolean;
// Delete the following line.
Found@1000003 : Boolean;
PaymentHistoryFound@1000004 : Boolean;
i@1000005 : Integer;
strFilter@1000006 : Text[250];
...取代程式碼 1
...PROCEDURE MatchCBGStatementLine@1000001(CBGStatementRec@1000000 : Record 11400;VAR CBGStatementlineRec@1000001 : Record 11401);
VAR
RecChanged@1000002 : Boolean;
PaymentHistoryFound@1000004 : Boolean;
i@1000005 : Integer;
strFilter@1000006 : Text[250];
...現有的程式碼 2
...NumberOfLinesProcessed := NumberOfLinesProcessed + 1;
RecChanged := FALSE;
- CLEAR(BankaccountNo);
CLEAR(Name);
CLEAR(Address);
CLEAR(City);
...取代程式碼 2
...NumberOfLinesProcessed := NumberOfLinesProcessed + 1;
RecChanged := FALSE;
// Add the following line.
CLEAR(TempBankAccount);
CLEAR(Name);
CLEAR(Address);
CLEAR(City);
...現有的程式碼 3
...CLEAR(Address);
CLEAR(City);
CLEAR(Identification);
// Delete the following line.
NumberOfPossibleBankAccounts := 0;
PostDesRec.SETRANGE("Journal Template Name", CBGStatementlineRec."Journal Template Name");
PostDesRec.SETRANGE("CBG Statement No.", CBGStatementlineRec."No.");
...取代程式碼 3
...CLEAR(Address);
CLEAR(City);
CLEAR(Identification);
PostDesRec.SETRANGE("Journal Template Name", CBGStatementlineRec."Journal Template Name");
PostDesRec.SETRANGE("CBG Statement No.", CBGStatementlineRec."No.");
...現有的程式碼 4
...PostDesRec.SETRANGE("CBG Statement No.", CBGStatementlineRec."No.");
PostDesRec.SETRANGE("CBG Statement Line No.", CBGStatementlineRec."Line No.");
// Delete the following line.
IF PostDesRec.FIND('-') THEN BEGIN
REPEAT
CASE PostDesRec."Information Type" OF
PostDesRec."Information Type"::"Description and Sundries":
...取代程式碼 4
...PostDesRec.SETRANGE("CBG Statement No.", CBGStatementlineRec."No.");
PostDesRec.SETRANGE("CBG Statement Line No.", CBGStatementlineRec."Line No.");
// Add the following line.
IF PostDesRec.FIND('-') THEN
REPEAT
CASE PostDesRec."Information Type" OF
PostDesRec."Information Type"::"Description and Sundries":
...現有的程式碼 5
...REPEAT
CASE PostDesRec."Information Type" OF
PostDesRec."Information Type"::"Description and Sundries":
// Delete the following lines.
IF NOT SplitAccountnumber(PostDesRec.Description) THEN
SplitInvoicenumber(PostDesRec.Description);
PostDesRec."Information Type"::"Account No. Balancing Account":
SplitAccountnumber(PostDesRec.Description);
// End of the dle
PostDesRec."Information Type"::"Name Acct. Holder":
Name := PostDesRec.Description;
PostDesRec."Information Type"::"Address Acct. Holder":
...取代程式碼 5
...REPEAT
CASE PostDesRec."Information Type" OF
PostDesRec."Information Type"::"Description and Sundries":
// Add the following lines.
SplitAccountNumber(PostDesRec.Description);
PostDesRec."Information Type"::"Account No. Balancing Account":
AddPossibleBankAccount(PostDesRec.Description);
// End of the added lines.
PostDesRec."Information Type"::"Name Acct. Holder":
Name := PostDesRec.Description;
PostDesRec."Information Type"::"Address Acct. Holder":
...現有的程式碼 6
...Identification := PostDesRec.Description;
END;
UNTIL PostDesRec.NEXT = 0;
// Delete the following lines.
END;
IF CBGStatementlineRec."Account No." = '' THEN BEGIN
FOR i := 1 TO 5 DO BEGIN
IF BankaccountNo[i] <> '' THEN BEGIN
IF CBGStatementlineRec.Credit > 0 THEN BEGIN
IF FindAccountnumber(BankaccountNo[i], TempRec."Source Type"::Customer,CBGStatementlineRec."Account No.") THEN BEGIN
// End of the deleted lines.
CBGStatementlineRec."Account Type" := CBGStatementlineRec."Account Type"::Customer;
CBGStatementlineRec.VALIDATE("Account No.", CBGStatementlineRec."Account No.");
CBGStatementlineRec."Reconciliation Status" := CBGStatementlineRec."Reconciliation Status"::Changed;
...取代程式碼 6
...Identification := PostDesRec.Description;
END;
UNTIL PostDesRec.NEXT = 0;
// Add the following lines.
IF CBGStatementlineRec."Account No." = '' THEN BEGIN
IF TempBankAccount.FINDFIRST THEN
REPEAT
IF TempBankAccount.IBAN <> '' THEN BEGIN
IF CBGStatementlineRec.Credit > 0 THEN BEGIN
IF FindAccountnumber(TempBankAccount.IBAN,TempRec."Source Type"::Customer,CBGStatementlineRec."Account No.") THEN BEGIN
// End of the added lines.
CBGStatementlineRec."Account Type" := CBGStatementlineRec."Account Type"::Customer;
CBGStatementlineRec.VALIDATE("Account No.", CBGStatementlineRec."Account No.");
CBGStatementlineRec."Reconciliation Status" := CBGStatementlineRec."Reconciliation Status"::Changed;
...現有的程式碼 7
...RecChanged := TRUE;
END;
END ELSE BEGIN
// Delete the following line.
IF FindAccountnumber(BankaccountNo[i], TempRec."Source Type"::Vendor,CBGStatementlineRec."Account No.") THEN BEGIN
CBGStatementlineRec."Account Type" := CBGStatementlineRec."Account Type"::Vendor;
CBGStatementlineRec.VALIDATE("Account No.", CBGStatementlineRec."Account No.");
CBGStatementlineRec."Reconciliation Status" := CBGStatementlineRec."Reconciliation Status"::Changed;
...取代程式碼 7
...RecChanged := TRUE;
END;
END ELSE BEGIN
// Add the following line.
IF FindAccountnumber(TempBankAccount.IBAN,TempRec."Source Type"::Vendor,CBGStatementlineRec."Account No.") THEN BEGIN
CBGStatementlineRec."Account Type" := CBGStatementlineRec."Account Type"::Vendor;
CBGStatementlineRec.VALIDATE("Account No.", CBGStatementlineRec."Account No.");
CBGStatementlineRec."Reconciliation Status" := CBGStatementlineRec."Reconciliation Status"::Changed;
...現有的程式碼 8
...END;
END;
END;
// Delete the following line.
END;
IF NOT RecChanged THEN BEGIN
IF Name <> '' THEN BEGIN
IF CBGStatementlineRec.Credit > 0 THEN BEGIN
...取代程式碼 8
...END;
END;
END;
// Add the following line.
UNTIL TempBankAccount.NEXT = 0;
IF NOT RecChanged THEN BEGIN
IF Name <> '' THEN BEGIN
IF CBGStatementlineRec.Credit > 0 THEN BEGIN
...現有的程式碼 9
...END;
END;
// Delete the following lines.
IF RecChanged THEN BEGIN
CBGStatementlineRec.MODIFY(TRUE);
// End of the deleted lines.
END;
END;
...取代程式碼 9
...END;
END;
// Add the following lines.
IF RecChanged THEN
CBGStatementlineRec.MODIFY(TRUE);
END;
PROCEDURE SplitAccountNumber@1000002(strBuf@1000001 : Text[250]);
VAR
AccNo@1000003 : Text[30];
BEGIN
IF LocalFunctionalityMgt.CheckBankAccNo(COPYSTR(strBuf,1,30),'',AccNo) THEN
AddPossibleBankAccount(AccNo);
END;
PROCEDURE FindAccountnumber@1000004("Account Name"@1000001 : Code[80];"Source Type"@1000002 : Integer;VAR Sourcenumber@1000003 : Code[20]) found@1000000 : Boolean;
BEGIN
TempRec.SETRANGE("Data Type",TempRec."Data Type"::Bankaccount);
TempRec.SETRANGE("Source Type","Source Type");
TempRec.SETRANGE(Word,"Account Name");
IF TempRec.FIND('-') THEN BEGIN
Sourcenumber := TempRec."Source No.";
EXIT(TRUE);
// End of the added lines.
END;
END;
... -
變更 CBG 陳述式對帳 codeuint (11000006) 的SplitAccountnumber函式中的程式碼如下所示︰
現有的程式碼...END;
END;
// Delete the following lines.
PROCEDURE SplitAccountnumber@1000002(VAR strBuf@1000001 : Text[250]) result@1000000 : Boolean;
VAR
strHlpBuf@1000002 : Text[250];
AccNo@1000003 : Text[30];
BEGIN
result := LocalFunctionalityMgt.CheckBankAccNo(COPYSTR(strBuf,1,30), '', AccNo);
IF result THEN BEGIN
NumberOfPossibleBankAccounts := NumberOfPossibleBankAccounts + 1;
BankaccountNo[NumberOfPossibleBankAccounts] :=
LocalFunctionalityMgt.CharacterFilter(AccNo,'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ');
END;
END;
PROCEDURE SplitInvoicenumber@1000003(strBuf@1000000 : Text[250]);
BEGIN
END;
PROCEDURE FindAccountnumber@1000004("Account Name"@1000001 : Code[80];"Source Type"@1000002 : Integer;VAR Sourcenumber@1000003 : Code[20]) found@1000000 : Boolean;
BEGIN
TempRec.SETRANGE(TempRec."Data Type", TempRec."Data Type"::Bankaccount);
TempRec.SETRANGE(TempRec."Source Type", "Source Type");
TempRec.SETRANGE(TempRec.Word, "Account Name");
IF TempRec.FIND('-') THEN BEGIN
Sourcenumber := TempRec."Source No.";
EXIT(TRUE);
END;
END;
// End of the deleted lines.
PROCEDURE FindNAC@1000005(Name@1000001 : Code[80];Address@1000002 : Code[80];City@1000003 : Code[80];"Source Type"@1000004 : Integer;VAR SourcenumberFound@1000005 : Code[20]) found@1000000 : Boolean;
VAR
NameResultTemp@1000006 : TEMPORARY Record 11000008;
...取代程式碼
...END;
END;
PROCEDURE FindNAC@1000005(Name@1000001 : Code[80];Address@1000002 : Code[80];City@1000003 : Code[80];"Source Type"@1000004 : Integer;VAR SourcenumberFound@1000005 : Code[20]) found@1000000 : Boolean;
VAR
NameResultTemp@1000006 : TEMPORARY Record 11000008;
... -
變更 CBG 陳述式對帳 codeuint (11000006) 的FindNAC函式中的程式碼如下所示︰
現有的程式碼 1...AddressResultTemp.SETCURRENTKEY("Source Type", "Source No.");
CityResultTemp.SETCURRENTKEY("Source Type", "Source No.");
// Delete the following lines.
TempRec.SETRANGE(TempRec."Source Type", "Source Type");
TempRec.SETRANGE(TempRec."Data Type", TempRec."Data Type"::Name);
TempRec.SETRANGE(TempRec.Word, COPYSTR(Name,1,20));
// End of the deleted lines.
IF TempRec.FIND('-') THEN
REPEAT
NameResultTemp := TempRec;
...取代程式碼 1
...AddressResultTemp.SETCURRENTKEY("Source Type", "Source No.");
CityResultTemp.SETCURRENTKEY("Source Type", "Source No.");
// Add the following lines.
TempRec.SETRANGE("Source Type","Source Type");
TempRec.SETRANGE("Data Type",TempRec."Data Type"::Name);
TempRec.SETRANGE(Word,COPYSTR(Name,1,20));
// End of the added lines.
IF TempRec.FIND('-') THEN
REPEAT
NameResultTemp := TempRec;
...現有的程式碼 2
...NameResultTemp.INSERT;
UNTIL TempRec.NEXT = 0;
// Delete the following lines.
TempRec.RESET();
TempRec.SETRANGE(TempRec."Source Type", "Source Type");
TempRec.SETRANGE(TempRec."Data Type", TempRec."Data Type"::Street);
TempRec.SETRANGE(TempRec.Word, COPYSTR(Address,1,20));
// End of the deleted lines.
IF TempRec.FIND('-') THEN
REPEAT
NameResultTemp.SETRANGE("Source Type",TempRec."Source Type");
...取代程式碼 2
...NameResultTemp.INSERT; UNTIL TempRec.NEXT = 0;
// Add the following lines.
TempRec.RESET;
TempRec.SETRANGE("Source Type","Source Type");
TempRec.SETRANGE("Data Type",TempRec."Data Type"::Street);
TempRec.SETRANGE(Word,COPYSTR(Address,1,20));
// End of the added lines.
IF TempRec.FIND('-') THEN
REPEAT
NameResultTemp.SETRANGE("Source Type",TempRec."Source Type");
...現有的程式碼 3
...END;
UNTIL TempRec.NEXT = 0;
// Delete the following lines.
TempRec.RESET();
TempRec.SETRANGE(TempRec."Source Type", "Source Type");
TempRec.SETRANGE(TempRec."Data Type", TempRec."Data Type"::City);
TempRec.SETRANGE(TempRec.Word, COPYSTR(City,1,20));
// End of the deleted lines.
IF TempRec.FIND('-') THEN
REPEAT
AddressResultTemp.SETRANGE("Source Type",TempRec."Source Type");
...取代程式碼 3
...END;
UNTIL TempRec.NEXT = 0;
// Add the following lines.
TempRec.RESET;
TempRec.SETRANGE("Source Type","Source Type");
TempRec.SETRANGE("Data Type",TempRec."Data Type"::City);
TempRec.SETRANGE(Word,COPYSTR(City,1,20));
// End of the added lines.
IF TempRec.FIND('-') THEN
REPEAT
AddressResultTemp.SETRANGE("Source Type",TempRec."Source Type");
... -
變更 CBG 陳述式對帳 codeuint (11000006) 的MakeTempfile函式中的程式碼如下所示︰
現有的程式碼...VAR
NumberRec@1000000 : Integer;
RecNumerator@1000001 : Integer;
// Delete the following line.
BankAccountCharsToKeep@1000002 : Text[50];
BEGIN
BankAccountCharsToKeep := 'ABCDEFGHIJKLMNOPQRSTUVWYXZ0123456789';
TempRec.RESET();
...取代程式碼
...VAR
NumberRec@1000000 : Integer;
RecNumerator@1000001 : Integer;
BEGIN
BankAccountCharsToKeep := 'ABCDEFGHIJKLMNOPQRSTUVWYXZ0123456789';
TempRec.RESET();
... -
變更 CBG 陳述式對帳 codeuint (11000006) 的GetTransactionModeFilter函式中的程式碼如下所示︰
現有的程式碼 1...LOCAL PROCEDURE GetTransactionModeFilter@1000012(VAR CBGStatementLineRec@1000000 : Record 11401;VAR strFilter@1000001 : Text[250];Account_Type@1000002 : Integer);
VAR
CBGStatementRec@1000003 : Record 11400;
// Delete the following line.
BankAccountRec@1000004 : Record 270;
BEGIN
strFilter := '';
IF CBGStatementRec.GET(CBGStatementLineRec."Journal Template Name",CBGStatementLineRec."No.") THEN BEGIN
...取代程式碼 1
...LOCAL PROCEDURE GetTransactionModeFilter@1000012(VAR CBGStatementLineRec@1000000 : Record 11401;VAR strFilter@1000001 : Text[250];Account_Type@1000002 : Integer);
VAR
CBGStatementRec@1000003 : Record 11400;
BEGIN
strFilter := '';
IF CBGStatementRec.GET(CBGStatementLineRec."Journal Template Name",CBGStatementLineRec."No.") THEN BEGIN
...現有的程式碼 2
...strFilter := '';
IF CBGStatementRec.GET(CBGStatementLineRec."Journal Template Name",CBGStatementLineRec."No.") THEN BEGIN
TransactionModeRec.SETRANGE("Account Type", Account_Type);
// Delete the following line.
TransactionModeRec.SETRANGE(TransactionModeRec."Our Bank", CBGStatementRec."Account No.");
IF TransactionModeRec.FIND('-') THEN BEGIN
strFilter := '''''';
REPEAT
...取代程式碼 2
...strFilter := '';
IF CBGStatementRec.GET(CBGStatementLineRec."Journal Template Name",CBGStatementLineRec."No.") THEN BEGIN
TransactionModeRec.SETRANGE("Account Type", Account_Type);
// Add the following line.
TransactionModeRec.SETRANGE("Our Bank",CBGStatementRec."Account No.");
IF TransactionModeRec.FIND('-') THEN BEGIN
strFilter := '''''';
REPEAT
... -
變更 CBG 陳述式對帳 codeuint (11000006) 的SetHideMessages函式中的程式碼如下所示︰
現有的程式碼...HideMessages := HideMessages2;
END;
// Delete the following lines.
BEGIN
{
// Bankafschriften matchen, automatisch boekstuk(regels) vereffenen
}
// End of the deleted lines.
END.
}
}
...取代程式碼
...HideMessages := HideMessages2;
END;
// Add the following lines.
LOCAL PROCEDURE AddPossibleBankAccount@1000018(AccountNumber@1000000 : Text[30]);
BEGIN
TempBankAccount.INIT;
TempBankAccount.VALIDATE(TempBankAccount."No.",FORMAT(TempBankAccount.COUNT + 1));
TempBankAccount.IBAN := LocalFunctionalityMgt.CharacterFilter(AccountNumber,BankAccountCharsToKeep);
TempBankAccount.INSERT;
END;
BEGIN
// End of the added lines.
END.
}
}
...
先決條件
您必須具備套用此 hotfix 之後安裝下列產品的其中一個︰
-
荷蘭文版本的 Microsoft 動態航行點 2009 R2
-
荷蘭文版本的 Microsoft 動態航行點 2009 SP1
移除資訊
您無法移除此 hotfix。
狀態
Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。
注意這是直接從 Microsoft 支援組織內建立的「快速發行」文件。本文件所包含的現狀資訊是針對新興問題的回應。為縮短使其可用的時程,資料可能會包含印刷錯誤,且可能會隨時進行修改而不另行通知。如其他考量,請參閱 「使用規定」。