Неправильний дати створюються для замовлення маршрутизації лінії під час змінення значення в полях надіслати вперед кількість, виробництво порядку, в Microsoft Dynamics NAV 5.0 пакет оновлень 1


Ця стаття відноситься до Microsoft Dynamics NAV всі країни і всі мови.

Причини


Якщо змінити значення в полях Надсилання вперед кількість порядок маршрутизації лінії виробництва порядку, в Microsoft Dynamics NAV 5.0 пакета оновлень 1 (SP1), обчислення дат неправильно для маршрутизації лінії виробництва порядок.

Вирішення


Відомості про виправлення

Корпорація Майкрософт випустила підтримуване виправлення доступна. Однак, застосовувати лише для вирішення проблеми, описаної в цій статті. Він придатний лише для систем, які зазнають цієї конкретної проблеми. Те, що це виправлення може потребувати додаткового тестування. Таким чином, якщо ви не завдає значної, рекомендовано почекати до виходу чергового пакета оновлень Microsoft Dynamics NAV або наступної версії Microsoft Dynamics NAV, який містить це виправлення.

Примітка. В окремих випадках оплату звернення до служби підтримки може бути скасовано якщо технічної підтримки професійного для Microsoft Dynamics і пов'язані продукти визначає телефонів служби. Плата стягується на додаткові питання і проблеми, які не пов'язані з оновленням.


Відомості про інсталяцію

Корпорація Майкрософт надає приклади програмного коду тільки для ілюстрації, без гарантій – прямих або інших. Це включає, але не обмежується, будь-яких гарантій придатності до продажу та придатності для певної мети. У цій статті припускається, що ви знайомі з, що демонструє мову програмування та інструменти, які використовуються для створення та налагодження процедури. Співробітники служби підтримки корпорації Майкрософт можуть пояснити функціональні особливості кожної конкретної процедури, але вони не будуть змінювати приклади для реалізації додаткових можливостей або створювати процедури на вимогу окремих користувачів.

Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі Microsoft Navision-клієнт відключився системи. Пакет оновлень містить служб Microsoft Navision застосунків (NAS) клієнта користувачів. Ви повинні тільки клієнт користувача, який увійшов до системи, під час виконання цього виправлення.

Щоб застосувати це виправлення, потрібно мати ліцензію для розробників.

Корпорація Майкрософт рекомендує, що обліковий запис користувача Windows, вхід вікна або у вікні бази даних вхід призначити "Супер" роль ID. Якщо обліковий запис користувача не призначено роль ID "Супер", необхідно переконатися, що обліковий запис користувача, має такі дозволи:
  • Змінити дозвіл об'єкт, який буде змінити.
  • Права для виконання системи об'єкт з Ідентифікатором 5210 об'єкт а також системи об'єкт з Ідентифікатором 9015 об'єкта.


Примітка. Маєте відповідних прав у сховища даних, якщо не потрібно виконати дані відновлення не потрібно.

Зміни коду

