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

Бързо публикуваните статии предоставят информация директно от организацията за поддръжка на Microsoft. Информацията, която се съдържа в този документ, е създадена в отговор на нововъзникнали или уникални теми или е предназначена да допълни друга информация в базата знания.

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

Да приемем, че имате договор с дата на изтичане на срока, посочена в Microsoft Dynamics NAV 5.0 Service Pack 1. Когато създадете поръчка за обслужване и се опитате да използвате договора на датата на изтичане на срока, договорът не може да бъде използван.

Симптоми

Информация за горещи поправки

Поддържа гореща поправка вече се предлага от Microsoft. Целта му е обаче само да коригира проблема, който е описан в тази статия. Прилагайте го само към системи, които срещат този конкретен проблем. Тази гореща корекция може да бъде подложена на допълнително тестване. Ето защо, ако не сте сериозно засегнати от този проблем, ви препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV 5.0 или следващата версия на Microsoft Dynamics NAV, която съдържа тази гореща корекция.

Забележка: При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако специалист по техническа поддръжка за Microsoft Dynamics и свързаните продукти реши, че проблемът може да бъде решен със специфична актуализация. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към съответната актуализация.

Решение

Информация за инсталиране

Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, нито изрична, или подразбираща се. Това включва, но не се ограничава до, подразбиращите се гаранции за продаваемост или годност за определена цел. В тази статия се предполага, че сте запознати с езика за програмиране, който се демонстрира, и с инструментите, които се използват за създаване и за процедури за отстраняване на грешки. Инженерите по поддръжка на Microsoft могат да ви помогнат да обяснят функционалността на дадена процедура, но няма да променят тези примери, за да предоставят допълнителна функционалност или да конструират процедури, които да отговарят на вашите конкретни изисквания.

Забележка Преди да инсталирате тази гореща корекция, уверете се, че всички потребители на клиента на Microsoft Navision са излезли от системата. Това включва потребители на клиенти на Microsoft Navision Application Services (NAS). Когато внедрявате тази гореща корекция, трябва да сте единственият клиентски потребител е влязъл.

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

Препоръчваме на потребителския акаунт в прозореца за влизане в Windows или в прозореца за влизане в база данни да бъде присвоен ИД на роля "SUPER". Ако на потребителския акаунт не може да бъде присвоен ИД на роля "SUPER", трябва да се уверите, че този потребителски акаунт има следните разрешения:

  • Разрешението за промяна за обекта, който ще променяте.
  • Разрешението за изпълнение за обекта 5210 на системен обект с ИД 5210 и за обекта 9015 на системен обект.

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

Промени в кода

Забележка: Винаги тествайте корекциите на кода в контролирана среда, преди да ги приложите към производствените си компютри.
За да решите този проблем, изпълнете следните стъпки:

  1. Промяна на кода в договора No. Функцията OnValidate в заглавната таблица на услугата (5900) е както следва:
    Съществуващ код

    ...
                                                                        IF ServContract."Starting Date" > "Order Date" THEN
                                                                          ERROR(Text042,"Contract No.");
                                                                        IF (ServContract."Expiration Date" <> 0D) AND
    
                                                                          // Delete the following line.
                                                                           (ServContract."Expiration Date" <= "Order Date")
    
                                                                        THEN
                                                                          ERROR(Text043,"Contract No.");
                                                                      END;
    ...
    
    

    Код за подмяна

    ...
                                                                        IF ServContract."Starting Date" > "Order Date" THEN
                                                                          ERROR(Text042,"Contract No.");
                                                                        IF (ServContract."Expiration Date" <> 0D) AND
    
                                                                        // Add the following line.
                                                                           (ServContract."Expiration Date" < "Order Date")
    
                                                                        THEN
                                                                          ERROR(Text043,"Contract No.");
                                                                      END;
    ...
    
    
  2. Промяна на кода в договора No. Функцията OnLookup в заглавната таблица на услугата (5900) по следния начин:
    Съществуващ код

    ...
                                                                  ServContract.SETRANGE("Bill-to Customer No.","Bill-to Customer No.");
                                                                  ServContract.SETRANGE(Status,ServContract.Status::Signed);
                                                                  ServContract.SETFILTER("Starting Date",'<=%1',"Order Date");
    
                                                                  // Delete the following line.
                                                                  ServContract.SETFILTER("Expiration Date",'>%1 | =%2',"Order Date",0D);
    
                                                                  ServContract.FILTERGROUP(0);
                                                                  CLEAR(ServContractList);
                                                                  ServContractList.SETTABLEVIEW(ServContract);
                                                                  ServContractList.LOOKUPMODE(TRUE);
    ...
    
    

    Код за подмяна

    ...
                                             ServContract.SETRANGE("Bill-to Customer No.","Bill-to Customer No.");
                                                                  ServContract.SETRANGE(Status,ServContract.Status::Signed);
                                                                  ServContract.SETFILTER("Starting Date",'<=%1',"Order Date");
    
                                                                  // Add the following line.
                                                                  ServContract.SETFILTER("Expiration Date",'>=%1 | =%2',"Order Date",0D);
    
                                                                  ServContract.FILTERGROUP(0);
                                                                  CLEAR(ServContractList);
                                                                  ServContractList.SETTABLEVIEW(ServContract);
                                                                  ServContractList.LOOKUPMODE(TRUE);
    ...
    
    
  3. Променете кода във функцията ValidateServicePeriod в таблицата с редове на договор за услуга (5964), както следва:
    Съществуващ код

    ...
          IF "Starting Date" > CurrentDate THEN
            ERROR(Text020,"Service Item No.","Contract No.");
          IF "Contract Expiration Date" = 0D THEN BEGIN
            ServContractHeader.GET(ServContractHeader."Contract Type"::Contract,"Contract No.");
            IF (ServContractHeader."Expiration Date" <> 0D) AND
               (ServContractHeader."Expiration Date" <= CurrentDate)
            THEN
              ERROR(Text021,"Service Item No.","Contract No.");
          END ELSE
    
    // Delete the following line.
            IF "Contract Expiration Date" <= CurrentDate THEN
    
              ERROR(Text021,"Service Item No.","Contract No.");
    ...
    
    

    Код за подмяна

    ...
          IF "Starting Date" > CurrentDate THEN
            ERROR(Text020,"Service Item No.","Contract No.");
          IF "Contract Expiration Date" = 0D THEN BEGIN
            ServContractHeader.GET(ServContractHeader."Contract Type"::Contract,"Contract No.");
            IF (ServContractHeader."Expiration Date" <> 0D) AND
               (ServContractHeader."Expiration Date" <= CurrentDate)
            THEN
              ERROR(Text021,"Service Item No.","Contract No.");
          END ELSE
    
    // Add the following line.
            IF "Contract Expiration Date" < CurrentDate THEN
    
              ERROR(Text021,"Service Item No.","Contract No.");
    ...
    
    

          

