تنطبق هذه المقالة على Microsoft Dynamics NAV للغات اللغة النرويجية (لا).
الأعراض
عند تشغيل منفذ البيانات "تحويل - استيراد (BBS)" (15000060) لاستيراد البيانات في الإصدار النرويجي من Microsoft Dynamics NAV، يتم دائما إنشاء إدخالات الرصيد لكل معاملة دفع. لا يأخذ منفذ البيانات "تحويل - استيراد (BBS)" (15000060) في الاعتبار الإعدادات الموجودة في مربع الحوار بطاقة اتفاقية التحويل أو في مربع الحوار بطاقة حساب التحويل .
تحدث هذه المشكلة في المنتجات التالية:
- الإصدار النرويجي من Microsoft Dynamics NAV 2009 R2
- الإصدار النرويجي من Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- الإصدار النرويجي من Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
الدقة
معلومات الإصلاح العاجل
يتوفر الآن إصلاح عاجل مدعوم من Microsoft. ومع ذلك، فإنه يهدف فقط إلى تصحيح المشكلة الموضحة في هذه المقالة. قم بتطبيقه فقط على الأنظمة التي تواجه هذه المشكلة المحددة. قد يتلقى الإصلاح العاجل هذا اختبارا إضافيا. لذلك، إذا لم تتأثر بشدة بهذه المشكلة، نوصي بالانتظار حتى حزمة خدمة Microsoft Dynamics NAV التالية أو إصدار Microsoft Dynamics NAV التالي الذي يحتوي على هذا الإصلاح العاجل.
ملاحظة في حالات خاصة، قد يتم إلغاء الرسوم التي يتم تكبدها عادة لمكالمات الدعم إذا حدد محترف الدعم التقني ل Microsoft Dynamics والمنتجات ذات الصلة أن تحديثا معينا سيحل مشكلتك. سيتم تطبيق تكاليف الدعم المعتادة على أسئلة الدعم الإضافية والمشكلات غير المؤهلة للتحديث المحدد المعني.
معلومات التثبيت
توفر Microsoft أمثلة برمجة للتوضيح فقط، دون ضمان سواء تم التعبير عنه أو تضمينه. وهذا يشمل، على سبيل المثال لا الحصر، الضمانات الضمنية للقابلية التجارية أو اللياقة البدنية لغرض معين. تفترض هذه المقالة أنك على دراية بلغة البرمجة التي يتم توضيحها ومع الأدوات المستخدمة لإنشاء إجراءات وتصحيح الأخطاء. يمكن لمهندسي دعم Microsoft المساعدة في شرح وظائف إجراء معين، لكنهم لن يعدلوا هذه الأمثلة لتوفير وظائف إضافية أو إجراءات بناء لتلبية متطلباتك المحددة.
ملاحظة قبل تثبيت هذا الإصلاح العاجل، تحقق من تسجيل خروج جميع مستخدمي عميل Microsoft Navision من النظام. يتضمن ذلك مستخدمي عميل Microsoft Navision Application Services (NAS). يجب أن تكون المستخدم العميل الوحيد الذي قام بتسجيل الدخول عند تنفيذ هذا الإصلاح العاجل.
لتنفيذ هذا الإصلاح العاجل، يجب أن يكون لديك ترخيص مطور.
نوصي بتعيين معرف دور "SUPER" لحساب المستخدم في نافذة تسجيلات الدخول إلى Windows أو في نافذة تسجيلات دخول قاعدة البيانات. إذا تعذر تعيين معرف دور "SUPER" لحساب المستخدم، فيجب عليك التحقق من أن حساب المستخدم لديه الأذونات التالية:
- إذن تعديل للكائن الذي ستقوم بتغييره.
- إذن Execute للكائن System Object ID 5210 ولعنصر System Object ID 9015.
ملاحظة ليس لديك حقوق في مخازن البيانات ما لم يكن لديك لإجراء إصلاح البيانات.
تغييرات التعليمات البرمجية
ملاحظة اختبر دائما إصلاحات التعليمات البرمجية في بيئة خاضعة للرقابة قبل تطبيق الإصلاحات على أجهزة الكمبيوتر الإنتاجية.
لحل هذه المشكلة، اتبع الخطوات التالية:
تغيير التعليمات البرمجية في الدالة ProcessBETFOR23and04 في منفذ بيانات التحويل - الاستيراد (البنك) (15000050) كما يلي:
التعليمات البرمجية الموجودة... // Update Waiting journal WaitingJournal.VALIDATE(WaitingJournal."Payment Order ID - Settled",PaymOrder.ID); WaitingJournal.VALIDATE("Journal, Settlement Template",GenJournalLine."Journal Template Name"); WaitingJournal.VALIDATE("Journal - Settlement",GenJournalLine."Journal Batch Name"); WaitingJournal.MODIFY(TRUE); // Update round off END ELSE // This error should not occur. ERROR(Text026,ReturnCode); ...رمز الاستبدال
... // Update Waiting journal WaitingJournal.VALIDATE(WaitingJournal."Payment Order ID - Settled",PaymOrder.ID); WaitingJournal.VALIDATE("Journal, Settlement Template",GenJournalLine."Journal Template Name"); WaitingJournal.VALIDATE("Journal - Settlement",GenJournalLine."Journal Batch Name"); // Add the following line. WaitingJournal."Remittance Status" := WaitingJournal."Remittance Status"::Sent; WaitingJournal.MODIFY(TRUE); // Update round off END ELSE // This error should not occur. ERROR(Text026,ReturnCode); ...قم بتغيير التعليمات البرمجية في الدالة CreateBalanceEntry في منفذ بيانات التحويل - الاستيراد (البنك) (15000050) كما يلي:
التعليمات البرمجية الموجودة... BalanceEntryAmount := BalanceEntryAmountLCY ELSE BalanceEntryAmount := ROUND(BalanceEntryAmountLCY * GenJournalLine."Currency Factor"); GenJournalLine.VALIDATE(Amount,-BalanceEntryAmount); GenJournalLine.VALIDATE("Document No.",TransDocumentNo); CASE LatestRemAgreement."New Document Per." OF LatestRemAgreement."New Document Per."::Date: GenJournalLine.VALIDATE( Description,STRSUBSTNO(Text031,LatestDate)); LatestRemAgreement."New Document Per."::Vendor: ...رمز الاستبدال
... BalanceEntryAmount := BalanceEntryAmountLCY ELSE BalanceEntryAmount := ROUND(BalanceEntryAmountLCY * GenJournalLine."Currency Factor"); GenJournalLine.VALIDATE(Amount,-BalanceEntryAmount); GenJournalLine.VALIDATE("Document No.",TransDocumentNo); // Add the following lines. GenJournalLine.VALIDATE("Remittance Account Code",WaitingJournal."Remittance Account Code"); GenJournalLine.VALIDATE("Remittance Agreement Code",WaitingJournal."Remittance Agreement Code"); // End of the lines. CASE LatestRemAgreement."New Document Per." OF LatestRemAgreement."New Document Per."::Date: GenJournalLine.VALIDATE( Description,STRSUBSTNO(Text031,LatestDate)); LatestRemAgreement."New Document Per."::Vendor: ...تغيير التعليمات البرمجية في رقم عنصر البيانات 1 في منفذ بيانات التحويل - الاستيراد (BBS) (15000060) كما يلي:
التعليمات البرمجية الموجودة... ERROR(Text005,FileImp,Recordtype); END; END; OnPostDataItem=BEGIN // Recordtype89 must be read by the end of import: IF NOT Recordtype89IsRead THEN ERROR( Text006 + Text007,FileImp); ...رمز الاستبدال
... ERROR(Text005,FileImp,Recordtype); END; END; OnPostDataItem=BEGIN // Add the following line. CreateBalanceEntry(TransBBSDate,'',WaitingJournal."Account No.",RemAccount,RemAgreement); // Recordtype89 must be read by the end of import: IF NOT Recordtype89IsRead THEN ERROR( Text006 + Text007,FileImp); ...تغيير التعليمات البرمجية في دالة ProcessTransaction في منفذ بيانات التحويل - الاستيراد (BBS) (15000060) كما يلي:
التعليمات البرمجية الموجودة... WaitingJournal.VALIDATE("BBS Shipment No.",ShipmentNo); WaitingJournal.VALIDATE("BBS Payment Order No.",PaymOrderNo); WaitingJournal.VALIDATE("BBS Transaction No.",TransNo); WaitingJournal.VALIDATE("Journal, Settlement Template",GenJnlLine."Journal Template Name"); WaitingJournal.VALIDATE("Journal - Settlement",GenJnlLine."Journal Batch Name"); // Delete the following lines. WaitingJournal.MODIFY(TRUE); UNTIL WaitingJournal.NEXT = 0; CreateBalanceEntry(TransBBSDate,'',WaitingJournal."Account No.",RemAccount,RemAgreement); // End of the lines. END; LOCAL PROCEDURE CreatePaymOrder@6(); VAR NextPaymOrderID@1000000000 : Integer; ...رمز الاستبدال
... WaitingJournal.VALIDATE("BBS Shipment No.",ShipmentNo); WaitingJournal.VALIDATE("BBS Payment Order No.",PaymOrderNo); WaitingJournal.VALIDATE("BBS Transaction No.",TransNo); WaitingJournal.VALIDATE("Journal, Settlement Template",GenJnlLine."Journal Template Name"); WaitingJournal.VALIDATE("Journal - Settlement",GenJnlLine."Journal Batch Name"); // Add the following lines. WaitingJournal."Remittance Status" := WaitingJournal."Remittance Status"::Sent; WaitingJournal.MODIFY(TRUE); UNTIL WaitingJournal.NEXT = 0; // End of the lines. END; LOCAL PROCEDURE CreatePaymOrder@6(); VAR NextPaymOrderID@1000000000 : Integer; ...تغيير التعليمات البرمجية في الدالة CreateBalanceEntry في منفذ بيانات التحويل - الاستيراد (BBS) (15000060) كما يلي:
التعليمات البرمجية الموجودة... GenJnlLine.VALIDATE("Posting Date",LatestDate); GenJnlLine.VALIDATE("Account Type",LatestRemAccount."Account Type"); GenJnlLine.VALIDATE("Account No.",LatestRemAccount."Account No."); GenJnlLine.VALIDATE(Amount,-BalanceEntryAmountLCY); GenJnlLine.VALIDATE("Document No.",TransDocumentNo); CASE LatestRemAgreement."New Document Per." OF LatestRemAgreement."New Document Per."::Date: GenJnlLine.VALIDATE( Description,STRSUBSTNO(Text012,LatestDate)); LatestRemAgreement."New Document Per."::Vendor: ...رمز الاستبدال
... GenJnlLine.VALIDATE("Posting Date",LatestDate); GenJnlLine.VALIDATE("Account Type",LatestRemAccount."Account Type"); GenJnlLine.VALIDATE("Account No.",LatestRemAccount."Account No."); GenJnlLine.VALIDATE(Amount,-BalanceEntryAmountLCY); GenJnlLine.VALIDATE("Document No.",TransDocumentNo); // Add the following lines. GenJnlLine.VALIDATE("Remittance Account Code",WaitingJournal."Remittance Account Code"); GenJnlLine.VALIDATE("Remittance Agreement Code",WaitingJournal."Remittance Agreement Code"); // End of the lines. CASE LatestRemAgreement."New Document Per." OF LatestRemAgreement."New Document Per."::Date: GenJnlLine.VALIDATE( Description,STRSUBSTNO(Text012,LatestDate)); LatestRemAgreement."New Document Per."::Vendor: ...تغيير التعليمات البرمجية في دالة NewTransaction في منفذ بيانات التحويل - الاستيراد (BBS) (15000060) كما يلي:
التعليمات البرمجية الموجودة... BEGIN // Initialize transaction import. // Called before import is started, after a transaction in the file is closed (BETFOR99) // and before the next transaction from the same file starts. First := TRUE; //Control of balance entry; // Delete the following line. BalanceEntryAmountLCY := 0; LatestDate := 0D; LatestVend := ''; CLEAR(LatestRemAccount); END; ...رمز الاستبدال
... BEGIN // Initialize transaction import. // Called before import is started, after a transaction in the file is closed (BETFOR99) // and before the next transaction from the same file starts. First := TRUE; //Control of balance entry; LatestDate := 0D; LatestVend := ''; CLEAR(LatestRemAccount); END; ...تغيير التعليمات البرمجية في الدالة FindFiles في تقرير Rem. payment order - import (15000003) كما يلي:
التعليمات البرمجية الموجودة... FilePath := RemTools.FindPath(ReturnFileSetup."Return File Name"); File.SETFILTER(Path,FilePath); // not case-sensitive File.SETRANGE("Is a file",TRUE); // Copy all these files to a temporary table with file name in lower-case letters: FileCopy.DELETEALL; // Delete the following lines. IF File.FIND('-') THEN REPEAT FileCopy.Name := LOWERCASE(File.Name); FileCopy.Size := File.Size; FileCopy.Date := File.Date; FileCopy.Time := File.Time; FileCopy.INSERT; UNTIL File.NEXT = 0; // End of the lines. // From now on use copies of file names : FileCopy.SETFILTER(Name,LOWERCASE(RemTools.FindFilename(ReturnFileSetup."Return File Name"))); IF FileCopy.FIND('-') THEN REPEAT ReturnFiles.INIT; ...رمز الاستبدال
... FilePath := RemTools.FindPath(ReturnFileSetup."Return File Name"); File.SETFILTER(Path,FilePath); // not case-sensitive File.SETRANGE("Is a file",TRUE); // Copy all these files to a temporary table with file name in lower-case letters: FileCopy.DELETEALL; // Add the following lines. IF EXISTS(FilePath) THEN BEGIN IF File.FIND('-') THEN REPEAT FileCopy.Name := LOWERCASE(File.Name); FileCopy.Size := File.Size; FileCopy.Date := File.Date; FileCopy.Time := File.Time; FileCopy.INSERT; UNTIL File.NEXT = 0; END; // End of the lines. // From now on use copies of file names : FileCopy.SETFILTER(Name,LOWERCASE(RemTools.FindFilename(ReturnFileSetup."Return File Name"))); IF FileCopy.FIND('-') THEN REPEAT ReturnFiles.INIT; ...
المتطلبات الأساسية
يجب أن يكون لديك أحد المنتجات التالية مثبتا لتطبيق هذا الإصلاح العاجل:
- الإصدار النرويجي من Microsoft Dynamics NAV 2009 R2
- الإصدار النرويجي من Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- الإصدار النرويجي من Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
معلومات الإزالة
لا يمكنك إزالة هذا الإصلاح العاجل.
الحالة
لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".
ملاحظة هذه مقالة "FAST PUBLISH" تم إنشاؤها مباشرة من داخل مؤسسة دعم Microsoft. وتقدم المعلومات الواردة هنا كما هي استجابة للقضايا الناشئة. نتيجة لسرعة إتاحتها، قد تتضمن المواد أخطاء مطبعية ويمكن مراجعتها في أي وقت دون إشعار. راجع شروط الاستخدام لاعتبارات أخرى.