يستخدم Microsoft Dynamics NAV 2009 دائما البعد الافتراضي لعنصر عند تشغيل الدالة Calculate Inventory Value في دفتر يومية إعادة تقييم باستخدام الخيار Calculate Per Item Ledger Entry

ينطبق على
Dynamics NAV 2009 Service Pack 1 Dynamics NAV 2009

توفر المقالات المنشورة بسرعة معلومات مباشرة من داخل مؤسسة دعم Microsoft. يتم إنشاء المعلومات الواردة هنا استجابة للمواضيع الناشئة أو الفريدة، أو تهدف إلى استكمال معلومات قاعدة المعارف الأخرى.

تنطبق هذه المقالة على Microsoft Dynamics NAV 2009 لجميع البلدان وجميع اللغات المحلية.

الأعراض

ضع في اعتبارك السيناريو التالي في Microsoft Dynamics NAV 2009. يمكنك تشغيل الدالة Calculate Inventory Value في دفتر يومية إعادة تقييم. عند القيام بذلك، انقر فوق
إدخال دفتر الأستاذ للعنصر في المنطقة حساب لكل منطقة في مربع الحوار حساب قيمة المخزون . في هذا السيناريو، يستخدم Microsoft Dynamics NAV 2009 دائما البعد الافتراضي للعنصر. لذلك، إذا لم يتم تحديد بعد للعنصر وقمت بنشر أمر شراء يحتوي على أبعاد، يتم تجاهل بعد إدخال دفتر الأستاذ للعنصر (ILE) عند تشغيل تقرير حساب قيمة المخزون. إذا كان للعنصر أي بعد محدد ولم يتم تحديد أي بعد ل ILE، فإن Microsoft Dynamics NAV يعين بعد العنصر لكافة الأسطر.

الدقة

معلومات الإصلاح العاجل

يتوفر الآن إصلاح عاجل مدعوم من Microsoft. ومع ذلك، فإنه يهدف فقط إلى تصحيح المشكلة الموضحة في هذه المقالة. قم بتطبيقه فقط على الأنظمة التي تواجه هذه المشكلة المحددة. قد يتلقى الإصلاح العاجل هذا اختبارا إضافيا. لذلك، إذا لم تتأثر بشدة بهذه المشكلة، نوصي بالانتظار حتى حزمة خدمة Microsoft Dynamics NAV 2009 التالية أو إصدار 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.

                
ملاحظة ليس لديك حقوق في مخازن البيانات ما لم يكن لديك لإجراء إصلاح البيانات.

تغييرات التعليمات البرمجية

ملاحظة اختبر دائما إصلاحات التعليمات البرمجية في بيئة خاضعة للرقابة قبل تطبيق الإصلاحات على أجهزة الكمبيوتر الإنتاجية.

