تخطي إلى المحتوى الرئيسي
الدعم
تسجيل الدخول باستخدام حساب Microsoft
تسجيل الدخول أو إنشاء حساب.
مرحباً،
تحديد استخدام حساب مختلف!
لديك حسابات متعددة
اختر الحساب الذي تريد تسجيل الدخول باستخدامه.

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

الأعراض

بعد تشغيل الدالة الحصول على أمر المبيعات لأمر خاص في حساب خاص أمر في Microsoft Dynamics NAV 2009 الشراء، الشحن إلى التعليمات البرمجية الحقل في رأس أمر الشراء الخاص فارغاً بشكل غير متوقع.
تحدث هذه المشكلة في المنتجات التالية:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

الحل

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

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

ملاحظة: في بعض الحالات، يحدد المصروفات التي تحتسب عادة لدعم قد يتم إلغاء المكالمات إذا "أخصائي الدعم التقني" ل Microsoft Dynamics والمنتجات ذات الصلة أن تحديثًا معيناً سوف يعمل على حل المشكلة. سيتم اضافة تكاليف الدعم المعتادة على أسئلة الدعم الإضافية والمشاكل التي لا يأهل على حلها للتحديث المطلوب.

معلومات التثبيت

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

ملاحظة: قبل تثبيت هذا الإصلاح العاجل، تأكد من تسجيل خروج النظام كافة المستخدمين عميل Microsoft Navision. ويشمل ذلك المستخدمين عميل Microsoft خدمات التطبيق Navision (NAS). يجب أن يكون عميل فقط المستخدم الذي تم تسجيل دخوله عند تطبيق هذا الإصلاح العاجل.

لتطبيق هذا الإصلاح العاجل، يجب أن يكون لديك ترخيص مطور.

نوصي بأن تعيين حساب المستخدم في إطار عمليات تسجيل دخول Windows أو في إطار "قاعدة بيانات تسجيل الدخول" بمعرف دور "رئيسي". إذا كان حساب المستخدم لا يمكن تعيين معرف دور "سوبر"، يجب التحقق من أن حساب المستخدم يملك الأذونات التالية:

  • إذن "تعديل" للكائن الذي سيتم تغيير.

  • إذن Execute للكائن 5210 معرف كائن النظام والكائن 9015 معرف كائن النظام .



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

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

