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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.09.2007, 01:12   #1  
Blog bot is offline
Blog bot
Участник
 
25,617 / 848 (80) +++++++
Регистрация: 28.10.2006
jinx: Microsoft Dynamics AX API – Teil 2 „Erstellen von Bestellungen“
Eine Bestellung umfasst in Microsoft Dynamics AX immer einen Datensatz der Tabelle „PurchTable“ und wenn die Bestellung einen Artikel enth?lt, auch einen Datensatz in der Tabelle „PurchLine“. Zus?tzlich werden in Abh?ngigkeit von den Daten der Bestellung (Einmallieferant: Ja/Nein, Intercompany: Ja/Nein, etc.) zus?tzliche Datens?tze in anderen Tabellen erzeugt bzw. ge?ndert. Beispielhaft sei hier die Tabelle „VendTable“ genannt. In dieser wird ein neuer Lieferant erstellt, wenn beim Erstellen der Bestellung angegeben wurde, dass es sich um einen Einmallieferanten handelt. Ein weiteres Beispiel w?re die Tabelle „MarkupTrans“ in der in Abh?ngigkeit von den Einstellungen f?r sonstige Zuschl?ge ebenfalls weitere Datens?tze erzeugt werden.
Die Logik, die das Erstellen der einzelnen Datens?tze der verschiedenen Tabellen steuert wird in Microsoft Dynamics AX durch die Klassen „PurchTableType“ (Abbildung 1) und „PurchLineType“ (Abbildung 2), sowie deren abgeleiteten Klassen abgebildet. Diese Klassen steuern das Verhalten bei Anlage, ?nderung und L?schung einer Bestellung. Dies beinhaltet auch, welche Werte ein Feld bei welchem Bestellungstyp annehmen darf, was geschieht wenn ein Feld ge?ndert wird, was wird wie gebucht und so weiter.


Diese Klassen werden von ?berschriebenen Methoden der Tabellen „PurchTable“ und „PurchLine“ aufgerufen. So ruft zum Beispiel die Methode „Insert“ der Tabelle „PurchTable“, die Methode „Insert“ der Klasse „PurchTableType“ auf. Abh?ngig vom Bestellungstyp wird ?ber die Methode „construct“ bei der Initialisierung eines „PurchTableType“ Objekts gesteuert, welches konkrete Objekt erzeugt wird („PurchTableType_Purch“, „PurchTableType_ReturnItem“, etc.). Dies erfolgt in der Methode „type“ der Tabelle „PurchTable“ oder „PurchLine“. Unter anderem sind weiterhin die Methoden „Update“, „Delete“, „InitValue“, „ValidateField“ und „Delete“ auf die gleiche Weise ?berschrieben.
Ein Blick in die Methoden der Tabelle „PurchTable“ sollte dies verdeutlichen.
Somit ist die Logik, die f?r die Steuerung von Bestellungen in Microsoft Dynamics AX verantwortlich ist, vom Prinzip her vergleichbar mit der Logik welche die Auftr?ge „steuert“ (vergleiche hierzu: Microsoft Dynamics AX API – Teil 1 „Erstellen von Auftr?gen“).
Deswegen ist das Erstellen einer Bestellung genau so einfach wie das Erstellen eines Auftrags. Um eine neue Bestellung zu erstellen muss im Wesentlichen nur:
  1. Eine neue Nummer des entsprechenden Nummernkreises gezogen werden.
  2. Die Methode „InitValue“ der Tabelle „PurchTable“ aufgerufen werden.
  3. Die Methode „InitFromVendTable“ der Tabelle „PurchTable“ mit Angabe des Lieferanten Datensatzes aufgerufen werden.
  4. Die Methode „Insert“ der Tabelle „PurchTable“ aufgerufen werden.
Soll f?r diese gerade erzeugte Bestellung nun noch eine Artikelposition erzeugt werden, muss im Wesentlichen nur die Methode „CreateLine“ der Tabelle „PurchLine“, mit vorheriger Definition von Bestellungsnummer („PurchLine.PurchId“) und Artikelnummer („PurchLine.ItemId“), aufgerufen werden.
Hierzu ein Beispiel:
void createPurchTableAndLine()
{
VendAccount vendAccount = "";
ItemId itemId = "";

PurchTable purchTable;
PurchLine purchLine;
NumberSeq numberSeq;
InventTable inventTable;
;
//Bestellungskopf (PurchTable)
//Neue Bestellungsnummer aus Nummernkreis erzeugen
NumberSeq = NumberSeq::newGetNumFromCode(
PurchParameters::numRefPurchId().numberSequence);
purchTable.PurchId = NumberSeq.num();

//Bestellungskopf initialisieren
purchTable.initValue();

//Initialisierung der lieferantenspezifischen Bestellungsdaten
purchTable.initFromVendTable(VendTable::find(vendAccount));

//Bestellungskopf erstellen
purchTable.insert();

//Bestellungsposition (PurchLine)
purchLine.clear();

//Zuweisen von Bestellungsnummer und Artikelnummer
purchLine.purchId = purchTable.PurchId;
purchLine.ItemId = itemId;

//Bestellungsposition erstellen (ruft PurchLine.insert auf)
purchLine.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...
Старый 04.09.2007, 11:46   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Программное создание закупок.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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 1 „Erstellen von Auftr?gen“ Blog bot DAX auf Deutsch 0 17.08.2007 20:54
Сергей Герасимов: Что нового в Microsoft Dynamics AX 4.0 Blog bot DAX Blogs 0 16.01.2007 11:00

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

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

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