Applies ToDynamics NAV 2009

Даже если вы не имеют разрешение на работу с Cartera в испанской версией Microsoft Dynamics NAV 2009, можно применить платеж и спецификацию по операциям клиента или поставщика. Проблема в том, что применение «без разрешения Cartera» эти документы (оплаты и спецификации) спецификации остается «открыть» в документах Cartera с поставщиками и клиентами. Это приводит к ошибкам в базе данных. Эта проблема возникает в следующих продуктах:

  • Испанская версия Microsoft Dynamics NAV 2009 R2

  • Испанская версия SP1 Microsoft Dynamics NAV 2009 г.

Решение

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

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

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

Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и без явных или подразумеваемых гарантий. Это включает, но не ограничиваясь, подразумеваемые гарантии товарной пригодности или пригодности для определенной цели. В данной статье предполагается, что вы знакомы с демонстрируемым языком программирования и средствами, которые используются для создания и отладки. Сотрудники службы поддержки Майкрософт могут объяснить возможности конкретной процедуры. Тем не менее они не изменит примеров для обеспечения функциональных возможностей или создания процедур для определенных требований.Примечание. Перед установкой данного исправления необходимо проверьте регистрацию всех пользователей клиента Microsoft Dynamics NAV выход из системы. Это относится к службам Microsoft Dynamics NAV приложения сервера (NAS). Должен быть только клиент пользователя, который вошел в систему, при реализации данного исправления.Чтобы реализовать это исправление, необходимо иметь лицензию разработчика.Рекомендуется, чтобы учетной записи пользователя в окне Логины Windows или в окне Логины базы данных был присвоен идентификатор роли «SUPER» Если учетная запись пользователя не может быть назначена роль «SUPER» идентификатор, необходимо убедиться, что учетная запись пользователя имеет следующие разрешения.

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

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

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

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

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

  1. Измените код в глобальной Variablesin финансового журнала-функция строка Post (12) следующим образом:Существующий код

    ...Text1100010@1100016 : TextConst 'ENU=Remove it from its payment order and try again.;ESP=B¢rrelo de la orden de pago e int‚ntelo de nuevo.';        Text1100011@1100021 : TextConst 'ENU=Document Type is " " in Line %1. This posting will not realize the VAT, do you want to proceed?;ESP=El tipo de documento es " " en la l¡nea %1. Esta contabilizaci¢n no tendr  en cuenta el IVA, ¨desea continuar?';        Text1100012@1100022 : TextConst 'ENU=The posting process has been cancelled by the user.;ESP=El proceso de registro ha sido cancelado por el usuario.';        AppliedAmountLCY2@1100053 : Decimal;        AppliesToDocType@1100023 : Integer;      PROCEDURE GetGLReg@10(VAR NewGLReg@1000 : Record 45);      BEGIN        NewGLReg := GLReg;      END;... 

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

    ...Text1100010@1100016 : TextConst 'ENU=Remove it from its payment order and try again.;ESP=B¢rrelo de la orden de pago e int‚ntelo de nuevo.';        Text1100011@1100021 : TextConst 'ENU=Document Type is " " in Line %1. This posting will not realize the VAT, do you want to proceed?;ESP=El tipo de documento es " " en la l¡nea %1. Esta contabilizaci¢n no tendr  en cuenta el IVA, ¨desea continuar?';        Text1100012@1100022 : TextConst 'ENU=The posting process has been cancelled by the user.;ESP=El proceso de registro ha sido cancelado por el usuario.';        AppliedAmountLCY2@1100053 : Decimal;        AppliesToDocType@1100023 : Integer;// Add the following line.Text1100013@1100026 : TextConst 'ENU=You do not have permissions to apply or unapply documents in the Cartera Module.';// End of the added line.      PROCEDURE GetGLReg@10(VAR NewGLReg@1000 : Record 45);      BEGIN        NewGLReg := GLReg;      END;...
  2. Измените код в ApplyCustLedgEntryфункции в общий журнал.-функция строка Post (12) следующим образом:Существующий код 1

    ...OldCustLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No.");          OldCustLedgEntry.SETRANGE("Customer No.",NewCVLedgEntryBuf."CV No.");          OldCustLedgEntry.SETRANGE(Open,TRUE);          OldCustLedgEntry.FINDFIRST;          OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);          IF AppManagement.AccessToCartera THEN            DocPost.CheckAppliedReceivableDoc(              OldCustLedgEntry,GenJnlLine."System-Created Entry");...

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

    ...OldCustLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No.");          OldCustLedgEntry.SETRANGE("Customer No.",NewCVLedgEntryBuf."CV No.");          OldCustLedgEntry.SETRANGE(Open,TRUE);          OldCustLedgEntry.FINDFIRST;// Add the following line.CheckCarteraAccessPermissions(OldCustLedgEntry."Document Situation");// End of the added line.          OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);          IF AppManagement.AccessToCartera THEN            DocPost.CheckAppliedReceivableDoc(              OldCustLedgEntry,GenJnlLine."System-Created Entry");...

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

    ...// Check Cust Ledger Entry and add to Temp.          IF SalesSetup."Appln. between Currencies" = SalesSetup."Appln. between Currencies"::None THEN            OldCustLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");          IF OldCustLedgEntry.FINDSET(FALSE,FALSE) THEN// Delete the following lines.REPEATIF GenJnlApply.CheckAgainstApplnCurrency(NewCVLedgEntryBuf."Currency Code",OldCustLedgEntry."Currency Code",GenJnlLine."Account Type"::Customer,FALSE)THEN BEGINIF (OldCustLedgEntry."Posting Date" > ApplyingDate) AND (OldCustLedgEntry."Applies-to ID" <> '') THENApplyingDate := OldCustLedgEntry."Posting Date";TempOldCustLedgEntry := OldCustLedgEntry;TempOldCustLedgEntry.INSERT;END;UNTIL OldCustLedgEntry.NEXT=0;// End of the deleted lines.          TempOldCustLedgEntry.SETRANGE(Positive,NewCVLedgEntryBuf."Remaining Amount" > 0);          IF TempOldCustLedgEntry.FIND('-') THEN BEGIN...

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

    ...// Check Cust Ledger Entry and add to Temp.          IF SalesSetup."Appln. between Currencies" = SalesSetup."Appln. between Currencies"::None THEN            OldCustLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");          IF OldCustLedgEntry.FINDSET(FALSE,FALSE) THEN// Add the following lines.REPEATCheckCarteraAccessPermissions(OldCustLedgEntry."Document Situation");IF GenJnlApply.CheckAgainstApplnCurrency(NewCVLedgEntryBuf."Currency Code",OldCustLedgEntry."Currency Code",GenJnlLine."Account Type"::Customer,FALSE)THEN BEGINIF (OldCustLedgEntry."Posting Date" > ApplyingDate) AND (OldCustLedgEntry."Applies-to ID" <> '') THENApplyingDate := OldCustLedgEntry."Posting Date";TempOldCustLedgEntry := OldCustLedgEntry;TempOldCustLedgEntry.INSERT;END;UNTIL OldCustLedgEntry.NEXT=0;// End of the added lines.          TempOldCustLedgEntry.SETRANGE(Positive,NewCVLedgEntryBuf."Remaining Amount" > 0);          IF TempOldCustLedgEntry.FIND('-') THEN BEGIN...
  3. Измените код в функцию UnapplyCustLedgEntry в общий журнал.-функция строка Post (12) следующим образом:Существующий код

    ...DtldCustLedgEntry2.SETRANGE("Customer No.",DtldCustLedgEntry."Customer No.");        DtldCustLedgEntry2.SETFILTER("Entry Type",'>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");        UnapplyVATEntries := FALSE;        DtldCustLedgEntry2.FINDSET;        REPEAT          DtldCustLedgEntry2.TESTFIELD(Unapplied,FALSE);          IF (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR             (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR             (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")          THEN...

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

    ...DtldCustLedgEntry2.SETRANGE("Customer No.",DtldCustLedgEntry."Customer No.");        DtldCustLedgEntry2.SETFILTER("Entry Type",'>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry");        UnapplyVATEntries := FALSE;        DtldCustLedgEntry2.FINDSET;        REPEAT// Add the following line.CheckCarteraAccessPermissions(DtldCustLedgEntry2."Document Situation");// End of the added line.          DtldCustLedgEntry2.TESTFIELD(Unapplied,FALSE);          IF (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR             (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR             (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")          THEN...
  4. Измените код в функцию ApplyVendLedgEntry в общий журнал.-функция строка Post (12) следующим образом:Существующий код 1

    ...OldVendLedgEntry.SETRANGE("Document Type",GenJnlLine."Applies-to Doc. Type");          OldVendLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No.");          OldVendLedgEntry.SETRANGE("Vendor No.",NewCVLedgEntryBuf."CV No.");          OldVendLedgEntry.SETRANGE(Open,TRUE);          OldVendLedgEntry.FINDFIRST;          OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);          IF AppManagement.AccessToCartera THEN            DocPost.CheckAppliedPayableDoc(            OldVendLedgEntry,GenJnlLine."System-Created Entry");...

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

    ...OldVendLedgEntry.SETRANGE("Document Type",GenJnlLine."Applies-to Doc. Type");          OldVendLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No.");          OldVendLedgEntry.SETRANGE("Vendor No.",NewCVLedgEntryBuf."CV No.");          OldVendLedgEntry.SETRANGE(Open,TRUE);          OldVendLedgEntry.FINDFIRST;// Add the following line.CheckCarteraAccessPermissions(OldVendLedgEntry."Document Situation");// End of the added line.          OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);          IF AppManagement.AccessToCartera THEN            DocPost.CheckAppliedPayableDoc(            OldVendLedgEntry,GenJnlLine."System-Created Entry");...

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

    ...//Check and Move Ledger Entries to Temp          IF PurchSetup."Appln. between Currencies" = PurchSetup."Appln. between Currencies"::None THEN            OldVendLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");          IF OldVendLedgEntry.FINDSET(FALSE,FALSE) THEN            REPEAT              IF GenJnlApply.CheckAgainstApplnCurrency(                   NewCVLedgEntryBuf."Currency Code",                   OldVendLedgEntry."Currency Code",                   GenJnlLine."Account Type"::Vendor,                   FALSE)...

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

    ...//Check and Move Ledger Entries to Temp          IF PurchSetup."Appln. between Currencies" = PurchSetup."Appln. between Currencies"::None THEN            OldVendLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");          IF OldVendLedgEntry.FINDSET(FALSE,FALSE) THEN            REPEAT// Add the following line.CheckCarteraAccessPermissions(OldVendLedgEntry."Document Situation");// End of the added line.              IF GenJnlApply.CheckAgainstApplnCurrency(                   NewCVLedgEntryBuf."Currency Code",                   OldVendLedgEntry."Currency Code",                   GenJnlLine."Account Type"::Vendor,                   FALSE)...
  5. Измените код в функцию UnapplyVendLedgEntry в общий журнал.-функция строка Post (12) следующим образом:Существующий код

    ...DtldVendLedgEntry2.SETCURRENTKEY("Transaction No.","Vendor No.","Entry Type");        DtldVendLedgEntry2.SETRANGE("Transaction No.",DtldVendLedgEntry."Transaction No.");        DtldVendLedgEntry2.SETRANGE("Vendor No.",DtldVendLedgEntry."Vendor No.");        DtldVendLedgEntry2.SETFILTER("Entry Type",'>%1',DtldVendLedgEntry."Entry Type"::"Initial Entry");        DtldVendLedgEntry2.FINDSET;        UnapplyVATEntries := FALSE;        REPEAT          IF (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR             (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR             (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")...

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

    ...DtldVendLedgEntry2.SETCURRENTKEY("Transaction No.","Vendor No.","Entry Type");        DtldVendLedgEntry2.SETRANGE("Transaction No.",DtldVendLedgEntry."Transaction No.");        DtldVendLedgEntry2.SETRANGE("Vendor No.",DtldVendLedgEntry."Vendor No.");        DtldVendLedgEntry2.SETFILTER("Entry Type",'>%1',DtldVendLedgEntry."Entry Type"::"Initial Entry");        DtldVendLedgEntry2.FINDSET;// Add the following line.CheckCarteraAccessPermissions(DtldVendLedgEntry2."Document Situation");// End of the added line.        UnapplyVATEntries := FALSE;        REPEAT          IF (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR             (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR             (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")...
  6. Измените код в функцию CheckCarteraAccessPermissions в общий журнал.-функция строка Post (12) следующим образом:Существующий код

    ...CLEAR(GenJnlLine2);        EXIT(IsOK);      END;      BEGIN      END.    }  }...

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

    ...CLEAR(GenJnlLine2);        EXIT(IsOK);      END;// Add the following lines.LOCAL PROCEDURE CheckCarteraAccessPermissions@1100024(DocumentSituation@1170001 : ' ,Posted BG/PO,Closed BG/PO,BG/PO,Cartera,Closed Documents');BEGINIF (DocumentSituation <> DocumentSituation::" ") AND (NOT AppManagement.AccessToCartera) THENERROR(Text1100013);END;// End of the added lines.     BEGIN      END.    }  }...

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

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

  • Испанская версия Microsoft Dynamics NAV 2009 R2

  • Испанская версия SP1 Microsoft Dynamics NAV 2009 г.

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

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

Статус

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

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

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

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

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

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