ملاحظة: دوماً التعليمات البرمجية للاختبار إصلاح في بيئة تسيطر عليها قبل تطبيق إصلاحات لأجهزة الكمبيوتر الإنتاج.
لحل هذه المشكلة، اتبع الخطوات التالية.

  1. تغيير التعليمات البرمجية في funtion جيتديسكريبتيوناندركبتنامي في في كوديونيت ريقجنلماناجيمينت (330) كما يلي:
    التعليمات البرمجية الموجودة

    ...ELSE
    Description := '';

    // Delete the following lines.
    ReqLine.Type::Item:
    IF Item.GET(ReqLine."No.") THEN
    Description := Item.Description
    ELSE
    Description := '';
    // End of the lines.

    END;
    END;

    IF ReqLine."Vendor No." = '' THEN
    ...

    استبدال التعليمات البرمجية

    ...ELSE
    Description := '';
    END;
    END;

    IF ReqLine."Vendor No." = '' THEN
    ...
  2. إضافة متغير عمومي جديد في وكش المطلوبة.-جعل أمر كوديونيت (333)، ثم قم بتحديد المتغير كما يلي:

    • الاسم: دروبشبتسبيسيالورديريكسيستس

    • نوع البيانات: منطقية

  3. إضافة متغير محلي جديد في الدالة إينسيرتبورتشورديرليني في وكش المطلوبة.-جعل أمر كوديونيت (333)، ثم قم بتحديد المتغير كما يلي:

    • الاسم: ساليشيدير

    • نوع البيانات: السجل

    • النوع الفرعي: رأس المبيعات

  4. إضافة متغير محلي جديد في الدالة إينسيرتبورتشورديرليني في وكش المطلوبة.-جعل أمر كوديونيت (333)، ثم قم بتحديد المتغير كما يلي:

    • الاسم: دروبشبتسبلورديرديفادريس

    • نوع البيانات: المنطقية

  5. تغيير التعليمات البرمجية في وظيفة إينسيرتبورتشورديرليني في وكش المطلوبة.-جعل أمر كوديونيت (333) كما يلي:
    التعليمات البرمجية الموجودة

    ...WITH ReqLine2 DO BEGIN
    IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
    EXIT;


    IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
    (PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
    (PrevShipToCode <> "Ship-to Code") OR
    (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
    (PurchOrderHeader."Currency Code" <> "Currency Code") OR

    // Delete the following line.
    (PrevPurchCode <> "Purchasing Code")

    THEN BEGIN
    ...

    استبدال التعليمات البرمجية

    ...WITH ReqLine2 DO BEGIN
    IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
    EXIT;

    // Add the following lines.
    DropShptSpecialOrderExists := FALSE;
    IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN
    DropShptSpecialOrderExists := PurchOrderHeader.DropShptSplOrderExists(SalesHeader);
    IF DropShptSpecialOrderExists THEN
    DropShptSplOrderDiffAddress :=
    NOT PurchOrderHeader.CheckAndAddShipToAdd(SalesHeader,FALSE);
    END;
    // End of the lines.

    IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
    (PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
    (PrevShipToCode <> "Ship-to Code") OR
    (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
    (PurchOrderHeader."Currency Code" <> "Currency Code") OR

    // Add the following lines.
    (PrevPurchCode <> "Purchasing Code") OR
    (DropShptSplOrderDiffAddress)
    // End of the lines.

    THEN BEGIN
    ...
  6. إضافة متغير محلي جديد في الدالة إينسيرثيدير في وكش المطلوبة.-جعل أمر كوديونيت (333)، ثم قم بتحديد المتغير كما يلي:

    • الاسم: ساليشيدير

    • نوع البيانات: سجل

    • النوع الفرعي: رأس المبيعات

  7. تغيير التعليمات البرمجية في وظيفة إينسيرثيدير في وكش المطلوبة.-جعل أمر كوديونيت (333) كما يلي:
    التعليمات البرمجية الموجودة

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    PurchOrderHeader.MODIFY;
    ...

    استبدال التعليمات البرمجية

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    // Add the following lines.
    IF DropShptSpecialOrderExists THEN BEGIN
    SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.");
    PurchOrderHeader."Ship-to Name" := SalesHeader."Ship-to Name";
    PurchOrderHeader."Ship-to Name 2" := SalesHeader."Ship-to Name 2";
    PurchOrderHeader."Ship-to Address" := SalesHeader."Ship-to Address";
    PurchOrderHeader."Ship-to Address 2" := SalesHeader."Ship-to Address 2";
    PurchOrderHeader."Ship-to Post Code" := SalesHeader."Ship-to Post Code";
    PurchOrderHeader."Ship-to City" := SalesHeader."Ship-to City";
    PurchOrderHeader."Ship-to Contact" := SalesHeader."Ship-to Contact";
    END;
    // End of the lines.

    PurchOrderHeader.MODIFY;
    ...
  8. تغيير التعليمات البرمجية في وظيفة انتيربورتشاسيتيمكروسريف في كوديونيت "لتوزيع التكامل" (5702) كما يلي:
    التعليمات البرمجية الموجودة

    ...IF Found THEN BEGIN
    "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
    "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
    "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";

    // Delete the following lines.
    IF ItemCrossReference.Description <> '' THEN BEGIN
    Description := ItemCrossReference.Description;
    "Description 2" := '';
    END;
    // End of the lines.

    END ELSE BEGIN
    "Cross-Reference No." := '';
    "Cross-Reference Type" := "Cross-Reference Type"::" ";
    "Cross-Reference Type No." := '';

    // Delete the following lines.
    IF "Variant Code" <> '' THEN BEGIN
    ItemVariant.GET("No.","Variant Code");
    Description := ItemVariant.Description;
    "Description 2" := ItemVariant."Description 2";
    END ELSE BEGIN
    Item.GET("No.");
    Description := Item.Description;
    "Description 2" := Item."Description 2";
    END;
    // End of the lines.

    GetItemTranslation;
    ...

    استبدال التعليمات البرمجية

    ...IF Found THEN BEGIN
    "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
    "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
    "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";
    END ELSE BEGIN
    "Cross-Reference No." := '';
    "Cross-Reference Type" := "Cross-Reference Type"::" ";
    "Cross-Reference Type No." := '';
    GetItemTranslation;
    ...
  9. تغيير التعليمات البرمجية في وظيفة جيتسبيسيالورديرس في كوديونيت "لتوزيع التكامل" (5702) كما يلي:
    التعليمات البرمجية الموجودة

    ...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
    TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Delete the following line.
    PurchHeader.SetShipToForSpecOrder;

    PurchLine.LOCKTABLE;
    ...

    استبدال التعليمات البرمجية

    ...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
    TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Add the following lines.
    IF DropShptSplOrderExists(SalesHeader) THEN
    CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the lines.

    PurchLine.LOCKTABLE;
    ...
  10. تغيير التعليمات البرمجية في وظيفة ترانسفلدسفرومساليستوبورتشليني في كوديونيت "إدارة المستند نسخة" (6620) كما يلي:
    التعليمات البرمجية الموجودة

    ...VALIDATE("Direct Unit Cost");
    END;
    ...

    استبدال التعليمات البرمجية

    ...VALIDATE("Direct Unit Cost");

    // Add the following lines.
    Description := FromSalesLine.Description;
    "Description 2" := FromSalesLine."Description 2";
    // End of the lines.

    END;
    ...
  11. تغيير التعليمات البرمجية في التعليمات البرمجية في المشتريات--الحصول على إسقاط Shpt. كوديونيت (76) كما يلي:
    التعليمات البرمجية الموجودة 1

    ...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    PurchLine.LOCKTABLE;
    ...

    استبدال رمز 1

    ...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Add the following line.
    IF DropShptSplOrderExists(SalesHeader) THEN
    CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the lines.

    PurchLine.LOCKTABLE;
    ...

    التعليمات البرمجية الموجودة 2

    ...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
    PurchLine.Description := SalesLine.Description;
    PurchLine."Sales Order No." := SalesLine."Document No.";
    ...

    استبدال رمز 2

    ...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
    PurchLine.Description := SalesLine.Description;

    // Add the following line.
    PurchLine."Description 2" := SalesLine."Description 2";

    PurchLine."Sales Order No." := SalesLine."Document No.";
    ...
  12. تغيير التعليمات البرمجية في إينسيرتريقوكشليني في تقرير "الحصول على أوامر التوريد" (698) كما يلي:
    التعليمات البرمجية الموجودة

    ..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";
    SalesHeader.GET(1,SalesLine."Document No.");
    IF SpecOrder <> 1 THEN
    ...

    استبدال التعليمات البرمجية

    ..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";

    // Add the following lines.
    Description := SalesLine.Description;
    "Description 2" := SalesLine."Description 2";
    // End of the lines.

    SalesHeader.GET(1,SalesLine."Document No.");
    IF SpecOrder <> 1 THEN
    ...
  13. إضافة متغير عمومي جديد في الجدول "رأس الشراء" (38) ثم قم بتحديد المتغير كما يلي:

    • الاسم: ناميدريسديتايلس

    • نوع البيانات: نص

    • الطول: 512

  14. إضافة متغير عمومي جديد في الجدول "رأس الشراء" (38) ثم قم بتحديد المتغير كما يلي:

    • الاسم: NameAddressDetails2

    • نوع البيانات: النص

    • الطول: 512

  15. إضافة نص ثابت جديد في الجدول "رأس الشراء" (38) ثم قم بتحديد النص الثابت كما يلي:

    • الاسم: Text051

    • كونستفالوي: يجب أن يكون الحقل في أمر الشراء % 2% 1 هو نفسه على المبيعات أمر % 3.

  16. إنشاء دالة تشيكاندادشيبتواد جديدة في "رأس الشراء" الجدول (38). للقيام بذلك، اتبع الخطوات التالية:

    1. إضافة معلمة محلية جديدة في الدالة تشيكاندادشيبتواد في جدول "رأس الشراء" (38) ثم قم بتحديد المعلمة كما يلي:

      • Var: No

      • الاسم: ساليشيدير

      • نوع البيانات: السجل

      • النوع الفرعي: رأس المبيعات

    2. إضافة معلمة محلية جديدة في الدالة تشيكاندادشيبتواد في جدول "رأس الشراء" (38) ثم قم بتحديد المعلمة كما يلي:

      • Var: No

      • الاسم: شوويرور

      • نوع البيانات: منطقية

    3. إضافة قيمة إرجاع في الدالة تشيكاندادشيبتواد في جدول "رأس الشراء" (38) ثم قم بتحديد قيمة الإرجاع كما يلي:

      • نوع الإرجاع: منطقية

    4. إضافة متغير محلي جديد في الدالة تشيكاندادشيبتواد في جدول "رأس الشراء" (38) ثم قم بتحديد المتغير كما يلي:

      • الاسم: PurchLine2

      • نوع البيانات: السجل

      • النوع الفرعي: PurchLine2

    5. أضف التعليمات البرمجية التالية في الدالة تشيكاندادشيبتواد في جدول "رأس الشراء" (38):

      IF ShowError THEN BEGINPurchLine2.RESET;
      PurchLine2.SETRANGE("Document Type","Document Type"::Order);
      PurchLine2.SETRANGE("Document No.","No.");
      IF NOT PurchLine2.ISEMPTY THEN BEGIN
      IF "Ship-to Name" <> SalesHeader."Ship-to Name" THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Name"),"No.",SalesHeader."No.");
      IF "Ship-to Name 2" <> SalesHeader."Ship-to Name 2" THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Name 2"),"No.",SalesHeader."No.");
      IF ("Ship-to Address" <> SalesHeader."Ship-to Address") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Address"),"No.",SalesHeader."No.");
      IF ("Ship-to Address 2" <> SalesHeader."Ship-to Address 2") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Address 2"),"No.",SalesHeader."No.");
      IF ("Ship-to Post Code" <> SalesHeader."Ship-to Post Code") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Post Code"),"No.",SalesHeader."No.");
      IF ("Ship-to City" <> SalesHeader."Ship-to City") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to City"),"No.",SalesHeader."No.");
      IF ("Ship-to Contact" <> SalesHeader."Ship-to Contact") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Contact"),"No.",SalesHeader."No.");
      END ELSE BEGIN
      // no purchase line exists
      "Ship-to Name" := SalesHeader."Ship-to Name";
      "Ship-to Name 2" := SalesHeader."Ship-to Name 2";
      "Ship-to Address" := SalesHeader."Ship-to Address";
      "Ship-to Address 2" := SalesHeader."Ship-to Address 2";
      "Ship-to Post Code" := SalesHeader."Ship-to Post Code";
      "Ship-to City" := SalesHeader."Ship-to City";
      "Ship-to Contact" := SalesHeader."Ship-to Contact";
      END;
      END ELSE BEGIN
      NameAddressDetails :=
      SalesHeader."Ship-to Name" + SalesHeader."Ship-to Name 2" +
      SalesHeader."Ship-to Address" + SalesHeader."Ship-to Address 2" +
      SalesHeader."Ship-to Post Code" + SalesHeader."Ship-to City" +
      SalesHeader."Ship-to Contact";
      IF NameAddressDetails2 = '' THEN
      NameAddressDetails2 := NameAddressDetails;
      EXIT(NameAddressDetails2 = NameAddressDetails);
      END;
  17. إنشاء دالة دروبشبتسبلورديريكسيستس جديدة في "رأس الشراء" الجدول (38). للقيام بذلك، اتبع الخطوات التالية:

    1. إضافة معلمة محلية جديدة في الدالة دروبشبتسبلورديريكسيستس في جدول "رأس الشراء" (38) ثم قم بتحديد المعلمة كما يلي:

      • Var: No

      • الاسم: ساليشيدير

      • نوع البيانات: السجل

      • النوع الفرعي: رأس المبيعات

    2. إضافة نوع قيمة إرجاع في الدالة دروبشبتسبلورديريكسيستس في جدول "رأس الشراء" (38) ثم قم بتحديد قيمة الإرجاع كما يلي:

      • نوع الإرجاع: منطقية

    3. إضافة متغير محلي جديد في الدالة دروبشبتسبلورديريكسيستس في جدول "رأس الشراء" (38) ثم قم بتحديد المتغير كما يلي:

      • الاسم: SalesLine2

      • نوع البيانات: السجل

      • النوع الفرعي: بند المبيعات

    4. أضف التعليمات البرمجية التالية في الدالة دروبشبتسبلورديريكسيستس في جدول "رأس الشراء" (38):

      // returns TRUE if sales is either Drop Shipment of Special OrderSalesLine2.RESET;
      SalesLine2.SETRANGE("Document Type",SalesLine2."Document Type"::Order);
      SalesLine2.SETRANGE("Document No.",SalesHeader."No.");
      SalesLine2.SETRANGE("Drop Shipment",TRUE);
      IF NOT SalesLine2.ISEMPTY THEN
      EXIT(TRUE);

      SalesLine2.SETRANGE("Drop Shipment");
      SalesLine2.SETRANGE("Special Order",TRUE);
      EXIT(NOT SalesLine2.ISEMPTY);

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

يجب أن يكون لديك أحد المنتجات التالية مثبتة لتطبيق هذا الإصلاح العاجل:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

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

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

الحالة

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

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

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.

تساعدك المجتمعات على طرح الأسئلة والإجابة عليها، وتقديم الملاحظات، وسماعها من الخبراء ذوي الاطلاع الواسع.

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة اللغة؟
ما الذي أثّر في تجربتك؟
بالضغط على "إرسال"، سيتم استخدام ملاحظاتك لتحسين منتجات Microsoft وخدماتها. سيتمكن مسؤول تكنولوجيا المعلومات لديك من جمع هذه البيانات. بيان الخصوصية.

نشكرك على ملاحظاتك!

×