Неправилни дати са създадени за производство поръчките, когато промените стойностите в припокриване за поръчка в Microsoft Dynamics NAV 5.0 Service Pack 1


Тази статия се отнася за Microsoft Dynamics NAV за всички държави и всички езикови местоположения.

Симптоми


Когато промените стойностите в Припокриване в производство поръчките за поръчка в 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 услуги (NAS) клиент потребители. Трябва да бъде само клиент потребител, който е влязъл при прилагане на тази актуална корекция.

За прилагане на тази актуална корекция, трябва да имате лиценз разработчик.

Препоръчително е потребителският акаунт в прозореца влизания в Windows или в прозореца на БД присвояването на "Супер" ИД на роля. Ако потребителският акаунт не може да бъде възложена ИД на роля на "Супер", трябва да проверите, че потребителският акаунт има следните права:
  • Разрешение за промяна на обекта, ще се променя.
  • Разрешението за изпълнение за системата обект номер 5210 обект и системата обект ID 9015 обект.


Забележка: Не трябва да имат право да съхранява данни, освен ако трябва да извършите възстановяване на данни.

Промени код

Забележка: Винаги тест код решава в управлявана среда преди да приложите корекциите производство компютри.
За да разрешите този проблем, изпълнете код промени част 1 и промените код 2:
Код промени част 1
  1. Създайте нов FindSendAheadEndingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774). За да създадете тази функция, изпълнете следните стъпки:
    1. Добавяне на нова локална променлива в FindSendAheadEndingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
      • Име: резултат
      • Тип данни: булев
    2. Добавяне на нова локална променлива в FindSendAheadEndingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
      • Име: xTotalLotSize
      • Тип данни: десетично
    3. Добавяне на нова локална променлива в FindSendAheadEndingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
      • Име: xSendAheadLotSize
      • Тип данни: десетично
    4. Добавете следния код в FindSendAheadEndingTime функция:
      LOCAL PROCEDURE FindSendAheadEndingTime@23(VAR TmpProdOrderRtngLine@1000 : Record 5409;VAR TmpProdOrderCapNeed@1001 : Record 5410;VAR SendAheadLotSize@1002 : Decimal) : Boolean;

      xTotalLotSize := TotalLotSize;
      xSendAheadLotSize := SendAheadLotSize;
      IF TmpProdOrderRtngLine.FINDSET THEN BEGIN
      REPEAT
      TotalLotSize := xTotalLotSize;
      SendAheadLotSize := xSendAheadLotSize;
      TmpProdOrderCapNeed.RESET;
      TmpProdOrderCapNeed.SETRANGE(Status,TmpProdOrderRtngLine.Status);
      TmpProdOrderCapNeed.SETRANGE("Prod. Order No.",TmpProdOrderRtngLine."Prod. Order No.");
      TmpProdOrderCapNeed.SETRANGE("Requested Only",FALSE);
      TmpProdOrderCapNeed.SETRANGE("Routing No.",TmpProdOrderRtngLine."Routing No.");
      TmpProdOrderCapNeed.SETRANGE("Routing Reference No.",TmpProdOrderRtngLine."Routing Reference No.");
      TmpProdOrderCapNeed.SETRANGE("Operation No.",TmpProdOrderRtngLine."Operation No.");
      IF TmpProdOrderCapNeed.FINDFIRST THEN BEGIN
      ProdOrderCapNeed2.COPY(TmpProdOrderCapNeed);
      TmpProdOrderCapNeed.DELETE;
      END;

      Result := Result OR GetSendAheadEndingTime(TmpProdOrderRtngLine,FALSE,SendAheadLotSize);
      TmpProdOrderCapNeed := ProdOrderCapNeed2;
      IF TmpProdOrderRtngLine."Operation No." = TmpProdOrderCapNeed."Operation No." THEN
      TmpProdOrderCapNeed.INSERT;

      IF ProdStartingDate < ProdEndingDate THEN BEGIN
      ProdStartingDate := ProdEndingDate;
      ProdStartingTime := ProdEndingTime;
      END ELSE
      IF (ProdStartingDate = ProdEndingDate) AND
      (ProdStartingTime < ProdEndingTime)
      THEN BEGIN
      ProdStartingTime := ProdEndingTime;
      END;
      UNTIL TmpProdOrderRtngLine.NEXT = 0;

      END ELSE BEGIN
      Result := GetSendAheadEndingTime(TmpProdOrderRtngLine,FALSE,SendAheadLotSize);
      END;
      EXIT(Result);
  2. Създайте нов FindSendAheadStartingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774). За да създадете тази функция, изпълнете следните стъпки:
    1. Добавяне на нова локална променлива в FindSendAheadStartingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
      • Име: резултат
      • Тип данни: булев
    2. Добавяне на нова локална променлива в FindSendAheadStartingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
      • Име: xTotalLotSize
      • Тип данни: десетичен
    3. Добавяне на нова локална променлива в FindSendAheadStartingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
      • Име: xSendAheadLotSize
      • Тип данни: десетичен
    4. Добавете следния код в FindSendAheadStartingTime функция:
      LOCAL PROCEDURE FindSendAheadStartingTime@27(VAR TmpProdOrderRtngLine@1000 : Record 5409;VAR TmpProdOrderCapNeed@1001 : Record 5410;VAR SendAheadLotSize@1002 : Decimal) : Boolean;

      xTotalLotSize := TotalLotSize;
      xSendAheadLotSize := SendAheadLotSize;
      IF TmpProdOrderRtngLine.FINDSET THEN BEGIN
      REPEAT
      TotalLotSize := xTotalLotSize;
      SendAheadLotSize := xSendAheadLotSize;
      TmpProdOrderCapNeed.RESET;
      TmpProdOrderCapNeed.SETRANGE(Status,TmpProdOrderRtngLine.Status);
      TmpProdOrderCapNeed.SETRANGE("Prod. Order No.",TmpProdOrderRtngLine."Prod. Order No.");
      TmpProdOrderCapNeed.SETRANGE("Requested Only",FALSE);
      TmpProdOrderCapNeed.SETRANGE("Routing No.",TmpProdOrderRtngLine."Routing No.");
      TmpProdOrderCapNeed.SETRANGE("Routing Reference No.",TmpProdOrderRtngLine."Routing Reference No.");
      TmpProdOrderCapNeed.SETRANGE("Operation No.",TmpProdOrderRtngLine."Operation No.");
      IF TmpProdOrderCapNeed.FINDFIRST THEN BEGIN
      ProdOrderCapNeed2.COPY(TmpProdOrderCapNeed);
      TmpProdOrderCapNeed.DELETE;
      END;

      Result := Result OR GetSendAheadStartingTime(TmpProdOrderRtngLine,FALSE,SendAheadLotSize);
      TmpProdOrderCapNeed := ProdOrderCapNeed2;
      IF TmpProdOrderRtngLine."Operation No." = TmpProdOrderCapNeed."Operation No." THEN
      TmpProdOrderCapNeed.INSERT;

      IF ProdEndingDate > ProdStartingDate THEN BEGIN
      ProdEndingDate := ProdStartingDate;
      ProdEndingTime := ProdStartingTime;
      END ELSE
      IF (ProdEndingDate = ProdStartingDate) AND
      (ProdEndingTime > ProdStartingTime)
      THEN BEGIN
      ProdEndingTime := ProdStartingTime;
      END;

      UNTIL TmpProdOrderRtngLine.NEXT = 0;

      END ELSE BEGIN
      Result := GetSendAheadStartingTime(TmpProdOrderRtngLine,FALSE,SendAheadLotSize);
      END;
      EXIT(Result);
  3. Добавяне на нова локална променлива в CalcRoutingLineForward функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
    • Име: TmpProdOrderRtngLine
    • Тип данни: временен запис
    • Подтип: Prod. Поръчки желаете (5409)
  4. Добавяне на нова локална променлива в CalcRoutingLineForward функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
    • Име: TmpProdOrderCapNeed
    • Тип данни: временно запис
    • Подтип: Prod. Поръчайте капацитет трябва (5410)
  5. Променете кода в CalcRoutingLineForward функция в ред за маршрутизиране на изчисляване кодова единица (99000774) както следва:
    Съществуващ код 1
    ...ProdOrderRoutingLine2.SETFILTER("Operation No.",ProdOrderRoutingLine."Previous Operation No.");

    IF ProdOrderRoutingLine2.FIND('-') THEN
    REPEAT
    TotalLotSize := 0;
    GetSendAheadEndingTime(ProdOrderRoutingLine2,TRUE,SendAheadLotSize);
    IF ProdStartingDate < ProdEndingDate THEN BEGIN
    ...
    Замени код 1
    ...ProdOrderRoutingLine2.SETFILTER("Operation No.",ProdOrderRoutingLine."Previous Operation No.");

    // Add the following lines.
    TmpProdOrderRtngLine.RESET;
    TmpProdOrderRtngLine.DELETEALL;
    TmpProdOrderCapNeed.RESET;
    TmpProdOrderCapNeed.DELETEALL;
    // End of the lines.

    IF ProdOrderRoutingLine2.FIND('-') THEN

    REPEAT
    TotalLotSize := 0;
    GetSendAheadEndingTime(ProdOrderRoutingLine2,TRUE,SendAheadLotSize);

    // Add the following lines.
    TmpProdOrderRtngLine.COPY(ProdOrderRoutingLine2);
    TmpProdOrderRtngLine.INSERT;
    TmpProdOrderCapNeed.COPY(ProdOrderCapNeed2);
    IF TmpProdOrderRtngLine."Operation No." = TmpProdOrderCapNeed."Operation No." THEN
    TmpProdOrderCapNeed.INSERT;
    // End of the lines.

    IF ProdStartingDate < ProdEndingDate THEN BEGIN
    ...
    Съществуващ код 2
    ...ProdStartingTime := ProdOrderRoutingLine."Ending Time";

    // Delete the following line.
    UNTIL GetSendAheadEndingTime(ProdOrderRoutingLine3,FALSE,SendAheadLotSize);

    RemainNeedQty :=
    ...
    Замени код 2
    ...ProdStartingTime := ProdOrderRoutingLine."Ending Time";

    // Add the following line.
    UNTIL FindSendAheadEndingTime(TmpProdOrderRtngLine,TmpProdOrderCapNeed,SendAheadLotSize);

    RemainNeedQty :=
    ...
  6. Добавяне на нова локална променлива в CalcRoutingLineBack функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
    • Име: TmpProdOrderRtngLine
    • Тип данни: временно запис
    • Подтип: Prod. Поръчки желаете (5409)
  7. Добавяне на нова локална променлива в CalcRoutingLineBack функция в ред за маршрутизиране на изчисляване кодова единица (99000774) и след това задайте променливата както следва:
    • Име: TmpProdOrderCapNeed
    • Тип данни: временно запис
    • Подтип: Prod. Поръчайте капацитет трябва (5410)
  8. Променете кода в CalcRoutingLineBack функция в ред за маршрутизиране на изчисляване кодова единица (99000774) както следва:
    Съществуващ код 1
    ...ProdOrderRoutingLine2.SETFILTER("Operation No.",ProdOrderRoutingLine."Next Operation No.");
    IF ProdOrderRoutingLine2.FIND('-') THEN
    REPEAT
    TotalLotSize := 0;
    GetSendAheadStartingTime(ProdOrderRoutingLine2,TRUE,SendAheadLotSize);
    IF ProdEndingDate > ProdStartingDate THEN BEGIN
    ...
    Замени код 1
    ...ProdOrderRoutingLine2.SETFILTER("Operation No.",ProdOrderRoutingLine."Next Operation No.");

    // Add the following lines.
    TmpProdOrderRtngLine.RESET;
    TmpProdOrderRtngLine.DELETEALL;
    TmpProdOrderCapNeed.RESET;
    TmpProdOrderCapNeed.DELETEALL;
    // End of the lines.

    IF ProdOrderRoutingLine2.FIND('-') THEN
    REPEAT
    TotalLotSize := 0;
    GetSendAheadStartingTime(ProdOrderRoutingLine2,TRUE,SendAheadLotSize);

    // Add the following lines.
    TmpProdOrderRtngLine.COPY(ProdOrderRoutingLine2);
    TmpProdOrderRtngLine.INSERT;
    TmpProdOrderCapNeed.COPY(ProdOrderCapNeed2);
    IF TmpProdOrderRtngLine."Operation No." = TmpProdOrderCapNeed."Operation No." THEN
    TmpProdOrderCapNeed.INSERT;
    // End of the lines.

    IF ProdEndingDate > ProdStartingDate THEN BEGIN
    ...
    Съществуващ код 2
    ...ProdEndingTime := ProdOrderRoutingLine."Starting Time";

    // Delete the following line.
    UNTIL GetSendAheadStartingTime(ProdOrderRoutingLine3,FALSE,SendAheadLotSize);

    ProdEndingDate := ProdOrderRoutingLine."Starting Date";
    ...
    Замени код 2
    ...ProdEndingTime := ProdOrderRoutingLine."Starting Time";

    // Add the following line.
    UNTIL FindSendAheadStartingTime(TmpProdOrderRtngLine,TmpProdOrderCapNeed,SendAheadLotSize);

    ProdEndingDate := ProdOrderRoutingLine."Starting Date";
    ...
