Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Данная статья относится к Microsoft Dynamics NAV для всех стран и всех языковых стандартов.

Симптомы

Предполагается, что журнал задания, который имеет более одной строки трассировки товара для товара в Microsoft Dynamics NAV 2009. При учете товара в журнале работ в лоток, складские операции обновляются только с последней строки, введенной трассировки товара. Таким образом является дисбаланс между складом и товарной номенклатуры.
Эта проблема возникает в следующих продуктах:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Пакет обновления 1 (SP1)


Решение

Сведения об исправлении

Исправление от корпорации Майкрософт доступно. Однако оно предназначено только для устранения проблемы, описанной в этой статье. Предлагаемое исправление должно применяться исключительно в системах, в которых обнаружена эта специфическая неполадка. Это исправление может проходить дополнительное тестирование. Таким образом Если вы не подвержены серьезно эту проблему, рекомендуется дождаться следующего пакета обновления для Microsoft Dynamics NAV или следующей версии Microsoft Dynamics NAV, содержащего это исправление.

Примечание. В особых случаях оплата, предусмотренная в службу поддержки может быть отменена Если специалист службы технической поддержки Microsoft Dynamics и связанных продуктов определит, что решения проблемы является специально выпущенное. Затраты на обычные услуги службы поддержки будут применяться к дополнительным вопросам и проблемам, которые не охватываются конкретным обновлением.



Сведения об установке

Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и без явных или подразумеваемых гарантий. Это включает, но не ограничиваясь, подразумеваемые гарантии товарной пригодности или пригодности для определенной цели. В данной статье предполагается, что вы знакомы с демонстрируемым языком программирования и средствами, которые используются для создания и отладки. Сотрудники службы поддержки Майкрософт могут объяснить возможности конкретной процедуры, но не выполнять модификации примеров для обеспечения дополнительных функциональных возможностей или создания процедур для определенных требований.

Примечание. Перед установкой данного исправления убедитесь, что все пользователи Microsoft Navision вошли выход из системы. Это включает в себя пользователей клиентских служб приложений Microsoft Navision (NAS). Должен быть только клиент пользователя, который вошел в систему, при реализации данного исправления.

Чтобы реализовать это исправление, необходимо иметь лицензию разработчика.

Рекомендуется, чтобы учетной записи пользователя в окне Логины Windows или в окне Логины базы данных был присвоен идентификатор роли «SUPER» Если учетная запись пользователя не может быть назначена роль «SUPER» идентификатор, необходимо убедиться, что учетная запись пользователя имеет следующие разрешения.

  • Изменение разрешений для объекта, подлежащий изменению.

  • Разрешение Execute для объекта идентификатор объекта системы 5210 и 9015 идентификатор объекта системного объекта.



Примечание. Необходимо иметь права к хранилищам данных, если необходимо выполнить восстановление данных.

Изменения кода

