[英]Get all addresses on the system Dynamics AX 2012
題:
我想知道如何在查詢中獲取系統上的所有地址,包括(客戶,供應商,銀行和稅務機關),並將其放在帶有列( name , address )的視圖中。 因此它將是當事人和非當事人實體。
我想做的事情:
我使用表概念來解決各方的問題:
LogisticsPostalAddress-表包含系統中可以與各種實體關聯的地址。 這是有關地址的主要信息所在的地方,似乎剩下的就是這些地址的額外說明。
CustTable和VendTable對DirPartyTable具有FK。 該BankAccountTable和TaxAuthorityAddress有直接與具有與LogisticsPostalAddress關系LogisticsLocation,在關系Location_FK的關系。
現在的問題是如何構建從客戶,銀行帳戶,供應商和稅務部門獲取地址的查詢 ,並將其放在具有(名稱,地址)對的視圖上?
已編輯
我已經找到了一種使用方法而不是使用查詢來獲取所有地址的方法,雖然效率不高,但是足以滿足我的需求:
1)創建一個表: AllAddresses
例如:帶有字段: 名稱,地址
2)創建工作:
static void GettingAllAddresses(Args _args)
{
CustTable custTable;
VendTable vendTable;
TaxAuthorityAddress taxAuthorityAddress;
LogisticsPostalAddress logisticsPostalAddress;
AllAddresses allAddresses;
;
while select * from custTable
{
allAddresses.Address = custTable.address();
allAddresses.Name = custTable.name();
allAddresses.CustAccount = custTable.AccountNum;
allAddresses.doInsert();
}
//Getting all vendors
while select * from vendTable
{
allAddresses.Address = vendTable.address();
allAddresses.Name = vendTable.name();
allAddresses.doInsert();
}
//Getting all tax authorities addresses
while select * from taxAuthorityAddress
{
allAddresses.Address = TaxAuthorityAddress::address(taxAuthorityAddress.TaxAuthority);
allAddresses.Name = taxAuthorityAddress.Name;
allAddresses.doInsert();
}
//Getting all bank addresses
while select * from bankAccountTable
{
logisticsPostalAddress = LogisticsLocationEntity::location2PostalAddress(bankAccountTable.Location);
allAddresses.Address = logisticsPostalAddress.Address;
allAddresses.Name = bankAccountTable.Name;
allAddresses.doInsert();
}
}
查看如何構建LogisticsEntityPostalAddressView
視圖,它可能已經提供了您所需的信息。 如果LogisticsLocation
表中的Description
字段不夠好,並且您確實需要使用例如BankAccountTable
表中的Name
字段,則需要構建一個類似的視圖。
您可以看到該視圖使用視圖LogisticsEntityLocationView
,該視圖具有一個聯合查詢,該聯合查詢從多個表中提取數據。 您可以構建類似的視圖以從BankAccountTable
, DirPartyTable
和TaxAuthorityAddress
提取Name
字段。
從您的數據庫圖中可以看出,全球通訊簿的關系非常復雜(在許多地方,這確實是不直觀的)。 您似乎未解決的一件事是您獲取的LogisticsPostalAddress是否處於活動狀態(由ValidFrom和ValidTo日期確定)。 AX的代碼可以通過簡單地將ValidTo設置為在提交更改之前2秒鍾,來保留LogisticsPostalAddress中正在更改的地址的當前狀態,並創建一個新的LogisticsPostalAddress記錄,並將ValidTo設置為提交日期,以便將其激活。 如果您沒有對地址進行太多更改,則可能不會有太大問題,但是如果有很多更改,您可能會得到很多不需要的地址記錄。 http://hyperdaptive.com/2016/04/320/上有一篇文章,其中包含一些可能會有所幫助的詳細信息-它還包含一些X ++和SQL代碼,如果您碰巧仍在工作,它們可能會非常有幫助在此。 祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.