Ако използвате системата за планиране, изпълнете следните стъпки за код промени част 1:
  1. Създайте нова функция FindSendAheadEndingTime в изчисляване на планиране маршрут линия кодова единица (99000810). За да създадете тази функция, изпълнете следните стъпки:
    1. Добавяне на нова локална променлива във функцията FindSendAheadEndingTime в изчисляване на планиране маршрут линия кодова единица (99000810) и след това задайте променливата както следва:
      • Име: резултат
      • Тип данни: булев
    2. Добавяне на нова локална променлива в FindSendAheadEndingTime функция в изчисляване на планиране маршрут линия кодова единица (99000810) и след това задайте променливата както следва:
      • Име: xTotalLotSize
      • Тип данни: десетично
    3. Добавяне на нова локална променлива във функцията FindSendAheadEndingTime в изчисляване на планиране маршрут линия кодова единица (99000810) и след това задайте променливата както следва:
      • Име: xSendAheadLotSize
      • Тип данни: десетично
    4. Добавете следния код в FindSendAheadEndingTime функция:
      LOCAL PROCEDURE FindSendAheadEndingTime@23(VAR TmpPlanRtngLine@1000 : Record 99000830;VAR TmpProdOrderCapNeed@1001 : Record 5410;VAR SendAheadLotSize@1002 : Decimal) : Boolean;

      xTotalLotSize := TotalLotSize;
      xSendAheadLotSize := SendAheadLotSize;
      IF TmpPlanRtngLine.FINDSET THEN BEGIN
      REPEAT
      TotalLotSize := xTotalLotSize;
      SendAheadLotSize := xSendAheadLotSize;
      TmpProdOrderCapNeed.RESET;
      TmpProdOrderCapNeed.SETCURRENTKEY("Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.");
      TmpProdOrderCapNeed.SETRANGE("Worksheet Template Name",TmpPlanRtngLine."Worksheet Template Name");
      TmpProdOrderCapNeed.SETRANGE("Worksheet Batch Name",TmpPlanRtngLine."Worksheet Batch Name");
      TmpProdOrderCapNeed.SETRANGE("Worksheet Line No.",TmpPlanRtngLine."Worksheet Line No.");
      TmpProdOrderCapNeed.SETRANGE("Operation No.",TmpPlanRtngLine."Operation No.");
      IF TmpProdOrderCapNeed.FINDFIRST THEN BEGIN
      ProdOrderCapNeed2.COPY(TmpProdOrderCapNeed);
      TmpProdOrderCapNeed.DELETE;
      END;

      Result := Result OR GetSendAheadEndingTime(TmpPlanRtngLine,FALSE,SendAheadLotSize);
      TmpProdOrderCapNeed := ProdOrderCapNeed2;
      IF TmpPlanRtngLine."Operation No." = TmpProdOrderCapNeed."Operation No." THEN
      TmpProdOrderCapNeed.INSERT;

      IF ProdStartingDate < ProdEndingDate THEN BEGIN
      ProdStartingDate := ProdEndingDate;
      ProdStartingTime := ProdEndingTime;
      END ELSE
      IF (ProdStartingDate = ProdEndingDate) AND
      (ProdStartingTime < ProdEndingTime)
      THEN BEGIN
      ProdStartingTime := ProdEndingTime;
      END;
      UNTIL TmpPlanRtngLine.NEXT = 0;

      END ELSE BEGIN
      Result := GetSendAheadEndingTime(TmpPlanRtngLine,FALSE,SendAheadLotSize);
      END;
      EXIT(Result);
  2. Създайте нова функция FindSendAheadStartingTime в изчисляване на планиране маршрут линия кодова единица (99000810) както следва:
    LOCAL PROCEDURE FindSendAheadStartingTime@27(VAR TmpPlanRtngLine@1000 : Record 99000830;VAR TmpProdOrderCapNeed@1001 : Record 5410;VAR SendAheadLotSize@1002 : Decimal) : Boolean;

    xTotalLotSize := TotalLotSize;
    xSendAheadLotSize := SendAheadLotSize;
    IF TmpPlanRtngLine.FINDSET THEN BEGIN
    REPEAT
    TotalLotSize := xTotalLotSize;
    SendAheadLotSize := xSendAheadLotSize;
    TmpProdOrderCapNeed.RESET;
    TmpProdOrderCapNeed.SETCURRENTKEY("Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.");
    TmpProdOrderCapNeed.SETRANGE("Worksheet Template Name",TmpPlanRtngLine."Worksheet Template Name");
    TmpProdOrderCapNeed.SETRANGE("Worksheet Batch Name",TmpPlanRtngLine."Worksheet Batch Name");
    TmpProdOrderCapNeed.SETRANGE("Worksheet Line No.",TmpPlanRtngLine."Worksheet Line No.");
    TmpProdOrderCapNeed.SETRANGE("Operation No.",TmpPlanRtngLine."Operation No.");
    IF TmpProdOrderCapNeed.FINDFIRST THEN BEGIN
    ProdOrderCapNeed2.COPY(TmpProdOrderCapNeed);
    TmpProdOrderCapNeed.DELETE;
    END;

    Result := Result OR GetSendAheadStartingTime(TmpPlanRtngLine,FALSE,SendAheadLotSize);
    TmpProdOrderCapNeed := ProdOrderCapNeed2;
    IF TmpPlanRtngLine."Operation No." = TmpProdOrderCapNeed."Operation No." THEN
    TmpProdOrderCapNeed.INSERT;

    IF ProdEndingDate > ProdStartingDate THEN BEGIN
    ProdEndingDate := ProdStartingDate;
    ProdEndingTime := ProdStartingTime;
    END ELSE
    IF (ProdEndingDate = ProdStartingDate) AND
    (ProdEndingTime > ProdStartingTime)
    THEN BEGIN
    ProdEndingTime := ProdStartingTime;
    END;

    UNTIL TmpPlanRtngLine.NEXT = 0;

    END ELSE BEGIN
    Result := GetSendAheadStartingTime(TmpPlanRtngLine,FALSE,SendAheadLotSize);
    END;
    EXIT(Result);
  3. Добавяне на нова локална променлива във функцията CalcRoutingLineForward в изчисляване на планиране маршрут линия кодова единица (99000810) и след това задайте променливата както следва:
    • Име: TmpPlanRtngLine
    • Тип данни: временен запис
    • Подтип: ред от планиран маршрут (99000830)
  4. Добавяне на нова локална променлива във функцията CalcRoutingLineForward в изчисляване на планиране маршрут линия кодова единица (99000810) и след това задайте променливата както следва:
    • Име: TmpProdOrderCapNeed
    • Тип данни: временно запис
    • Подтип: Prod. Поръчайте капацитет трябва (5410)
  5. Променете кода в CalcRoutingLineForward функция в изчисляване на планиране маршрут линия кодова единица (99000810) както следва:
    Съществуващ код 1
    ...PlanningRoutingLine2.SETFILTER("Operation No.",PlanningRoutingLine."Previous Operation No.");
    IF PlanningRoutingLine2.FIND('-') THEN
    REPEAT
    GetSendAheadEndingTime(PlanningRoutingLine2,TRUE,SendAheadLotSize);

    IF ProdStartingDate < ProdEndingDate THEN BEGIN
    ...
    Замени код 1
    ...PlanningRoutingLine2.SETFILTER("Operation No.",PlanningRoutingLine."Previous Operation No.");

    // Add the following lines.
    TmpPlanRtngLine.RESET;
    TmpPlanRtngLine.DELETEALL;
    TmpProdOrderCapNeed.RESET;
    TmpProdOrderCapNeed.DELETEALL;
    // End of the lines.

    IF PlanningRoutingLine2.FIND('-') THEN
    REPEAT
    GetSendAheadEndingTime(PlanningRoutingLine2,TRUE,SendAheadLotSize);

    // Add the following lines.
    TmpPlanRtngLine.COPY(PlanningRoutingLine2);
    TmpPlanRtngLine.INSERT;
    TmpProdOrderCapNeed.COPY(ProdOrderCapNeed2);
    IF TmpPlanRtngLine."Operation No." = TmpProdOrderCapNeed."Operation No." THEN
    TmpProdOrderCapNeed.INSERT;
    // End of the lines.

    IF ProdStartingDate < ProdEndingDate THEN BEGIN
    ...
    Съществуващ код 2
    ...ProdStartingTime := PlanningRoutingLine."Ending Time";

    // Delete the following line.
    UNTIL GetSendAheadEndingTime(PlanningRoutingLine3,FALSE,SendAheadLotSize);

    RemainNeedQty :=
    ...
    Замени код 2
    ...ProdStartingTime := PlanningRoutingLine."Ending Time";

    // Add the following line.
    UNTIL FindSendAheadEndingTime(TmpPlanRtngLine,TmpProdOrderCapNeed,SendAheadLotSize);

    RemainNeedQty :=
    ...
  6. Добавяне на нова локална променлива в CalcRoutingLineBack функция в изчисляване на планиране маршрут линия кодова единица (99000810) и след това задайте променливата както следва:
    • Име: TmpPlanRtngLine
    • Тип данни: временно запис
    • Подтип: ред от планиран маршрут (99000830)
  7. Добавяне на нова локална променлива във функцията CalcRoutingLineBack в изчисляване на планиране маршрут линия кодова единица (99000810) и след това задайте променливата както следва:
    • Име: TmpProdOrderCapNeed
    • Тип данни: временно запис
    • Подтип: Prod. Поръчайте капацитет трябва (5410)
  8. Променете кода в CalcRoutingLineBack функция в изчисляване на планиране маршрут линия кодова единица (99000810) както следва:
    Съществуващ код 1
    ...PlanningRoutingLine2.SETFILTER("Operation No.",PlanningRoutingLine."Next Operation No.");
    IF PlanningRoutingLine2.FIND('-') THEN
    REPEAT
    GetSendAheadStartingTime(PlanningRoutingLine2,TRUE,SendAheadLotSize);

    IF ProdEndingDate > ProdStartingDate THEN BEGIN
    ...
    Замени код 1
    ...PlanningRoutingLine2.SETFILTER("Operation No.",PlanningRoutingLine."Next Operation No.");

    // Add the following lines.
    TmpPlanRtngLine.RESET;
    TmpPlanRtngLine.DELETEALL;
    TmpProdOrderCapNeed.RESET;
    TmpProdOrderCapNeed.DELETEALL;
    // End of the lines.

    IF PlanningRoutingLine2.FIND('-') THEN
    REPEAT
    GetSendAheadStartingTime(PlanningRoutingLine2,TRUE,SendAheadLotSize);

    // Add the following lines.
    TmpPlanRtngLine.COPY(PlanningRoutingLine2);
    TmpPlanRtngLine.INSERT;
    TmpProdOrderCapNeed.COPY(ProdOrderCapNeed2);
    IF TmpPlanRtngLine."Operation No." = TmpProdOrderCapNeed."Operation No." THEN
    TmpProdOrderCapNeed.INSERT;
    // End of the lines.

    IF ProdEndingDate > ProdStartingDate THEN BEGIN
    ...
    Съществуващ код 2
    ...ProdEndingTime := PlanningRoutingLine."Starting Time";

    // Delete the following line.
    UNTIL GetSendAheadStartingTime(PlanningRoutingLine3,FALSE,SendAheadLotSize);

    ProdEndingDate := PlanningRoutingLine."Starting Date";
    ...
    Замени код 2
    ...ProdEndingTime := PlanningRoutingLine."Starting Time";

    // Add the following line.
    UNTIL FindSendAheadStartingTime(TmpPlanRtngLine,TmpProdOrderCapNeed,SendAheadLotSize);

    ProdEndingDate := PlanningRoutingLine."Starting Date";
    ...
