Тази статия се отнася за Microsoft Dynamics NAV за всички държави и всички езикови местоположения.
Симптоми
След като изпълните функцията Достъп до поръчки за продажби за специална поръчка в специални поръчки в Microsoft Dynamics NAV 2009, полето код в заглавката на специална поръчка е празна неочаквано.
Този проблем възниква в следните продукти:
-
Microsoft Dynamics NAV 2009 R2
-
Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
Решение
Информация за актуалната корекция
Вече се предлага от Microsoft предоставя поддържана актуална корекция. Обаче е предназначена само за коригиране на описания в тази статия. Прилагайте корекцията само към системи, изпитващи този конкретен проблем. Възможно е провеждането на допълнителни тестове на тази актуална корекция. Следователно ако не сте силно засегнати от този проблем, препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV 2009 или следващата версия на Microsoft Dynamics NAV, който ще съдържа тази корекция.
Забележка: При специални случаи таксите, които са за свързани с поддръжката обаждания могат да бъдат отменени, ако специалист по техническа поддръжка за Microsoft Dynamics и свързани с тях продукти определя, че конкретна актуализация може да разреши проблема. Обичайните такси за поддръжката ще важат за допълнителни въпроси и проблеми, които не спадат към съответната актуализация.
Информация за инсталирането
Microsoft предоставя примери само за илюстративни цели без гаранция за определени цели. Това включва, но не е ограничено до, подразбиращи се гаранции за продаваемост или годност за определена цел. Тази статия се предполага, че сте запознати с демонстрирания език за програмиране и инструментите, които се използват за създаване и процедури за отстраняване на грешки. Инженерите на поддръжката на Microsoft могат да помогнат с обяснение на функциите на конкретна процедура, но няма да могат да модифицират тези примери с цел осигуряване на допълнителна функционалност или създаване на процедури за удовлетворение на конкретните ви изисквания.
Забележка: Преди да инсталирате тази актуална корекция, уверете се, че всички потребители на Microsoft Navision клиент излезли системата. Това включва Microsoft Navision Application услуги (NAS) клиент потребители. Трябва да бъде само клиент потребител, който е влязъл при прилагане на тази актуална корекция.
За прилагане на тази актуална корекция, трябва да имате лиценз разработчик.
Препоръчително е потребителският акаунт в прозореца влизания в Windows или в прозореца на БД присвояването на "Супер" ИД на роля. Ако потребителският акаунт не може да бъде възложена ИД на роля на "Супер", трябва да проверите, че потребителският акаунт има следните права:
-
Разрешение за промяна на обекта, ще се променя.
-
Разрешението за изпълнение за системата обект номер 5210 обект и системата обект ID 9015 обект.
Забележка: Не трябва да имат право да съхранява данни, освен ако трябва да извършите възстановяване на данни.
Промени код
Забележка: Винаги тест код решава в управлявана среда преди да приложите корекциите производство компютри.
За да разрешите този проблем, изпълнете следните стъпки:
-
В GetDescriptionAndRcptName funtion в промени в ReqJnlManagement кодова единица (330) както следва:
Съществуващ код...ELSE
Description := '';
// Delete the following lines.
ReqLine.Type::Item:
IF Item.GET(ReqLine."No.") THEN
Description := Item.Description
ELSE
Description := '';
// End of the lines.
END;
END;
IF ReqLine."Vendor No." = '' THEN
...Замени код
...ELSE
Description := '';
END;
END;
IF ReqLine."Vendor No." = '' THEN
... -
Добавяне на нова глобална променлива в заявка таблицата.-направи поръчка кодова единица (333) и след това задайте променливата както следва:
-
Име: DropShptSpecialOrderExists
-
Тип данни: булев
-
-
Добавяне на нова локална променлива във функцията InsertPurchOrderLine по заявка таблицата.-направи поръчка кодова единица (333) и след това задайте променливата както следва:
-
Име: SalesHeader
-
Тип данни: запис
-
Подтип: празно
-
-
Добавяне на нова локална променлива във функцията InsertPurchOrderLine в заявка таблица.-направи поръчка кодова единица (333) и след това задайте променливата както следва:
-
Име: DropShptSplOrderDiffAddress
-
Тип данни: булев
-
-
Промените InsertPurchOrderLine функция в заявка таблицата.-направи поръчка кодова единица (333) както следва:
Съществуващ код...WITH ReqLine2 DO BEGIN
IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
EXIT;
IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
(PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
(PrevShipToCode <> "Ship-to Code") OR
(PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
(PurchOrderHeader."Currency Code" <> "Currency Code") OR
// Delete the following line.
(PrevPurchCode <> "Purchasing Code")
THEN BEGIN
...Замени код
...WITH ReqLine2 DO BEGIN
IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
EXIT;
// Add the following lines.
DropShptSpecialOrderExists := FALSE;
IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN
DropShptSpecialOrderExists := PurchOrderHeader.DropShptSplOrderExists(SalesHeader);
IF DropShptSpecialOrderExists THEN
DropShptSplOrderDiffAddress :=
NOT PurchOrderHeader.CheckAndAddShipToAdd(SalesHeader,FALSE);
END;
// End of the lines.
IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
(PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
(PrevShipToCode <> "Ship-to Code") OR
(PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
(PurchOrderHeader."Currency Code" <> "Currency Code") OR
// Add the following lines.
(PrevPurchCode <> "Purchasing Code") OR
(DropShptSplOrderDiffAddress)
// End of the lines.
THEN BEGIN
... -
Добавяне на нова локална променлива във функцията InsertHeader по заявка таблицата.-направи поръчка кодова единица (333) и след това задайте променливата както следва:
-
Име: SalesHeader
-
Тип данни: запис
-
Подтип: празно
-
-
В InsertHeader функция в заявка таблица. промени-направи поръчка кодова единица (333) както следва:
Съществуващ код...PurchOrderHeader.SetShipToForSpecOrder;
END;
PurchOrderHeader.MODIFY;
...Замени код
...PurchOrderHeader.SetShipToForSpecOrder;
END;
// Add the following lines.
IF DropShptSpecialOrderExists THEN BEGIN
SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.");
PurchOrderHeader."Ship-to Name" := SalesHeader."Ship-to Name";
PurchOrderHeader."Ship-to Name 2" := SalesHeader."Ship-to Name 2";
PurchOrderHeader."Ship-to Address" := SalesHeader."Ship-to Address";
PurchOrderHeader."Ship-to Address 2" := SalesHeader."Ship-to Address 2";
PurchOrderHeader."Ship-to Post Code" := SalesHeader."Ship-to Post Code";
PurchOrderHeader."Ship-to City" := SalesHeader."Ship-to City";
PurchOrderHeader."Ship-to Contact" := SalesHeader."Ship-to Contact";
END;
// End of the lines.
PurchOrderHeader.MODIFY;
... -
Променете кода в EnterPurchaseItemCrossRef функция в Dist. интеграция кодова единица (5702) както следва:
Съществуващ код...IF Found THEN BEGIN
"Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
"Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
"Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
"Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";
// Delete the following lines.
IF ItemCrossReference.Description <> '' THEN BEGIN
Description := ItemCrossReference.Description;
"Description 2" := '';
END;
// End of the lines.
END ELSE BEGIN
"Cross-Reference No." := '';
"Cross-Reference Type" := "Cross-Reference Type"::" ";
"Cross-Reference Type No." := '';
// Delete the following lines.
IF "Variant Code" <> '' THEN BEGIN
ItemVariant.GET("No.","Variant Code");
Description := ItemVariant.Description;
"Description 2" := ItemVariant."Description 2";
END ELSE BEGIN
Item.GET("No.");
Description := Item.Description;
"Description 2" := Item."Description 2";
END;
// End of the lines.
GetItemTranslation;
...Замени код
...IF Found THEN BEGIN
"Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
"Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
"Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
"Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";
END ELSE BEGIN
"Cross-Reference No." := '';
"Cross-Reference Type" := "Cross-Reference Type"::" ";
"Cross-Reference Type No." := '';
GetItemTranslation;
... -
Променете кода в GetSpecialOrders функция в Dist. интеграция кодова единица (5702) както следва:
Съществуващ код...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");
// Delete the following line.
PurchHeader.SetShipToForSpecOrder;
PurchLine.LOCKTABLE;
...Замени код
...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");
// Add the following lines.
IF DropShptSplOrderExists(SalesHeader) THEN
CheckAndAddShipToAdd(SalesHeader,TRUE);
// End of the lines.
PurchLine.LOCKTABLE;
... -
Променете кода в TransfldsFromSalesToPurchLine функция в копие документ управление кодова единица (6620) както следва:
Съществуващ код...VALIDATE("Direct Unit Cost");
END;
...Замени код
...VALIDATE("Direct Unit Cost");
// Add the following lines.
Description := FromSalesLine.Description;
"Description 2" := FromSalesLine."Description 2";
// End of the lines.
END;
... -
Да променяте код в документи за покупка.-се капка експ кодова единица (76) както следва:
Съществуващ код 1...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");
PurchLine.LOCKTABLE;
...Замени код 1
...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");
// Add the following line.
IF DropShptSplOrderExists(SalesHeader) THEN
CheckAndAddShipToAdd(SalesHeader,TRUE);
// End of the lines.
PurchLine.LOCKTABLE;
...Съществуващ код 2
...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
PurchLine.Description := SalesLine.Description;
PurchLine."Sales Order No." := SalesLine."Document No.";
...Замени код 2
...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
PurchLine.Description := SalesLine.Description;
// Add the following line.
PurchLine."Description 2" := SalesLine."Description 2";
PurchLine."Sales Order No." := SalesLine."Document No.";
... -
Да променяте InsertReqWkshLine в отчета за получаване на поръчки за продажби (698) както следва:
Съществуващ код..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";
SalesHeader.GET(1,SalesLine."Document No.");
IF SpecOrder <> 1 THEN
...Замени код
..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";
// Add the following lines.
Description := SalesLine.Description;
"Description 2" := SalesLine."Description 2";
// End of the lines.
SalesHeader.GET(1,SalesLine."Document No.");
IF SpecOrder <> 1 THEN
... -
Добавяне на нова глобална променлива в показаната таблица (38) и след това задайте променливата както следва:
-
Име: NameAddressDetails
-
Тип данни: текст
-
Продължителност: 512
-
-
Добавяне на нова глобална променлива в показаната таблица (38) и след това задайте променливата както следва:
-
Име: NameAddressDetails2
-
Тип данни: текст
-
Дължина: 512
-
-
Добавяне на нов постоянен текст в показаната таблица (38) и след това задайте текста константата по следния начин:
-
Име: Text051
-
ConstValue: полето %1 покупка %2 трябва да бъде същият като продажби ред %3.
-
-
Създаване на нови CheckAndAddShipToAdd функция в показаната таблица (38). За да направите това, изпълнете следните стъпки:
-
Добавяне на нов параметър local във функцията CheckAndAddShipToAdd в показаната таблица (38) и след това задайте параметъра както следва:
-
Var: No
-
Име: SalesHeader
-
Тип данни: запис
-
Подтип: празно
-
-
Добавяне на нов параметър local във функцията CheckAndAddShipToAdd в показаната таблица (38) и след това задайте параметъра както следва:
-
Var: No
-
Име: ShowError
-
Тип данни: булев
-
-
Добавете върната стойност в CheckAndAddShipToAdd функция в показаната таблица (38) и след това задайте стойността, която връща както следва:
-
Връща тип: булев
-
-
Добавяне на нова локална променлива във функцията CheckAndAddShipToAdd в показаната таблица (38) и след това задайте променливата както следва:
-
Име: PurchLine2
-
Тип данни: запис
-
Подтип: PurchLine2
-
-
Добавете следния код в CheckAndAddShipToAdd функция в показаната таблица (38):
IF ShowError THEN BEGINPurchLine2.RESET;
PurchLine2.SETRANGE("Document Type","Document Type"::Order);
PurchLine2.SETRANGE("Document No.","No.");
IF NOT PurchLine2.ISEMPTY THEN BEGIN
IF "Ship-to Name" <> SalesHeader."Ship-to Name" THEN
ERROR(Text051,FIELDCAPTION("Ship-to Name"),"No.",SalesHeader."No.");
IF "Ship-to Name 2" <> SalesHeader."Ship-to Name 2" THEN
ERROR(Text051,FIELDCAPTION("Ship-to Name 2"),"No.",SalesHeader."No.");
IF ("Ship-to Address" <> SalesHeader."Ship-to Address") THEN
ERROR(Text051,FIELDCAPTION("Ship-to Address"),"No.",SalesHeader."No.");
IF ("Ship-to Address 2" <> SalesHeader."Ship-to Address 2") THEN
ERROR(Text051,FIELDCAPTION("Ship-to Address 2"),"No.",SalesHeader."No.");
IF ("Ship-to Post Code" <> SalesHeader."Ship-to Post Code") THEN
ERROR(Text051,FIELDCAPTION("Ship-to Post Code"),"No.",SalesHeader."No.");
IF ("Ship-to City" <> SalesHeader."Ship-to City") THEN
ERROR(Text051,FIELDCAPTION("Ship-to City"),"No.",SalesHeader."No.");
IF ("Ship-to Contact" <> SalesHeader."Ship-to Contact") THEN
ERROR(Text051,FIELDCAPTION("Ship-to Contact"),"No.",SalesHeader."No.");
END ELSE BEGIN
// no purchase line exists
"Ship-to Name" := SalesHeader."Ship-to Name";
"Ship-to Name 2" := SalesHeader."Ship-to Name 2";
"Ship-to Address" := SalesHeader."Ship-to Address";
"Ship-to Address 2" := SalesHeader."Ship-to Address 2";
"Ship-to Post Code" := SalesHeader."Ship-to Post Code";
"Ship-to City" := SalesHeader."Ship-to City";
"Ship-to Contact" := SalesHeader."Ship-to Contact";
END;
END ELSE BEGIN
NameAddressDetails :=
SalesHeader."Ship-to Name" + SalesHeader."Ship-to Name 2" +
SalesHeader."Ship-to Address" + SalesHeader."Ship-to Address 2" +
SalesHeader."Ship-to Post Code" + SalesHeader."Ship-to City" +
SalesHeader."Ship-to Contact";
IF NameAddressDetails2 = '' THEN
NameAddressDetails2 := NameAddressDetails;
EXIT(NameAddressDetails2 = NameAddressDetails);
END;
-
-
Създайте нова функция DropShptSplOrderExists в показаната таблица (38). За да направите това, изпълнете следните стъпки:
-
Добавяне на нов параметър local във функцията DropShptSplOrderExists в показаната таблица (38) и след това задайте параметъра както следва:
-
Var: No
-
Име: SalesHeader
-
Тип данни: запис
-
Подтип: празно
-
-
Добавяне на върнатия тип в DropShptSplOrderExists функция в показаната таблица (38) и след това задайте стойността, която връща по следния начин:
-
Връща тип: булев
-
-
Добавяне на нова локална променлива във функцията DropShptSplOrderExists в показаната таблица (38) и след това задайте променливата както следва:
-
Име: SalesLine2
-
Тип данни: запис
-
Подтип: ред за продажби
-
-
Добавете следния код в DropShptSplOrderExists функция в показаната таблица (38):
// returns TRUE if sales is either Drop Shipment of Special OrderSalesLine2.RESET;
SalesLine2.SETRANGE("Document Type",SalesLine2."Document Type"::Order);
SalesLine2.SETRANGE("Document No.",SalesHeader."No.");
SalesLine2.SETRANGE("Drop Shipment",TRUE);
IF NOT SalesLine2.ISEMPTY THEN
EXIT(TRUE);
SalesLine2.SETRANGE("Drop Shipment");
SalesLine2.SETRANGE("Special Order",TRUE);
EXIT(NOT SalesLine2.ISEMPTY);
-
Необходими условия:
Трябва да имате един от следните продукти, за да приложите тази спешна корекция:
-
Microsoft Dynamics NAV 2009 R2
-
Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
Информация за премахване
Не можете да премахнете тази актуална корекция.
Статус
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, изброени в раздела "Отнася се за".
Забележка: Това е статия "Бърза публикация", създадени директно от организацията за поддръжка на Microsoft. Информацията тук се предоставя "както-е" в отговор на появили се проблеми. В резултат на скоростта на предоставянето му материалите могат да съдържат печатни грешки и могат да бъдат коригирани по всяко време без предизвестие. Вижте Условия за други съображения.