Примечание. Всегда тестовый код исправления в контролируемой среде, прежде чем применить исправления на производственных компьютерах.
Чтобы устранить эту проблему, выполните следующие действия: создать следующие локальные переменные:

  1. Добавить новую глобальную переменную в таблице строки журнала работ (210), а затем укажите переменную следующим образом:

    • Имя: WMSManagement

    • Тип данных: функции

    • Подтип: Управление WMS (7302)

  2. Удалить следующий код в свойстве TableRelation Код ячейки в таблице строки журнала работ (210) поле (5403):

    Bin.Code WHERE (Location Code=FIELD(Location Code));
  3. Поле Код триггера OnValidate кодом ячейки (5403) в таблице строки журнала работ (210) следующие изменения:
    Существующий код

    ...// Delete the following lines.
    TESTFIELD("Location Code");
    CheckItemAvailable;
    // End of the lines.
    ...

    Код для замены

    ...// Add the following lines.
    TESTFIELD("Location Code");
    IF "Bin Code" <> '' THEN BEGIN
    GetLocation("Location Code");
    Location.TESTFIELD("Bin Mandatory");
    END;
    TESTFIELD(Type,Type::Item);
    CheckItemAvailable;
    WMSManagement.FindBinContent("Location Code","Bin Code","No.","Variant Code",'')
    // End of the lines.
    ...
  4. Добавить новую локальную переменную в triggerin OnLookup Код ячейки - таблицы строки журнала работ (210), а затем укажите переменную следующим образом:

    • Имя: BinCode

    • Тип данных: кода

    • Длина: 20

  5. Добавьте следующий код в Код ячейки - OnLookup триггер в таблице строки журнала работ (210):

    TESTFIELD("Location Code");TESTFIELD(Type,Type::Item);
    BinCode := WMSManagement.BinContentLookUp("Location Code","No.","Variant Code",'',"Bin Code");
    IF BinCode <> '' THEN
    VALIDATE("Bin Code",BinCode);
  6. Измените значение свойства OptionString поля Документа-источника (25) в таблице Строка складского журнала (7311) следующим образом:
    OptionString= S., заказ, счет S., S. кредит нота, S. Возврат, заказ, счет P., P. кредит нота, P. на возврат, Пок. Передача Outb. Перемещение, Произ. Потребление, жур инвентаризации. Журнала, журнал реклассификации. Журнал задания Фин., потребление журнала, выходные данные журнала, Спецификации Фин., сервисном заказе,.

  7. Измените значение свойства OptionString поля Ссылочного документа (60) в таблице Строка складского журнала (7311) следующим образом:
    OptionString= , учтена заказ создать, учтенные счета P., Учтенные расх. заказ создать, учтенные кредит-ноты P., учтенная расходная накладная, учтенные счета S., Учтенная расх. расходная накладная, учтена S. кредит нота, Учт. T., учтенная расходная накладная T., Товар Журнал произв., размещение, подбор, Передвижение, Комплект журнал, журнал работ

  8. Измените значение свойства OptionString поля документа-источника (25) в таблице Склад Операция (7312) следующим образом:
    OptionString= S., заказ, счет S., S. кредит нота, S. Возврат, заказ, счет P., P. кредит нота, P. на возврат, Пок. Передача Outb. Перемещение, Произ. Потребление, жур инвентаризации. Журнала, журнал реклассификации. Журнал задания Фин., потребление журнала, Фин., Спецификации Фин., сервисный заказ на выпуск,.

  9. Измените значение свойства OptionString поля ссылочного документа (60) в таблице Склад Операция (7312) следующим образом:
    OptionString= , учтена заказ создать, учтенные счета P., Учтенные расх. заказ создать, учтенные кредит-ноты P., учтенная расходная накладная, учтенные счета S., Учтенная расх. расходная накладная, учтена S. кредит нота, Учт. T., учтенная расходная накладная T., Товар Журнал произв., размещение, подбор, Передвижение, Комплект журнал, журнал работ

  10. Измените свойство Visible элемента управления код склада (60) в форме журнал работ (201) следующим образом:
    Существующий код

    Visible = Yes

    Код для замены

    Visible = No
  11. Добавьте поле « Код ячейки » между поле Код склада и поля Код вида работы в форме журнал работ (201), а затем укажите поле, выполните:

    ...{ 61 ;Label ;0 ;0 ;0 ;0 ;ParentControl=60;
    InColumnHeading=Yes }

    // Add the following lines.
    { 102 ;TextBox ;35507;1650 ;1700 ;440 ;ParentControl=1;
    InColumn=Yes;
    SourceExpr="Bin Code" }
    { 103 ;Label ;0 ;0 ;0 ;0 ;ParentControl=102;
    InColumnHeading=Yes }
    // End of the lines.

    { 48 ;TextBox ;11430;2530 ;1650 ;440 ;ParentControl=1;
    ...
  12. Добавить новую глобальную переменную в задания Фин.-учет строки функции (1012) и затем укажите переменную следующим образом:

    • Имя: расположение

    • Тип данных: записи

    • Подтип: расположение (14)

  13. Создайте новую функцию GetLocation в задании Фин.-программный блок учет строки (1012), как показано ниже:

    LOCAL PROCEDURE GetLocation@25(LocationCode@1000 : Code[10]);
  14. Добавьте следующий код в функцию GetLocation задания Фин.-учет строки функции (1012):

    IF LocationCode = '' THENCLEAR(Location)
    ELSE
    IF Location.Code <> LocationCode THEN
    Location.GET(LocationCode);
  15. Создайте новую функцию PostWhseJnlLine в задании Фин.-программный блок учет строки (1012), как показано ниже:

    LOCAL PROCEDURE PostWhseJnlLine@24(ItemJnlLine@1000 : Record 83;OriginalQuantity@1001 : Decimal;OriginalQuantityBase@1002 : Decimal;VAR TempTrackingSpecification@1003 : TEMPORARY Record 336);
  16. Создайте следующие локальные переменные в функции PostWhseJnlLine в задания Фин.-учет строки функции (1012):

    1. Добавьте локальную переменную в функции PostWhseJnlLine в журнал работ.-учет строки функции (1012) и затем укажите переменную следующим образом:

      • Имя: WarehouseJournalLine

      • Тип данных: записи

      • Подтип: строка складского журнала (7311)

    2. Добавьте локальную переменную в функции PostWhseJnlLine в журнал работ.-учет строки функции (1012) и затем укажите переменную следующим образом:

      • Имя: TempWarehouseJournalLine

      • Тип данных: ВРЕМЕННОЙ записи

      • Подтип: строка складского журнала (7311)

    3. Добавьте локальную переменную в функции PostWhseJnlLine в журнал работ.-учет строки функции (1012) и затем укажите переменную следующим образом:

      • Имя: ItemTrackingManagement

      • Тип данных: функции

      • Подтип: Управление трассировкой (6500)

    4. Добавьте локальную переменную в функции PostWhseJnlLine в журнал работ.-учет строки функции (1012) и затем укажите переменную следующим образом:

      • Имя: WMSManagement

      • Тип данных: функции

      • Подтип: Управление WMS (7302)

    5. Добавьте локальную переменную в функции PostWhseJnlLine в журнал работ.-учет строки функции (1012) и затем укажите переменную следующим образом:

      • Имя: WhseJnlRegisterLine

      • Тип данных: функции

      • Подтип: склада. Журнал-зарегистрировать строки (7301)

  17. Добавьте следующий код в функцию PostWhseJnlLine в задании Фин.-программный блок учет строки (1012), как показано ниже:

    WITH ItemJnlLine DO BEGINIF "Entry Type" IN ["Entry Type"::Consumption,"Entry Type"::Output] THEN
    EXIT;
    Quantity := OriginalQuantity;
    "Quantity (Base)" := OriginalQuantityBase;
    GetLocation("Location Code");
    IF Location."Bin Mandatory" THEN
    IF WMSManagement.CreateWhseJnlLine(ItemJnlLine,0,WarehouseJournalLine,FALSE,FALSE) THEN BEGIN
    TempTrackingSpecification.MODIFYALL("Source Type",DATABASE::"Job Journal Line");
    ItemTrackingManagement.SplitWhseJnlLine(WarehouseJournalLine,TempWarehouseJournalLine,TempTrackingSpecification,FALSE);
    IF TempWarehouseJournalLine.FIND('-') THEN
    REPEAT
    WMSManagement.CheckWhseJnlLine(TempWarehouseJournalLine,1,0,FALSE);
    WhseJnlRegisterLine.RUN(TempWarehouseJournalLine);
    UNTIL TempWarehouseJournalLine.NEXT = 0;
    END;
    END;
  18. Добавить новую локальную переменную в функцию кода задания Фин.-учет строки функции (1012) и затем укажите переменную следующим образом:

    • Имя: TempTrackingSpecification

    • Тип данных: ВРЕМЕННОЙ записи

    • Подтип: Спецификация трассировки (336)

  19. Добавить новую локальную переменную в функцию кода задания Фин.-учет строки функции (1012) и затем укажите переменную следующим образом:

    • Имя: ItemJnlLine2

    • Тип данных: записи

    • Подтип: Товар Журнал Строка (83)

  20. Измените код в функцию кода в задании Фин.-учет строки функции (1012) следующие:
    Существующий код 1

    ...ItemJnlLine.INIT;
    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...

    Код для замены 1

    ...ItemJnlLine.INIT;

    // Add the following line.
    ItemJnlLine."Line No." := "Line No.";

    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...

    Существующий код 2

    ...ItemLedgEntry.LOCKTABLE;
    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim);
    END;
    ...

    Код для замены 2

    ...ItemLedgEntry.LOCKTABLE;

    // Add the following line.
    ItemJnlLine2 := ItemJnlLine;

    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim);

    // Add the following lines.
    ItemJnlPostLine.CollectTrackingSpecification(TempTrackingSpecification);
    PostWhseJnlLine(ItemJnlLine2,ItemJnlLine2.Quantity,ItemJnlLine2."Quantity (Base)",TempTrackingSpecification);
    // End of the lines.
    ...
  21. Измените значение свойства OptionString параметра ссылочного документа в функции GetSourceDocument на складе. Функции управления (5775) следующее:
    OptionString= S., заказ, счет S., S. кредит нота, S. Возврат, заказ, счет P., P. кредит нота, P. на возврат, Пок. Передача Outb. Перемещение, Произ. Потребление, жур инвентаризации. Журнала, журнал реклассификации. Журнал задания Фин., потребление журнала, Фин., Спецификации Фин., сервисный заказ на выпуск,.

  22. Измените код в функцию GetSourceDocument на складе. Функции управления (5775) следующие:
    Существующий код

    ...EXIT;
    END;
    END;
    ERROR(Text000);
    ...

    Код для замены

    ...EXIT;
    END;

    // Add the following lines.
    DATABASE::"Job Journal Line":
    BEGIN
    SourceDocument := SourceDocument::"Job Jnl.";
    EXIT;
    END;
    // End of the lines.

    END;
    ERROR(Text000);
    ...
  23. Измените код в функцию CreateWhseJnlLine в функции управления WMS (7302), выполните:
    Существующий код

    ...WhseJnlLine."Source Line No." := "Line No.";
    END;
    WhseJnlLine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Delete the following line.
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal";

    WhseJnlLine."Reference No." := "Document No.";
    ...

    Код для замены

    ...WhseJnlLine."Source Line No." := "Line No.";

    // Add the following lines.
    END ELSE
    IF "Job No." <> '' THEN BEGIN
    WhseJnlLine."Source Type" := DATABASE::"Job Journal Line";
    WhseJnlLine."Source Subtype" := ItemJnlTemplateType;
    WhseMgt.GetSourceDocument(WhseJnlLine."Source Document",WhseJnlLine."Source Type",WhseJnlLine."Source Subtype");
    WhseJnlLine."Source No." := "Document No.";
    WhseJnlLine."Source Line No." := "Line No.";
    // End of the lines.
    END;WhseJnlLine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Add the following lines.
    IF "Job No." = '' THEN
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal"
    ELSE
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Job Journal";
    // End of the lines.

    WhseJnlLine."Reference No." := "Document No.";
    ...ine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Add the following lines.
    IF "Job No." = '' THEN
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal"
    ELSE
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Job Journal";
    // End of the lines.

    WhseJnlLine."Reference No." := "Document No.";
    ...

Предварительные условия

Необходимы следующие продукты для установки данного исправления.

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Пакет обновления 1 (SP1)

Сведения об удалении

Установленное обновление удалить нельзя.

Статус

Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".

Примечание. Это статья «БЫСТРАЯ ПУБЛИКАЦИЯ», созданная непосредственно из технической поддержки корпорации Майкрософт. Сведения, содержащиеся в настоящем документе, предоставляются "как есть" в ответ на возникающие проблемы. В результате скорости предоставления материалов они могут включать опечаток и быть изменены в любое время без предварительного уведомления. Другие вопросы, связанные с Условиями использования см.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×