لحل هذه المشكلة، اتبع الخطوات التالية:

  1. تغيير التعليمات البرمجية في مشغل OnAfterGetRecord في تقرير حساب قيمة المخزون (5899) كما يلي:
    التعليمات البرمجية الموجودة

    ...
    CalculatePer::Item:
    
    // Delete the following line.
    BEGIN 
    
    InsertValJnlBuffer(
    ItemLedgEntry."Item No.",ItemLedgEntry."Variant Code",
    ItemLedgEntry."Location Code",RemQty,
    CalculateRemInvValue(ItemLedgEntry."Entry No.",ItemLedgEntry.Quantity,RemQty,
    IncludeExpectedCost AND NOT ItemLedgEntry."Completely Invoiced"));
    
    // Delete the following line.
    END;
    
    END;
    ...
    
    

    رمز الاستبدال

    ...
    CalculatePer::Item:
    InsertValJnlBuffer(
    ItemLedgEntry."Item No.",ItemLedgEntry."Variant Code",
    ItemLedgEntry."Location Code",RemQty,
    CalculateRemInvValue(ItemLedgEntry."Entry No.",ItemLedgEntry.Quantity,RemQty,
    IncludeExpectedCost AND NOT ItemLedgEntry."Completely Invoiced"));
    END;
    ...
    
    
  2. تغيير التعليمات البرمجية في الدالة InsertItemJnlLine في تقرير حساب قيمة المخزون (5899) كما يلي:
    التعليمات البرمجية الموجودة

    ...
    // Delete the following line.
    IF CalculatePer = CalculatePer::"Item Ledger Entry" THEN 
    
    "Applies-to Entry" := ApplyToEntry2;
    VALIDATE(Quantity,Quantity2);
    ...
    
    

    رمز الاستبدال

    ...
    // Add the following line.
    IF CalculatePer = CalculatePer::"Item Ledger Entry" THEN BEGIN 
    
    "Applies-to Entry" := ApplyToEntry2;
    
    // Add the following lines.
    CreateDimFromILE;
    END;
    // End of the added lines.
    
    VALIDATE(Quantity,Quantity2);
    ...
    
    
  3. إنشاء الدالة CreateDimFromILE في تقرير حساب قيمة المخزون (5899). اتبع هذه الخطوات للقيام بذلك:

    1. قم بتعيين الخاصية Local للدالة إلى Yes.

    2. أضف متغيرا محليا، ثم حدد المتغير كما يلي:

      • الاسم:
         JnlLineDim
      • نوع البيانات:
        سجل
      • النوع الفرعي: بعد سطر دفتر اليومية
    3. أضف متغيرا محليا، ثم حدد المتغير كما يلي:

      • الاسم:
         LedgEntryDim
      • نوع البيانات:
        سجل
      • النوع الفرعي: بعد إدخال دفتر الأستاذ
    4. أضف متغيرا محليا، ثم حدد المتغير كما يلي:

      • **Name:**DimMgt
      • Datatype: وحدة التعليمات البرمجية
      • **النوع الفرعي:**DimensionManagement
    5. أضف التعليمات البرمجية التالية إلى الدالة CreateDimFromILE:
      JnlLineDim.SETRANGE("Table ID",DATABASE::"Item Journal Line");
      JnlLineDim.SETRANGE("اسم قالب دفتر اليومية",ItemJnlLine." اسم قالب دفتر اليومية")؛
      JnlLineDim.SETRANGE("Journal Batch Name",ItemJnlLine." اسم دفعة دفتر اليومية")؛
      JnlLineDim.SETRANGE("Journal Line No.",ItemJnlLine." السطر رقم")؛
      JnlLineDim.DELETEALL;
      LedgEntryDim.SETRANGE("Table ID",DATABASE::"Item Ledger Entry");
      LedgEntryDim.SETRANGE("Entry No.",ItemLedgEntry." رقم الإدخال")؛
      DimMgt.MoveLedgEntryDimToJnlLineDim(LedgEntryDim,JnlLineDim,DATABASE::"Item Journal Line",
      ItemJnlLine." اسم قالب دفتر اليومية"، ItemJnlLine." اسم دفعة دفتر اليومية"،ItemJnlLine." السطر رقم"،0)؛
      JnlLineDim.SETCURRENTKEY("رمز البعد","رمز قيمة البعد")؛
      JnlLineDim.SETRANGE("رمز البعد", GLSetup." رمز البعد العمومي 1")؛
      IF JnlLineDim.FINDFIRST ثم
        ItemJnlLine." رمز البعد الاختصاري 1" := JnlLineDim." رمز قيمة البعد"
      ELSE
        ItemJnlLine." رمز البعد الاختصاري 1" := ''؛
      JnlLineDim.SETRANGE("رمز البعد", GLSetup." رمز البعد العمومي 2")؛
      IF JnlLineDim.FINDFIRST ثم
        ItemJnlLine." رمز البعد الاختصاري 2" := JnlLineDim." رمز قيمة البعد"
      ELSE
        ItemJnlLine." رمز البعد الاختصاري 2" := ''؛

          

المتطلبات الأساسية

يجب أن يكون Microsoft Dynamics NAV 2009 Service Pack 1 أو Microsoft Dynamics NAV 2009 مثبتا لتطبيق هذا الإصلاح العاجل.

معلومات الإزالة

لا يمكنك إزالة هذا الإصلاح العاجل.

الحالة

لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".

لا تقدم MICROSOFT و/أو مورديها أي إقرارات أو ضمانات حول ملاءمة المعلومات الواردة في المستندات والرسومات ذات الصلة المنشورة على هذا الموقع ("المواد") أو موثوقيتها أو دقتها لأي غرض.

 قد تتضمن المواد عدم الدقة التقنية أو الأخطاء المطبعية ويمكن مراجعتها في أي وقت دون إشعار. إلى الحد الأقصى الذي يسمح به القانون المعمول به، تتنازل MICROSOFT و/أو مورديها عن جميع التمثيلات والضمانات والشروط وتستبعدها سواء كانت صريحة أو ضمنية أو قانونية، بما في ذلك على سبيل المثال لا الحصر التمثيلات أو الضمانات أو شروط الملكية أو عدم التعدي أو الشرط المرضي أو الجودة والتاجر واللياقة لغرض معين، فيما يتعلق بالمواد.