Код промени част 2
  1. Променете кода в GetSendAheadStartingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) както следва:
    Съществуващ код
    ...ProdOrderCapNeed2.RESET;
    ProdOrderCapNeed2.SETRANGE(Status,Status);
    ProdOrderCapNeed2.SETRANGE("Prod. Order No.","Prod. Order No.");
    ProdOrderCapNeed2.SETRANGE("Requested Only",FALSE);
    ProdOrderCapNeed2.SETRANGE("Routing No.","Routing No.");
    ProdOrderCapNeed2.SETRANGE("Routing Reference No.","Routing Reference No.");
    ProdOrderCapNeed2.SETRANGE("Operation No.","Operation No.");

    // Delete the following line.
    ProdOrderCapNeed2.ASCENDING(FALSE);

    IF NOT ProdOrderCapNeed2.FIND('+') THEN BEGIN
    ...
    Замени код
    ...ProdOrderCapNeed2.RESET;

    // Add the following line.
    ProdOrderCapNeed2.SETCURRENTKEY(Status,"Prod. Order No.","Routing Reference No.","Operation No.",Date,"Starting Time");

    ProdOrderCapNeed2.SETRANGE(Status,Status);
    ProdOrderCapNeed2.SETRANGE("Prod. Order No.","Prod. Order No.");
    ProdOrderCapNeed2.SETRANGE("Requested Only",FALSE);
    ProdOrderCapNeed2.SETRANGE("Routing No.","Routing No.");
    ProdOrderCapNeed2.SETRANGE("Routing Reference No.","Routing Reference No.");
    ProdOrderCapNeed2.SETRANGE("Operation No.","Operation No.");

    IF NOT ProdOrderCapNeed2.FIND('+') THEN BEGIN
    ...
  2. Променете кода в GetSendAheadEndingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) както следва:
    Съществуващ код
    ...ProdOrderCapNeed2.RESET;
    ProdOrderCapNeed2.SETRANGE(Status,Status);
    ...
    Замени код
    ...ProdOrderCapNeed2.RESET;

    // Add the following line.
    ProdOrderCapNeed2.SETCURRENTKEY(Status,"Prod. Order No.","Routing Reference No.","Operation No.",Date,"Starting Time");

    ProdOrderCapNeed2.SETRANGE(Status,Status);
    ...
  3. Променете кода в FindSendAheadEndingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) както следва:
    Съществуващ код
    ...TmpProdOrderCapNeed.RESET;
    TmpProdOrderCapNeed.SETRANGE(Status,TmpProdOrderRtngLine.Status);
    ...
    Замени код
    ...TmpProdOrderCapNeed.RESET;

    // Add the following line.
    TmpProdOrderCapNeed.SETCURRENTKEY(Status,"Prod. Order No.","Routing Reference No.","Operation No.",Date,"Starting Time");

    TmpProdOrderCapNeed.SETRANGE(Status,TmpProdOrderRtngLine.Status);
    ...
  4. Промяна на кода в FindSendAheadStartingTime функция в ред за маршрутизиране на изчисляване кодова единица (99000774) както следва:
    Съществуващ код
    ...TmpProdOrderCapNeed.RESET;

    // Delete the following line.
    TmpProdOrderCapNeed.ASCENDING(FALSE);

    TmpProdOrderCapNeed.SETRANGE(Status,TmpProdOrderRtngLine.Status);
    ...
    Замени код
    ...TmpProdOrderCapNeed.RESET;

    // Add the following line.
    TmpProdOrderCapNeed.SETCURRENTKEY(Status,"Prod. Order No.","Routing Reference No.","Operation No.",Date,"Starting Time");
    TmpProdOrderCapNeed.SETRANGE(Status,TmpProdOrderRtngLine.Status);
    ...
  5. Променете кода в GetSendAheadStartingTime функция в изчисляване на планиране маршрут линия кодова единица (99000810) както следва:
    Съществуващ код
    ...ProdOrderCapNeed2.SETCURRENTKEY(

    // Delete the following line.
    "Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.");

    ProdOrderCapNeed2.SETRANGE("Worksheet Template Name","Worksheet Template Name");
    ProdOrderCapNeed2.SETRANGE("Worksheet Batch Name","Worksheet Batch Name");
    ProdOrderCapNeed2.SETRANGE("Worksheet Line No.","Worksheet Line No.");
    ProdOrderCapNeed2.SETRANGE("Operation No.","Operation No.");

    // Delete the following line.
    ProdOrderCapNeed2.ASCENDING(FALSE);

    IF NOT ProdOrderCapNeed2.FIND('+') THEN BEGIN
    ...
    Замени код
    ...ProdOrderCapNeed2.SETCURRENTKEY(

    // Add the following line.
    "Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.",Date);

    ProdOrderCapNeed2.SETRANGE("Worksheet Template Name","Worksheet Template Name");
    ProdOrderCapNeed2.SETRANGE("Worksheet Batch Name","Worksheet Batch Name");
    ProdOrderCapNeed2.SETRANGE("Worksheet Line No.","Worksheet Line No.");
    ProdOrderCapNeed2.SETRANGE("Operation No.","Operation No.");
    IF NOT ProdOrderCapNeed2.FIND('+') THEN BEGIN
    ...
  6. Променете кода в GetSendAheadEndingTime функция в изчисляване на планиране маршрут линия кодова единица (99000810) както следва:
    Съществуващ код
    ...ProdOrderCapNeed2.SETCURRENTKEY(

    // Delete the following line.
    "Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.");

    ProdOrderCapNeed2.SETRANGE("Worksheet Template Name","Worksheet Template Name");
    ...
    Замени код
    ...ProdOrderCapNeed2.SETCURRENTKEY(

    // Add the following line.
    "Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.",Date);

    ProdOrderCapNeed2.SETRANGE("Worksheet Template Name","Worksheet Template Name");
    ...
  7. Промяна на кода в FindSendAheadEndingTime функция в изчисляване на планиране маршрут линия кодова единица (99000810) както следва:
    Съществуващ код
    ...TmpProdOrderCapNeed.RESET;

    // Delete the following line.
    TmpProdOrderCapNeed.SETCURRENTKEY("Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.");

    TmpProdOrderCapNeed.SETRANGE("Worksheet Template Name",TmpPlanRtngLine."Worksheet Template Name");
    ...
    Замени код
    ...TmpProdOrderCapNeed.RESET;

    // Add the following line.
    TmpProdOrderCapNeed.SETCURRENTKEY("Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.",Date);

    TmpProdOrderCapNeed.SETRANGE("Worksheet Template Name",TmpPlanRtngLine."Worksheet Template Name");
    ...
  8. Променете кода в FindSendAheadStartingTime функция в изчисляване на планиране маршрут линия кодова единица (99000810) както следва:
    Съществуващ код
    ...TmpProdOrderCapNeed.RESET;

    // Delete the following lines.
    TmpProdOrderCapNeed.ASCENDING(FALSE);
    TmpProdOrderCapNeed.SETCURRENTKEY("Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.");
    // End of the lines.

    TmpProdOrderCapNeed.SETRANGE("Worksheet Template Name",TmpPlanRtngLine."Worksheet Template Name");
    ...
    Замени код
    ...TmpProdOrderCapNeed.RESET;

    // Add the following line.
    TmpProdOrderCapNeed.SETCURRENTKEY("Worksheet Template Name","Worksheet Batch Name","Worksheet Line No.","Operation No.",Date);

    TmpProdOrderCapNeed.SETRANGE("Worksheet Template Name",TmpPlanRtngLine."Worksheet Template Name");
    ...

Необходими условия:

Трябва да имате Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1) за да приложите тази актуална корекция.

Информация за премахване

Не можете да премахнете тази актуална корекция.

Статус


Microsoft потвърждава, че това е проблем в продуктите на Microsoft, изброени в раздела "Отнася се за".
Забележка: Това е статия "Бърза публикация", създадени директно от организацията за поддръжка на Microsoft. Информацията тук се предоставя "както-е" в отговор на появили се проблеми. В резултат на скоростта на предоставянето му материалите могат да съдържат печатни грешки и могат да бъдат коригирани по всяко време без предизвестие. Вижте Условия за други съображения.