AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: За рубежом > DAX auf Deutsch
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.08.2007, 20:54   #1  
Blog bot is offline
Blog bot
Участник
 
25,631 / 848 (80) +++++++
Регистрация: 28.10.2006
jinx: Microsoft Dynamics AX API – Teil 1 „Erstellen von Auftr?gen“
Ein Auftrag umfasst in Microsoft Dynamics AX immer einen Datensatz in der Tabelle„SalesTable“ (Auftragskopf) und wenn der Auftrag einen Artikel enth?lt (Auftragsposition),auch einen Datensatz in der Tabelle „SalesLine“. Zus?tzlich werden in Abh?ngigkeitvon den Daten des Auftrags (Einmalkunde: Ja/Nein, Intercompany: Ja/Nein, etc.) zus?tzlicheDatens?tze in anderen Tabellen erzeugt bzw. ge?ndert. Beispielhaft sei hier die Tabelle„CustTable“ genannt. In dieser wird ein neuer Kunde erstellt, wenn beim Erstellendes Auftrags angegeben wurde, dass es sich um einen Einmalkunden handelt. Ein weiteresBeispiel w?re die Tabelle „MarkupTrans“ in der in Abh?ngigkeit von den Einstellungenf?r Sonstige Zuschl?ge ebenfalls weitere Datens?tze erzeugt werden.
Die Logik, die das Erstellen der einzelnen Datens?tze der verschiedenen Tabellen steuert(die so genannte Gesch?ftslogik) wird in Microsoft Dynamics AX durch die Klassen „SalesTableType“(Abbildung 1) und „SalesLineType“ (Abbildung 2), sowie deren abgeleiteten Klassenabgebildet. Diese Klassen steuern das Verhalten bei Anlage, ?nderung und L?schungeines Auftrags. Dies beinhaltet auch, welche Werte ein Feld bei welchem Auftragstypannehmen darf, was geschieht wenn ein Feld ge?ndert wird, was wird wie gebucht undso weiter.


Diese Klassen werden von ?berschriebenen Methoden der Tabellen „SalesTable“ und „SalesLine“aufgerufen. So ruft zum Beispiel die Methode „Insert“ der Tabelle „SalesTable“, dieMethode „Insert“ der Klasse „SalesTableType“ auf. Abh?ngig vom Auftragstyp wird ?berdie Methode „construct“ bei der Initialisierung eines „SalesTableType“ Objekts gesteuert,welches konkrete Objekt erzeugt wird („SalesTableType_Sales“, „SalesTableType_ItemReq“,etc.).
Unter anderem sind weiterhin die Methoden „Update“, „Delete“, „InitValue“, „ValidateField“und „Delete“ auf die gleiche Weise ?berschrieben. Ein Blick in die Methoden der Tabelle„SalesTable“ oder „SalesLine“ sollte dies verdeutlichen.
Somit gestaltet sich das Erstellen eines neuen Auftrags sehr einfach, da die gesamteGesch?ftslogik die hinter einem Auftrag steht, automatisch aufgerufen wird.
Um einen neuen Auftrag zu erstellen muss im Wesentlichen nur
  1. Eine neue Nummer des entsprechenden Nummernkreises gezogen werden.
  2. Die Methode „InitValue“ der Tabelle „SalesTable“ aufgerufen werden.
  3. Die Kundennummer zugewiesen werden.
  4. Die Methode „InitFromCustAccount“ der Tabelle „SalesTable“ aufgerufen werden.
  5. Die Methode „Insert“ der Tabelle „SalesTable“ aufgerufen werden.
Soll f?r diesem gerade erzeugten Auftrag nun noch eine Artikelposition erzeugt werden,muss im Wesentlichen nur die Methode „CreateLine“ der Tabelle „SalesLine“, mit vorherigerDefinition von Auftragsnummer („SalesLine.SalesId“) und Artikelnummer („SalesLine.ItemId“),aufgerufen werden.
Hierzu ein Beispiel:
void createSalesTableAndLine()
{
AccountNum custAccount = ;
ItemId itemId = ;

SalesTablesalesTable;
SalesLine salesLine;
NumberSeq NumberSeq;
;
//Auftragskopf(SalesTable)
//NeueAuftragsnummer aus Nummernkreis erzeugen
NumberSeq = NumberSeq::newGetNumFromCode(
SalesParameters::numRefSalesId().numberSequence);
salesTable.SalesId = NumberSeq.num();

//Auftragskopfinitialisieren
salesTable.initValue();
salesTable.CustAccount = custAccount;

//Initialisierungder kundenspezifischen Auftragsdaten
salesTable.initFromCustTable();

//Auftragskopferstellen
salesTable.insert();

//Auftragsposition(SalesLine)
salesLine.clear();

//Zuweisenvon Auftragsnummer und Artikelnummer
salesLine.SalesId = salesTable.SalesId;
salesLine.ItemId = itemId;

//Auftragspositionerstellen (ruft SalesTable.insert auf)
salesLine.createLine(NoYes::Yes, NoYes::Yes, NoYes::Yes, NoYes::Yes,
NoYes::Yes,NoYes::Yes);
}


Es wird keine Haftung oder Gew?hrleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Mathias F??ler * jinx's AX Blog http://starside.eu *

More...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: Microsoft's strategy and vision for Dynamics AX and SOA Blog bot DAX Blogs 0 05.03.2009 18:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
jinx: Microsoft Dynamics AX API – Teil 3 „Buchen von Auftr?gen“ Blog bot DAX auf Deutsch 0 26.10.2007 03:34
jinx: Microsoft Dynamics AX API – Teil 2 „Erstellen von Bestellungen“ Blog bot DAX auf Deutsch 1 04.09.2007 11:46
Сергей Герасимов: Что нового в Microsoft Dynamics AX 4.0 Blog bot DAX Blogs 0 16.01.2007 11:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:44.