Предварителни изисквания

Трябва да имате инсталиран Service Pack 1 за Microsoft Dynamics NAV 5.0, за да приложите тази гореща корекция.

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

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

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Състояние

MICROSOFT И/ИЛИ НЕГОВИТЕ ДОСТАВЧИЦИ НЕ ДАВАТ ОБЕЩАНИЯ ИЛИ ГАРАНЦИИ ОТНОСНО ПРИГОДНОСТТА, НАДЕЖДНОСТТА ИЛИ ТОЧНОСТТА НА ИНФОРМАЦИЯТА, КОЯТО СЕ СЪДЪРЖА В ДОКУМЕНТИТЕ И СВЪРЗАНИТЕ ГРАФИКИ, ПУБЛИКУВАНИ НА ТОЗИ УЕБ САЙТ ("МАТЕРИАЛИТЕ"), ЗА КАКВАТО И ДА Е ЦЕЛ.

МАТЕРИАЛИТЕ МОГАТ ДА ВКЛЮЧВАТ ТЕХНИЧЕСКИ НЕТОЧНОСТИ ИЛИ ПЕЧАТНИ ГРЕШКИ И МОГАТ ДА БЪДАТ КОРИГИРАНИ ПО ВСЯКО ВРЕМЕ БЕЗ ПРЕДИЗВЕСТИЕ. ДО МАКСИМАЛНАТА СТЕПЕН, РАЗРЕШЕНА ОТ ПРИЛОЖИМОТО ЗАКОНОДАТЕЛСТВО, MICROSOFT И/ИЛИ НЕЙНИТЕ ДОСТАВЧИЦИ ОТХВЪРЛЯТ И ИЗКЛЮЧВАТ ВСИЧКИ ДЕКЛАРАЦИИ, ГАРАНЦИИ И УСЛОВИЯ, НЕЗАВИСИМО ДАЛИ СА ИЗРИЧНИ, ПОДРАЗБИРАЩИ СЕ, ИЛИ ЗАКОНОВИ, ВКЛЮЧИТЕЛНО, НО НЕ САМО, ДЕКЛАРАЦИИ, ГАРАНЦИИ ИЛИ УСЛОВИЯ ЗА СОБСТВЕНОСТ, НЕНАРУШЕНИЕ, ЗАДОВОЛИТЕЛНО СЪСТОЯНИЕ ИЛИ КАЧЕСТВО, ПРОДАВАЕМОСТ И ПРИГОДНОСТ ЗА ОПРЕДЕЛЕНА ЦЕЛ, ПО ОТНОШЕНИЕ НА МАТЕРИАЛИТЕ.