Данная статья относится к Microsoft Dynamics NAV для всех стран и всех языковых стандартов.
Симптомы
При создании контракта службы (без аванса) и изменение накладных перед разноской в Microsoft Dynamics NAV 2009, есть противоречивые данные между сервисных операций и главной книги. Эта проблема возникает в следующих продуктах:
-
Microsoft Dynamics NAV 2009 R2
-
2009 г. Пакет обновления 1 для Microsoft Dynamics NAV
Решение
Сведения об исправлении
Исправление от корпорации Майкрософт доступно. Однако оно предназначено только для устранения проблемы, описанной в этой статье. Предлагаемое исправление должно применяться исключительно в системах, в которых обнаружена эта специфическая неполадка. Это исправление может проходить дополнительное тестирование. Таким образом Если вы не подвержены серьезно эту проблему, рекомендуется дождаться следующего пакета обновления для Microsoft Dynamics NAV 2009 или следующей версии Microsoft Dynamics NAV, содержащего это исправление.
Примечание. В особых случаях оплата, предусмотренная в службу поддержки может быть отменена Если специалист службы технической поддержки Microsoft Dynamics и связанных продуктов определит, что решения проблемы является специально выпущенное. Затраты на обычные услуги службы поддержки будут применяться к дополнительным вопросам и проблемам, которые не охватываются конкретным обновлением.
Сведения об установке
Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и без явных или подразумеваемых гарантий. Это включает, но не ограничиваясь, подразумеваемые гарантии товарной пригодности или пригодности для определенной цели. В данной статье предполагается, что вы знакомы с демонстрируемым языком программирования и средствами, которые используются для создания и отладки. Сотрудники службы поддержки Майкрософт могут объяснить возможности конкретной процедуры. Тем не менее они не изменит примеров для обеспечения функциональных возможностей или создания процедур для определенных требований.
Примечание. Перед установкой данного исправления убедитесь, что все пользователи Microsoft Navision вошли выход из системы. Это включает в себя пользователей клиентских служб приложений Microsoft Navision (NAS). Должен быть только клиент пользователя, который вошел в систему, при реализации данного исправления.
Чтобы реализовать это исправление, необходимо иметь лицензию разработчика.
Рекомендуется, чтобы учетной записи пользователя в окне Логины Windows или в окне Логины базы данных был присвоен идентификатор роли «SUPER» Если учетная запись пользователя не может быть назначена роль «SUPER» идентификатор, необходимо убедиться, что учетная запись пользователя имеет следующие разрешения.
-
Изменение разрешений для объекта, подлежащий изменению.
-
Разрешение Execute для объекта идентификатор объекта системы 5210 и 9015 идентификатор объекта системного объекта.
Примечание. Необходимо иметь права к хранилищам данных, если необходимо выполнить восстановление данных.
Изменения кода
Примечание. Всегда тестовый код исправления в контролируемой среде, прежде чем применить исправления на производственных компьютерах.
Чтобы устранить эту проблему, выполните следующие действия:
-
Измените код в таблице измерения документа (357) следующим образом:
Существующий код 1... Text005@1009 : TextConst 'ENU=Canceled.';
Text006@1010 : TextConst 'ENU=You may have changed a dimension. Some lines are already shipped. When you post the line with the changed dimension to the general ledger, amounts on the Inventory Interim account will be out of balance when reported per dimension.\\Do you want to update the lines?';
PROCEDURE UpdateGlobalDimCode@25(GlobalDimCodeNo@1000 : Integer;"Table ID"@1001 : Integer;"Document Type"@1002 : Option;"Document No."@1003 : Code[20];"Line No."@1004 : Integer;NewDimValue@1005 : Code[20]);
...Код для замены 1
... Text005@1009 : TextConst 'ENU=Canceled.';
Text006@1010 : TextConst 'ENU=You may have changed a dimension. Some lines are already shipped. When you post the line with the changed dimension to the general ledger, amounts on the Inventory Interim account will be out of balance when reported per dimension.\\Do you want to update the lines?';
Text007@1011 : TextConst 'ENU=You cannot change the dimension because the document is based on a service contract.';
PROCEDURE UpdateGlobalDimCode@25(GlobalDimCodeNo@1000 : Integer;"Table ID"@1001 : Integer;"Document Type"@1002 : Option;"Document No."@1003 : Code[20];"Line No."@1004 : Integer;NewDimValue@1005 : Code[20]);
...Существующий код 2
... PROCEDURE VerifyLineDim@5(VAR DocDim@1000 : Record 357);
VAR
SalesLine@1001 : Record 37;
PurchaseLine@1002 : Record 39;
BEGIN
CASE "Table ID" OF
DATABASE::"Sales Line":
BEGIN
IF SalesLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (SalesLine."Qty. Shipped Not Invoiced" <> 0) OR (SalesLine."Return Rcd. Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,SalesLine.TABLECAPTION) THEN
ERROR(Text005)
END;
DATABASE::"Purchase Line":
BEGIN
IF PurchaseLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (PurchaseLine."Qty. Rcd. Not Invoiced" <> 0) OR (PurchaseLine."Return Qty. Shipped Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,PurchaseLine.TABLECAPTION) THEN
ERROR(Text005)
END;
END;
END;
...Код для замены 2
... PROCEDURE VerifyLineDim@5(VAR DocDim@1000 : Record 357);
VAR
SalesLine@1001 : Record 37;
PurchaseLine@1002 : Record 39;
ServiceHeader@1003 : Record 5900;
ServiceLine@1004 : Record 5902;
BEGIN
CASE "Table ID" OF
DATABASE::"Sales Line":
BEGIN
IF SalesLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (SalesLine."Qty. Shipped Not Invoiced" <> 0) OR (SalesLine."Return Rcd. Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,SalesLine.TABLECAPTION) THEN
ERROR(Text005)
END;
DATABASE::"Purchase Line":
BEGIN
IF PurchaseLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (PurchaseLine."Qty. Rcd. Not Invoiced" <> 0) OR (PurchaseLine."Return Qty. Shipped Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,PurchaseLine.TABLECAPTION) THEN
ERROR(Text005)
END;
DATABASE::"Service Header":
IF ServiceHeader.GET(DocDim."Document Type",DocDim."Document No.") AND (ServiceHeader."Contract No." <> '') THEN
ERROR(Text007);
DATABASE::"Service Line":
IF ServiceLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (ServiceLine."Contract No." <> '') THEN
ERROR(Text007);
END;
END;
... -
Измените код в таблице Сервис строка (5902) следующим образом:
Существующий код 1... IF (Quantity <> 0) AND ItemExists(xRec."No.") AND
(("Spare Part Action" = "Spare Part Action"::"Component Replaced") OR
("Spare Part Action" = "Spare Part Action"::"Component Installed") OR
("Spare Part Action" = "Spare Part Action"::" "))
THEN
ReserveServLine.VerifyChange(Rec,xRec);
END;
OnDelete=VAR
...Код для замены 1
... IF (Quantity <> 0) AND ItemExists(xRec."No.") AND
(("Spare Part Action" = "Spare Part Action"::"Component Replaced") OR
("Spare Part Action" = "Spare Part Action"::"Component Installed") OR
("Spare Part Action" = "Spare Part Action"::" "))
THEN
ReserveServLine.VerifyChange(Rec,xRec);
IF "Document Type" = ServiceLine."Document Type"::Invoice THEN
IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
ERROR(Text046);
END;
OnDelete=VAR
...Существующий код 2
... { 5 ; ;Type ;Option ;OnValidate=BEGIN
GetServHeader;
TESTFIELD("Qty. Shipped Not Invoiced",0);
...Код для замены 2
... { 5 ; ;Type ;Option ;OnValidate=BEGIN
IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
ERROR(Text046);
GetServHeader;
...Существующий код 3
... { 6 ; ;No. ;Code20 ;TableRelation=IF (Type=CONST(" ")) "Standard Text"
ELSE IF (Type=CONST(G/L Account)) "G/L Account"
ELSE IF (Type=CONST(Item)) Item
ELSE IF (Type=CONST(Resource)) Resource
ELSE IF (Type=CONST(Cost)) "Service Cost";
OnValidate=VAR
ShowLocMessage@1000 : Boolean;
BEGIN
TESTFIELD("Qty. Shipped Not Invoiced",0);
...Код для замены 3
... { 6 ; ;No. ;Code20 ;TableRelation=IF (Type=CONST(" ")) "Standard Text"
ELSE IF (Type=CONST(G/L Account)) "G/L Account"
ELSE IF (Type=CONST(Item)) Item
ELSE IF (Type=CONST(Resource)) Resource
ELSE IF (Type=CONST(Cost)) "Service Cost";
OnValidate=VAR
ShowLocMessage@1000 : Boolean;
BEGIN
IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
ERROR(Text046);
TESTFIELD("Qty. Shipped Not Invoiced",0);
...Существующий код 4
... { 22 ; ;Unit Price ;Decimal ;OnValidate=BEGIN
GetServHeader;
IF ("Unit Price" > ServHeader."Max. Labor Unit Price") AND
...Код для замены 4
... { 22 ; ;Unit Price ;Decimal ;OnValidate=BEGIN
GetServHeader;
IF ("Appl.-to Service Entry" > 0) AND (CurrFieldNo <> 0) THEN
ERROR(Text046,FIELDCAPTION("Unit Price"));
IF ("Unit Price" > ServHeader."Max. Labor Unit Price") AND
...Существующий код 5
... Text043@1097 : TextConst 'ENU=You cannot change the value of the %1 field manually if %2 for this line is %3';
Text044@1012 : TextConst 'ENU=Do you want to split the resource line and use it to create resource lines\for the other service items with divided amounts?';
Text045@1099 : TextConst 'ENU=You cannot delete this service line because one or more service entries exist for this line.';
...Код для замены 5
... Text043@1097 : TextConst 'ENU=You cannot change the value of the %1 field manually if %2 for this line is %3';
Text044@1012 : TextConst 'ENU=Do you want to split the resource line and use it to create resource lines\for the other service items with divided amounts?';
Text045@1099 : TextConst 'ENU=You cannot delete this service line because one or more service entries exist for this line.';
Text046@1100 : TextConst 'ENU=You cannot modify the document because it is based on a service contract.';
...
Предварительные условия
Необходимы следующие продукты для установки данного исправления.
-
Microsoft Dynamics NAV 2009 R2
-
2009 г. Пакет обновления 1 для Microsoft Dynamics NAV
Сведения об удалении
Установленное обновление удалить нельзя.
Статус
Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".
Примечание. Это статья «БЫСТРАЯ ПУБЛИКАЦИЯ», созданная непосредственно из технической поддержки корпорации Майкрософт. Сведения, содержащиеся в настоящем документе, предоставляются "как есть" в ответ на возникающие проблемы. В результате скорости предоставления материалов они могут включать опечаток и быть изменены в любое время без предварительного уведомления. Другие вопросы, связанные с Условиями использования см.