Ten artykuł dotyczy systemu Microsoft Dynamics AX dla wszystkich regionów.
Objawy
Podczas księgowania zamówienia zakupu w systemie Microsoft Dynamics AX 2009, pojawi się następujący komunikat o błędzie:
Nie można utworzyć rekordu nagłówka zamówienia zakupu — Aktualizacja tabeli (PurchParmSubTable).
Ten problem występuje, jeśli spełniony jest jeden z następujących warunków:
-
Włącz ustawienie "Ustawienia dziennika inspekcji podpisu elektronicznego nauki przyrodnicze" dla wszystkich tabel.
-
Utwórz rekord dla tabeli wspólnej.
-
Możesz ustawić tabeli PurchParmTable w dzienniku bazy danych.
Ten problem występuje podczas księgowania zamówienia zakupu, listy przychodu, dokument dostawy i faktura. Ten problem występuje w następujących produktach:
-
Microsoft Dynamics AX 2009 z usługą dodatkiem Service Pack 1
-
Microsoft Dynamics AX 2009
Rozwiązanie
Informacje o poprawce
Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak to jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następny dodatek service pack dla systemu Microsoft Dynamics AX 2009 lub następną wersję zawierającą tę poprawkę. Uwaga W wyjątkowych przypadkach opłaty, telefonujący do pomocy technicznej mogą zostać anulowane, jeśli pomocy technicznej dla systemu Microsoft Dynamics i produktów powiązanych Określa, że określonej aktualizacji, można rozwiązać swój problem. Normalne koszty pomocy technicznej będą dotyczyć dodatkowych pytań oraz problemów, których rozwiązanie nie jest objęte określoną aktualizacją.
Informacje dotyczące instalacji
Przed zainstalowaniem tej poprawki należy sprawdzić użytkownicy klienta systemu Microsoft Dynamics AX są wylogowani systemu. Powinny być użytkownika klienta, który jest zalogowany w momencie wdrożyć tę poprawkę. Aby wdrożyć tę poprawkę, musi mieć licencję deweloperską.Uwaga Zaleca się, że konto użytkownika w oknie identyfikatorów logowania systemu Windows lub w oknie identyfikatorów logowania bazy danych być członkiem grupy użytkowników Administratorzy w systemie Microsoft Dynamics AX.
Zmiany kodu
Firma Microsoft podaje przykłady programowania tylko dla celów ilustracyjnych, nie udzielając żadnej rękojmi, wyrażonej wprost ani dorozumianej, w tym także, ale nie tylko, dorozumianej rękojmi co do przydatności handlowej lub do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy Pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu działania określonej procedury. Nie będą oni jednak modyfikować tych przykładów w celu dodania funkcji ani konstruować nowych procedur celem dostosowania ich do potrzeb użytkownika. Zawsze test poprawki kodu w kontrolowanym środowisku przed zastosowaniem poprawki na komputerach produkcyjnych.Aby rozwiązać ten problem, wykonaj następujące kroki:
-
Zastąp kod w metodzie Wstaw w tabeli PurchParmSubTable w następujący sposób:
public void insert(){ PurchParmSubTable tempPurchParmSubTable; ; select tempPurchParmSubTable where tempPurchParmSubTable.ParmId == this.ParmId && tempPurchParmSubTable.TableRefId == this.TableRefId && tempPurchParmSubTable.OrigPurchId == this.OrigPurchId; if(tempPurchParmSubTable.RecId == 0) { super(); }}
-
Zastąp kod w metodzie createFromPurchParmTable w tabeli PurchParmSubTable w następujący sposób:
static PurchParmSubTable createFromPurchParmTable(PurchParmTable _purchParmTable, boolean _insert = true){ PurchParmSubTable purchParmSubTable; systemSequence systemSequence; ; ttsbegin; purchParmSubTable.clear(); purchParmSubTable.initValue(); purchParmSubTable.initFromPurchParmTable(_purchParmTable); if (_insert) { systemSequence = new systemSequence(); purchParmSubTable.RecId = systemSequence.reserveValues(1, tablenum(PurchParmSubTable)); purchParmSubTable.insert(); } ttscommit; return purchParmSubTable;}
-
Zastąp kod w metodzie Wstaw w tabeli SalesParmSubTable w następujący sposób:
public void insert(){ SalesParmSubTable tempSalesParmSubTable; ; select tempSalesParmSubTable where tempSalesParmSubTable.ParmId == this.ParmId && tempSalesParmSubTable.TableRefId == this.TableRefId && tempSalesParmSubTable.OrigSalesId == this.OrigSalesId && tempSalesParmSubTable.subId == this.subId; if(tempSalesParmSubTable.RecId == 0) { super(); }}
Uwaga Należy scalić istniejący dostosowań w tych metod.
Wymagania wstępne
Nie określono wymagań wstępnych.
Wymagania dotyczące ponownego uruchomienia
Nie musisz ponownie uruchomiać komputera po zastosowaniu tej poprawki.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.