Примітка. Завжди тест код вирішення в середовищі контрольовані перед інсталяцією розглянутого виправлення виробництва комп'ютери.
Щоб вирішити цю проблему, виконайте наведені код зміни, частина 1 і код зміни, частина 2.
Код зміни, частина 1
  1. Створити нову функцію FindSendAheadEndingTime обчислення маршрутизації рядок-codeunit (99000774). Створити цю функцію, виконайте такі дії:
    1. Додати нову локальну змінну FindSendAheadEndingTime функцію в обчислення маршрутизації рядок-codeunit (99000774) і вкажіть змінна таким чином:
      • Ім'я: результати
      • Тип даних: логічний вираз
    2. Додавання нового локальну змінну FindSendAheadEndingTime функції обчислення маршрутизації рядок-codeunit (99000774), у і вкажіть змінна наступним чином:
      • Ім'я: xTotalLotSize
      • Тип даних: десятковий
    3. Додати нову локальну змінну FindSendAheadEndingTime функцію в обчислення маршрутизації рядок-codeunit (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 обчислення маршрутизації рядок-codeunit (99000774). Створити цю функцію, виконайте такі дії:
    1. Додавання нового локальну змінну FindSendAheadStartingTime функції обчислення маршрутизації рядок-codeunit (99000774), у і вкажіть змінна наступним чином:
      • Ім'я: результати
      • Тип даних: логічний вираз
    2. Додавання нового локальну змінну FindSendAheadStartingTime функції обчислення маршрутизації рядок-codeunit (99000774), у і вкажіть змінна наступним чином:
      • Ім'я: xTotalLotSize
      • Тип даних: десятковий
    3. Додати нову локальну змінну FindSendAheadStartingTime функції обчислення маршрутизації рядок-codeunit (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 функцію в обчислення маршрутизації рядок-codeunit (99000774) і вкажіть змінна таким чином:
    • Ім'я: TmpProdOrderRtngLine
    • Тип даних: ТИМЧАСОВОГО запису.
    • Підтип: Prod. Замовлення на маршрутизації рядок (5409)
  4. Додавання нового локальну змінну CalcRoutingLineForward функції обчислення маршрутизації рядок-codeunit (99000774), у і вкажіть змінна наступним чином:
    • Ім'я: TmpProdOrderCapNeed
    • Тип даних: , ТИМЧАСОВОГО запису
    • Підтип: Prod. Замовлення на продуктивність необхідно (5410)
  5. Змін CalcRoutingLineForward функція обчислення маршрутизації рядок-codeunit (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 функції обчислення маршрутизації рядок-codeunit (99000774), у і вкажіть змінна наступним чином:
    • Ім'я: TmpProdOrderRtngLine
    • Тип даних: , ТИМЧАСОВОГО запису
    • Підтип: Prod. Замовлення на маршрутизації рядок (5409)
  7. Додавання нового локальну змінну CalcRoutingLineBack функції обчислення маршрутизації рядок-codeunit (99000774), у і вкажіть змінна наступним чином:
    • Ім'я: TmpProdOrderCapNeed
    • Тип даних: , ТИМЧАСОВОГО запису
    • Підтип: Prod. Замовлення на продуктивність необхідно (5410)
  8. Змінити код CalcRoutingLineBack функції обчислення маршрутизації рядок-codeunit (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 обчислення планування маршруту рядок-codeunit (99000810). Щоб створити цю функцію, виконайте такі дії:
    1. Додати нову локальну змінну FindSendAheadEndingTime функцію в обчислення планування маршруту рядок-codeunit (99000810) і вкажіть змінна таким чином:
      • Ім'я: результати
      • Тип даних: логічний вираз
    2. Додавання нового локальну змінну FindSendAheadEndingTime функції обчислення планування маршруту рядок-codeunit (99000810), у і вкажіть змінна наступним чином:
      • Ім'я: xTotalLotSize
      • Тип даних: десятковий
    3. Додати нову локальну змінну FindSendAheadEndingTime функції обчислення планування маршруту рядок-codeunit (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 обчислення планування маршруту рядок-codeunit (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 функції обчислення планування маршруту рядок-codeunit (99000810), у і вкажіть змінна наступним чином:
    • Ім'я: TmpPlanRtngLine
    • Тип даних: ТИМЧАСОВОГО запису.
    • Підтип: планування маршрутизації лінія (99000830)
  4. Додавання нового локальну змінну CalcRoutingLineForward функції обчислення планування маршруту рядок-codeunit (99000810), у і вкажіть змінна наступним чином:
    • Ім'я: TmpProdOrderCapNeed
    • Тип даних: , ТИМЧАСОВОГО запису
    • Підтип: Prod. Замовлення на продуктивність необхідно (5410)
  5. Змінити код CalcRoutingLineForward функції обчислення планування маршруту рядок-codeunit (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 функції обчислення планування маршруту рядок-codeunit (99000810), у і вкажіть змінна наступним чином:
    • Ім'я: TmpPlanRtngLine
    • Тип даних: - ТИМЧАСОВІ запис
    • Підтип: планування маршрутизації лінія (99000830)
  7. Додавання нового локальну змінну CalcRoutingLineBack функції обчислення планування маршруту рядок-codeunit (99000810), у і вкажіть змінна наступним чином:
    • Ім'я: TmpProdOrderCapNeed
    • Тип даних: , ТИМЧАСОВОГО запису
    • Підтип: Prod. Замовлення на продуктивність необхідно (5410)
  8. Змінити код CalcRoutingLineBack функції обчислення планування маршруту рядок-codeunit (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 функції обчислення маршрутизації рядок-codeunit (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 функції обчислення маршрутизації рядок-codeunit (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. Змін у обчислення маршрутизації рядок-codeunit (99000774), функція FindSendAheadEndingTime наступним чином:
    Наявний код
    ...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. Змін у обчислення маршрутизації рядок-codeunit (99000774), функція FindSendAheadStartingTime наступним чином:
    Наявний код
    ...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 функції обчислення планування маршруту рядок-codeunit (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. Змін в обчислення планування маршруту рядок-codeunit (99000810), функція GetSendAheadEndingTime наступним чином:
    Наявний код
    ...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 функції обчислення планування маршруту рядок-codeunit (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. Змін в обчислення планування маршруту рядок-codeunit (99000810), функція FindSendAheadStartingTime наступним чином:
    Наявний код
    ...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 пакет оновлень 1 (SP1) для застосування цього виправлення.

Відомості про видалення

Це виправлення не можна видалити.

Стан


Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".
Примітка. Це "Швидка публікація" статті, надана службою підтримки корпорації Майкрософт. Відомості в цій статті надано без змін у відповідь на повідомлення про проблеми. З огляду на швидкість публікації матеріали можуть містити орфографічні помилки. Їх може бути змінено в будь-який час без повідомлення. Щоб отримати додаткові відомості, див. Умови використання.