目前分類:ERP - Dynamics 365 ( AX) (115)
- Oct 27 Wed 2021 11:09
[D365] SysQuery
- Oct 15 Fri 2021 11:54
[D365FO] COC FORM BUTTON IN D365 CHAIN OF COMMAND
- Jun 02 Wed 2021 16:14
[Dynamics AX/365] 在Dialogs 內加入自訂Lookup 功能
class CustomizedLookup extends RunBase { DialogField fieldAccount; CustAccount custAccount; DialogField dialogField , dialogText1, dialogText2, dialogText3 , dialogText4; str refundreason, commentcs, nextOwnership; DGS_RefundType refundType; DGS_RefundRegister existingRefund; real _refundAmount, _maxRefundAmount; SalesId salesId; public Object dialog() { FormBuildStringControl _stringControl; //Dialog dialog = new Dialog(); DialogRunbase dialog = super();
str strMessage = strFmt("Are you sure you want to create refund register for %1, please provide below details.", salesId); str strTitle = "create refund register"; ; DGS_SalesTableCalculation salesTableCal = DGS_SalesTableCalculation::find(SalesId); select sum(refundamount) from existingRefund where existingRefund.salesid == SalesId; _refundAmount = (salesTableCal.TotalAmount > existingRefund.refundamount)? (salesTableCal.TotalAmount - existingRefund.refundamount):0; if(_refundAmount) { _maxRefundAmount = _refundAmount; Dialog.addText(strMessage); if(salesTableCal.TotalAmount == _refundAmount) { dialogField = dialog.addField(enumStr(DGS_RefundType)); DialogField.value(DGS_RefundType::Full); } else { dialogField = dialog.addField(enumStr(DGS_RefundType)); DialogField.value(DGS_RefundType::Partial); } // add lookup on dialog dialogText1 = dialog.addField(extendedTypeStr(ReasonComment)); _stringControl = dialogText1.control(); _stringControl.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(CustomizedLookup, refundTypelookup), this); //dialogText1 = dialog.addField(extendedTypeStr(String50), 'Refund Reason'); //dialogText1.value('Internal issue'); dialogText2 = dialog.addField(extendedTypeStr(String50), 'Comment (CS)'); dialogText2.limitText(500); dialogText3 = dialog.addField(extendedTypeStr(String50),'Next Ownership'); dialogText3.value('compliance'); dialogText4 = dialog.addField(extendedTypeStr(RealBase), 'Refund Amount'); dialogText4.value(_refundAmount); } else { Error(strFmt('%1 Full Refunded, please check via Refund Register.', SalesId)); } return dialog; } public boolean getFromDialog() { refundType = dialogField.value(); refundreason = dialogText1.value(); commentcs = dialogText2.value(); nextOwnership = dialogText3.value(); _refundAmount = dialogText4.value(); return super(); } public container pack() { return conNull(); } public void run() { if(_refundAmount > _maxRefundAmount) { Error(strFmt('Refund amount %1 over max refund amount %2.', _refundAmount , _maxRefundAmount)); } else { DGS_CreateRefundRegister::createRefundRegister(SalesId,refundType,refundreason,commentcs,nextOwnership, _refundAmount); } } public boolean unpack(container _packedClass) { return true; } public static void main(Args _args) { CustomizedLookup custAmountCalculation = new CustomizedLookup(); if (CustAmountCalculation.prompt()) { CustAmountCalculation.run(); } } public SalesId parmSalesId(SalesId _salesId = salesId) { SalesId = _salesId; return SalesId; } public void refundTypelookup(FormStringControl _control) { Query query = new Query(); QueryBuildDataSource queryBuildDataSource; SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(DGS_ReasonTable), _control); // Create lookup sysTableLookup.addLookupField(fieldNum(DGS_ReasonTable, ReasonType)); sysTableLookup.addLookupField(fieldNum(DGS_ReasonTable, Reason), true); // Setup query queryBuildDataSource = query.addDataSource(tableNum(DGS_ReasonTable)); queryBuildDataSource.addRange(fieldNum(DGS_ReasonTable,ReasonType)).value(enum2Str(DGS_ReasonType::Refund)); sysTableLookup.parmQuery(query); // Perform lookup sysTableLookup.performFormLookup(); } }
- Dec 30 Wed 2020 10:48
[Dynamics AX/365] Postal Address SQL
Below are the sample queries to get the vendors and customers addresses and contact details. Change the code according to your requirement.
All Vendors
SELECT * FROM VENDTABLE WHERE VENDTABLE.DATAAREAID='CEU'
All Addresses - Vendor
SELECT * FROM DirPartyPostalAddressView JOIN VENDTABLE ON DirPartyPostalAddressView.PARTY =VENDTABLE.PARTY
WHERE VENDTABLE.DATAAREAID=''CEU'
All Addresses with Purpose
SELECT LOGISTICSLOCATIONROLE.*,DirPartyPostalAddressView.*,VENDTABLE.* FROM DirPartyPostalAddressView JOIN VENDTABLE ON DirPartyPostalAddressView.PARTY =VENDTABLE.PARTY
JOIN DIRPARTYLOCATIONROLE ON DIRPARTYLOCATIONROLE.PARTYLOCATION =DirPartyPostalAddressView.RECID
JOIN LOGISTICSLOCATIONROLE ON DIRPARTYLOCATIONROLE.LOCATIONROLE =LOGISTICSLOCATIONROLE.RECID
WHERE VENDTABLE.DATAAREAID='CEU'
(Click Organization administration > Setup > Global address book > Address and contact information purpose.)
All Contact Details - Vendor
select * from dirPartyContactInfoView JOIN VENDTABLE ON dirPartyContactInfoView.PARTY =VENDTABLE.PARTY
WHERE VENDTABLE.DATAAREAID='CEU'
--All Customers
--SELECT DIRPARTYTABLE.NAMEALIAS ,CUSTTABLE.* FROM CUSTTABLE JOIN DIRPARTYTABLE ON CUSTTABLE.PARTY =DIRPARTYTABLE.RECID
--WHERE CUSTTABLE.DATAAREAID='CEU'
--All Addresses - Customer
--SELECT DirPartyPostalAddressView.*,CUSTTABLE.PARTY FROM DirPartyPostalAddressView JOIN CUSTTABLE
--ON DirPartyPostalAddressView.PARTY =CUSTTABLE.PARTY
--WHERE CUSTTABLE.DATAAREAID='CEU'
--All Addresses with Purpose - Customer
--SELECT LOGISTICSLOCATIONROLE.NAME,DirPartyPostalAddressView.PARTY,CUSTTABLE.PARTY FROM DirPartyPostalAddressView JOIN CUSTTABLE
--ON DirPartyPostalAddressView.PARTY =CUSTTABLE.PARTY
--JOIN DIRPARTYLOCATIONROLE ON DIRPARTYLOCATIONROLE.PARTYLOCATION =DirPartyPostalAddressView.RECID
--JOIN LOGISTICSLOCATIONROLE ON DIRPARTYLOCATIONROLE.LOCATIONROLE =LOGISTICSLOCATIONROLE.RECID
--WHERE CUSTTABLE.DATAAREAID='CEU'
--All Contact Details - Customer
--select dirPartyContactInfoView.* from dirPartyContactInfoView JOIN CUSTTABLE ON dirPartyContactInfoView.PARTY =CUSTTABLE.PARTY
--WHERE CUSTTABLE.DATAAREAID='CEU'
--Bank Details Customer
--SELECT distinct CUSTTABLE.PARTY ,CUSTTABLE.DATAAREAID ENTITY, CUSTTABLE.ACCOUNTNUM, DIRPARTYTABLE.NAME,Address.ADDRESS ,
--CUSTTABLE.CURRENCY ,CUSTTABLE.CUSTGROUP ,
--CUSTTABLE.PAYMTERMID,CUSTTABLE.TAXGROUP VATGROUP ,CUSTTABLE.CASHDISC ,
--VendBankAccount.ACCOUNTID BankAccount ,VendBankAccount.NAME 'Bank Name' ,VendBankAccount.ACCOUNTNUM 'Bank account number',
--VendBankAccount.RegistrationNum 'Routing Number',VendBankAccount.SWIFTNo,VendBankAccount.BankIBAN
--from CUSTTABLE left outer JOIN VendBankAccount ON VendBankAccount.VENDACCOUNT = CUSTTABLE.ACCOUNTNUM --AND VendBankAccount.ACCOUNTID = CUSTTABLE.BANKACCOUNT
--left outer join DIRPARTYTABLE ON DIRPARTYTABLE.RECID = CUSTTABLE.PARTY
--left outer join LOGISTICSPOSTALADDRESS AS Address ON Address.LOCATION = DIRPARTYTABLE.PRIMARYADDRESSLOCATION
-- WHERE CUSTTABLE.DATAAREAID IN ('CEU') --and CUSTTABLE.ACCOUNTNUM ='test033'
--Order by CUSTTABLE.DATAAREAID,CUSTTABLE.ACCOUNTNUM
Below SQL Query to extract a quick customer contact list from Dynamics AX 2012.
REF
REF
SELECT
VENDTABLE.ACCOUNTNUM AS CUSTID,
DIRPARTYTABLE.NAME AS CUSTNAME,
CASE LOGISTICSELECTRONICADDRESS.TYPE WHEN 1 THEN 'Phone' WHEN 2 THEN 'Email' END AS CONTACTTYPE,
LOGISTICSELECTRONICADDRESS.DESCRIPTION AS CONTACTNAME,
LOGISTICSELECTRONICADDRESS.LOCATOR AS CONTACTDETAILS
FROM DIRPARTYTABLE AS DIRPARTYTABLE
INNER JOIN VENDTABLE ON DIRPARTYTABLE.RECID = VENDTABLE.PARTY
INNER JOIN DIRPARTYLOCATION ON DIRPARTYTABLE.RECID = DIRPARTYLOCATION.PARTY
INNER JOIN LOGISTICSELECTRONICADDRESS ON DIRPARTYLOCATION.LOCATION = LOGISTICSELECTRONICADDRESS.LOCATION
WHERE VENDTABLE.DATAAREAID='CEU'
ORDER BY DIRPARTYTABLE.NAME
Vendor Bank Details SQL Query in AX
Vendor Bank Address in X++ Code and save it in CSV in AX
Fetch Customers Primary Address or Vendor Primary Address having Transactions (SQL SERVER Query) in AX D365
Fetch Product Master
SELECT B.DISPLAYPRODUCTNUMBER,DESCRIPTION,NAME,B.SEARCHNAME FROM ECORESPRODUCTTRANSLATION A JOIN ECORESPRODUCT B ON A.PRODUCT =B.RECID WHERE B.DISPLAYPRODUCTNUMBER in ('A0001','A0002')
--Storage Dimensions
select ECORESSTORAGEDIMENSIONGROUPITEM.ITEMID ,ECORESSTORAGEDIMENSIONGROUP.NAME from INVENTTABLE JOIN ECORESSTORAGEDIMENSIONGROUPITEM ON
INVENTTABLE.ITEMID =ECORESSTORAGEDIMENSIONGROUPITEM.ITEMID AND
INVENTTABLE.DATAAREAID =ECORESSTORAGEDIMENSIONGROUPITEM.ITEMDATAAREAID
JOIN ECORESSTORAGEDIMENSIONGROUP ON
ECORESSTORAGEDIMENSIONGROUPITEM.STORAGEDIMENSIONGROUP =ECORESSTORAGEDIMENSIONGROUP.RECID
WHERE INVENTTABLE.DATAAREAID='CEU'
--Tracking Dimensions
select ECORESTRACKINGDIMENSIONGROUPITEM.ITEMID ,ECORESTRACKINGDIMENSIONGROUP.NAME from INVENTTABLE JOIN ECORESTRACKINGDIMENSIONGROUPITEM ON
INVENTTABLE.ITEMID =ECORESTRACKINGDIMENSIONGROUPITEM.ITEMID AND
INVENTTABLE.DATAAREAID =ECORESTRACKINGDIMENSIONGROUPITEM.ITEMDATAAREAID
JOIN ECORESTRACKINGDIMENSIONGROUP ON
ECORESTRACKINGDIMENSIONGROUPITEM.TRACKINGDIMENSIONGROUP =ECORESTRACKINGDIMENSIONGROUP.RECID
WHERE INVENTTABLE.DATAAREAID='CEU'
--Item Model Group Units
select * from INVENTTABLEMODULE where DATAAREAID='CEU'
--Released Products
Select * from INVENTTABLE where DATAAREAID='CEU'
--Item Group
select * from INVENTITEMGROUPITEM where ItemDATAAREAID='CEU'
Vend Open Trans
SELECT VENDTRANS.ACCOUNTNUM,VendTrans.VOUCHER,VendTrans.Invoice,VendTrans.TRANSDATE AS DueDate,VendTrans.AmountCur, VendTrans.AmountCur-VendTrans.SETTLEAMOUNTCUR as BalanceAmount
FROM VENDTRANS
where VENDTRANS.closed = 0
AND ((VendTrans.TransType = 36)
OR (VendTrans.TransType = 3) --Purch
OR (VendTrans.TransType = 14)) --Vend
AND ((VendTrans.AmountCur<=0)) AND ((VendTrans.Approved = 1))
--AND VENDTRANS.ACCOUNTNUM = '1001' AND VENDTRANS.DATAAREAID = 'USMF'
SELECT VENDTRANS.ACCOUNTNUM,VendTrans.VOUCHER,VendTrans.Invoice,VendTrans.TRANSDATE AS DueDate,VendTrans.AmountCur, VendTrans.AmountCur-VendTrans.SETTLEAMOUNTCUR as BalanceAmount ,*
FROM VENDTRANS where
--where VENDTRANS.closed = 0
--AND ((VendTrans.TransType = 36) OR (VendTrans.TransType = 3)
-- OR (VendTrans.TransType = 14)) AND ((VendTrans.AmountCur<=0)) AND ((VendTrans.Approved = 1))
VENDTRANS.DATAAREAID = 'pui'
SELECT VENDTRANS.ACCOUNTNUM,VendTrans.VOUCHER,VendTrans.Invoice,VendTrans.TRANSDATE AS DueDate,VendTrans.AmountCur, VendTrans.AmountCur-VendTrans.SETTLEAMOUNTCUR as BalanceAmount
FROM VENDTRANS
where VENDTRANS.closed = 0 and
VENDTRANS.DATAAREAID = 'pui'
AND ((VendTrans.TransType = 36) --RTax25_BadDebtDebitAmortisation
OR (VendTrans.TransType = 3) --Purch
OR (VendTrans.TransType = 14)) --Vend
AND ((VendTrans.AmountCur<=0)) AND ((VendTrans.Approved = 1))
--AND VENDTRANS.ACCOUNTNUM = '1001' AND VENDTRANS.DATAAREAID = 'USMF'
- Dec 03 Thu 2020 14:08
[Dynamics AX/365] 簡易解開Workspace LOCK
1. 找尋workspace, server 的資料:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE>TF.exe workspaces /owner:* /computer:*
- Nov 10 Tue 2020 15:33
[Dynamics AX/365] 如何自定義標準EXCEL模板 - Customize standard excel template
目的: 加financial dimension 入去excel template
1. 第一, 要先將自家的financial dimension 加入ODATA (之前有篇教學)
- Nov 03 Tue 2020 15:14
[Dynamics AX/365] 用SQL 尋找AXDB 內table id, field id...
- Oct 30 Fri 2020 15:21
[Dynamics AX/365] Create a Cloud Hosted D365 for Operations Environment創建用於操作環境的雲託管D365
- Open lcs.dynamics.com in your web browser.
- Log in with your credentials.
- Select the LCS project you want to add a Azure subscription to from the list.
- Click the Hamburger menu button.
- Select Cloud-hosted environments from the list.
- On the Cloud-hosted environments page, click Add.
- On the Select environment topology page, select Azure.
- On the next Select environment topology page, select DEMO. (Now as a side note, you can select DEVTEST - however this requires that you have configured Visual Studio Team Services in your LCS project, which I have not shown yet.) I will post again about the differences between the two environments.)
- On the next Select environment topology page, select Dynamics 365 for Operations - Develop (Release 1611, Platform Update 4). (This is the most current release - but obviously you can pick any version of the software you want.)
- On the Deploy environment page, type a unique name in the Environment name field.
- In the grid for the virtual machines, Use the Size drop-down to select D13 v2 for both images. (This is the biggest, fastest server you can choose. This is not required, but you can pick any size you want really. This will change your costs for hosting the environment as well.)
- Click Advanced settings.
- Oct 30 Fri 2020 10:45
[Dynamics AX/365] CompView 例子
public class InventSum_View extends common
{
private static str prepareInventPhyStr(str key)
{
#define.ViewName(InventSum_View)
#define.DataSourceName("InventSum")
#define.FieldPostedQty("postedQty")
#define.FieldPostedValue("PostedValue")
#define.FieldPhysicalValue("PhysicalValue")
str sReturn,
postedQty,
postedValue,
PhysicalValue;
DictView dictView2;
// Construct a DictView object for the present view.
dictView2 = new DictView(tableNum(#ViewName));
postedQty = dictView2.computedColumnString
(#DataSourceName,
#FieldPostedQty,
FieldNameGenerationMode::FieldList,
true);
postedValue = dictView2.computedColumnString
(#DataSourceName,
#FieldPostedValue,
FieldNameGenerationMode::FieldList,
true);
physicalValue = dictView2.computedColumnString
(#DataSourceName,
#FieldPhysicalValue,
FieldNameGenerationMode::FieldList,
true);
switch(key)
{
case "Cost":
sReturn = "CASE WHEN sum(" + postedQty + ") = 0 OR sum(" + postedQty + ") IS NULL "
+ " THEN 0 "
+ " ELSE sum(" + postedValue + ") / sum(" + postedQty + ")"
+ " END";
break;
case "PostedQty":
sReturn ="sum("
+ postedQty
+ ")" ;
break;
case "PostedValue":
sReturn ="sum("
+ PostedValue
+ ")" ;
break;
}
return sReturn;
}
private static server str compCostMethod()
{
str sReturn;
sReturn = InventSum_View::prepareInventPhyStr("Cost");
return sReturn;
}
private static server str compPosteQtyMethod()
{
str sReturn;
sReturn = InventSum_View::prepareInventPhyStr("PostedQty");
return sReturn;
}
private static server str compPostedValueMethod()
{
str sReturn;
sReturn = InventSum_View::prepareInventPhyStr("PostedValue");
return sReturn;
}
}
2. CAL ROW VIEW:
- Oct 22 Thu 2020 09:27
[Dynamics AX/365] Event 合集
[DataEventHandler(tableStr(CustTable), DataEventType::Inserting)]
public static void CustTable_onInserting(Common sender, DataEventArgs e)
{
CustTable custTable = sender as CustTable;
custTable.inventSiteId = InventParameters::find().DGS_MainInventSiteId;
CustTable.InventLocation = InventParameters::find().DGS_MainInventLocationId;
if(!CustTable.CustGroup)
CustTable.CustGroup = THK_FileInterfaceParameters::find().CustGroupId;
if(!CustTable.DGS_CustNature)
CustTable.DGS_CustNature = THK_FileInterfaceParameters::find().DGS_CustNature;
}
/// <summary>
///
/// </summary>
/// <param name="args"></param>
[PreHandlerFor(tableStr(CustTable), tableMethodStr(CustTable, validateWrite))]
public static void CustTable_Pre_validateWrite(XppPrePostArgs args)
{
CustTable custTable = args.getThis() as CustTable;
if(!CustTable.CustGroup)
CustTable.CustGroup = THK_FileInterfaceParameters::find().CustGroupId;
if(!CustTable.DGS_CustNature)
CustTable.DGS_CustNature = THK_FileInterfaceParameters::find().DGS_CustNature;
}
In Table Datasource Events --> right click on Init Value--> Copy Post Event Handlers
Create new Class and below code
Table Method Event Handler
class test_PurchTableEventHanlders
{
/// <summary>
///
/// </summary>
/// <param name="args"></param>
[PostHandlerFor(tableStr(PurchTable), tableMethodStr(PurchTable, initValue))]
public static void PurchTable_Post_initValue(XppPrePostArgs args)
{
PurchTable purchTable = args.getThis() as PurchTable;
purchTable.test_PrintNote=NoYes::Yes;
}
}
- Oct 20 Tue 2020 15:55
[Dynamics AX/365] Create New Sales Order - Popup form by X++
[DataSource]
class SalesTable
{
/// <summary>
///
/// </summary>
/// <param name = "_append"></param>
public void create(boolean _append = false)
{
SalesTableForm salesTableForm;
super(_append);
salesTableForm = SalesTableForm::construct(SalesTableFormId::None, element.args().record());
if (salesTableForm.create())
{
SalesTable newSalesTable = salesTableForm.salesTable();
if (newSalesTable)
{
// refresh screen on datasource:
salesTable.data(newSalesTable);
salesTable_ds.setCurrent();
salesTable_ds.executeQuery();
Args args = new Args();
args.record(newSalesTable);
MenuFunction menuFunction = new MenuFunction(menuitemDisplayStr(SalesTable), MenuItemType::Display);
menuFunction.run(args);
}
}
}
}
- Oct 20 Tue 2020 15:14
[Dynamics AX/365] FormRun 用法 wait, detach
- Sep 30 Wed 2020 14:24
[Dynamics AX/365] InventDim InventBatch Display
[ExtensionOf(formStr(InventOnhandItem))]
final class DGS_InventOnhandItem_Extension
- Sep 09 Wed 2020 10:31
[Dynamics AX/365] register Overiride Method - 取代本來的METHOD
/// <summary>
/// 在POST Run時用新method 取代本來的method
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[FormEventHandler(formStr(WMSJournalTable), FormEventType::PostRun)]
public static void WMSJournalTable_OnPostRun(xFormRun sender, FormEventArgs e)
{
FormDateControl formCtrl = sender.design().controlName(formControlStr(WMSJournalTable, WMSJournalTrans_DGS_ExpDate));
formCtrl.registerOverrideMethod(methodStr(FormDateControl, jumpRef), methodStr(DGS_WMSJournalTableForm_Extension, DGS_ExpDate_jumpRefId), sender);
FormFunctionButtonControl formMenuCtrl = sender.design().controlName(formControlStr(WMSJournalTable, PostJournal));
formMenuCtrl.registerOverrideMethod(methodStr(FormFunctionButtonControl, clicked), methodStr(DGS_WMSJournalTableForm_Extension, PostJournal_clicked), sender);
}
另外開一個extension:
- Aug 25 Tue 2020 10:35
[Dynamics AX/365] Configuration Key not enable for the entity
前幾天,當我嘗試為Dynamics 365 Finance and Operations測試自定義數據實體時,收到此錯誤“Configuration key not enabled for the entity”。 我之前在另一個項目上曾見過該錯誤,但完全忘記瞭如何修復它。 如果是新刷新的環境,或者您創建了自定義數據實體,並嘗試首次使用它,則可能導致此錯誤。 解決方案是刷新數據實體列表,並且我將在本文中逐步詳細介紹如何進一步執行此操作。
- Aug 21 Fri 2020 11:40
[Dynamics AX/365] TimeZone
分享有關Dynamics AX 2012中使用的時區和用於在SQL中存儲UTCDateTime值的TZId值的概述。
Timezone description | TimeZone | TZId field |
---|---|---|
(GMT-12:00) International Date Line West | 24 | 24001 |
(GMT-11:00) Midway Island, Samoa | 65 | 65001 |
(GMT-10:00) Hawaii | 39 | 39001 |
(GMT-09:00) Alaska | 2 | 2001 |
(GMT-08:00) Pacific Time (US & Canada) | 58 | 58001 |
(GMT-08:00) Tijuana, Baja California | 59 | 59001 |
(GMT-07:00) Arizona | 75 | 75001 |
(GMT-07:00) Mountain Time (US & Canada) | 47 | 47001 |
(GMT-07:00) Chihuahua, La Paz, Mazatlan | 48 | 48001 |
(GMT-06:00) Central America | 15 | 15001 |
(GMT-06:00) Central Time (US & Canada) | 21 | 21001 |
(GMT-06:00) Guadalajara, Mexico City, Monterrey | 22 | 22001 |
(GMT-06:00) Saskatchewan | 11 | 11001 |
(GMT-05:00) Bogota, Lima, Quito, Rio Branco | 63 | 63001 |
(GMT-05:00) Eastern Time (US & Canada) | 29 | 29001 |
(GMT-05:00) Indiana (East) | 74 | 74001 |
(GMT-04:00) Atlantic Time (Canada) | 6 | 6001 |
(GMT-04:00) La Paz | 64 | 64001 |
(GMT-04:00) Manaus | 17 | 17001 |
(GMT-04:00) Santiago | 57 | 57001 |
(GMT-04:30) Caracas | 85 | 85001 |
(GMT-03:30) Newfoundland | 54 | 54001 |
(GMT-03:00) Brasilia | 28 | 28001 |
(GMT-03:00) Buenos Aires, Georgetown | 62 | 62001 |
(GMT-03:00) Greenland | 36 | 36001 |
(GMT-03:00) Montevideo | 83 | 83001 |
(GMT-02:00) Mid-Atlantic | 45 | 45001 |
(GMT-01:00) Azores | 10 | 10001 |
(GMT-01:00) Cape Verde Is. | 12 | 12001 |
(GMT) Casablanca, Monrovia, Reykjavik | 37 | 37001 |
(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, Londo | 35 | 35001 |
(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna | 79 | 79001 |
(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Pragu | 18 | 18001 |
(GMT+01:00) Brussels, Copenhagen, Madrid, Paris | 60 | 60001 |
(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb | 19 | 19001 |
(GMT+01:00) West Central Africa | 78 | 78001 |
(GMT+02:00) Amman | 43 | 43001 |
(GMT+02:00) Athens, Bucharest, Istanbul | 38 | 38001 |
(GMT+02:00) Beirut | 46 | 46001 |
(GMT+02:00) Minsk | 27 | 27001 |
(GMT+02:00) Cairo | 30 | 30001 |
(GMT+02:00) Harare, Pretoria | 68 | 68001 |
(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius | 33 | 33001 |
(GMT+02:00) Jerusalem | 42 | 42001 |
(GMT+02:00) Windhoek | 51 | 51001 |
(GMT+03:00) Baghdad | 5 | 5001 |
(GMT+03:00) Kuwait, Riyadh | 3 | 3001 |
(GMT+03:00) Moscow, St. Petersburg, Volgograd | 61 | 61001 |
(GMT+03:00) Nairobi | 25 | 25001 |
(GMT+03:00) Tbilisi | 34 | 34001 |
(GMT+03:30) Tehran | 41 | 41001 |
(GMT+04:00) Abu Dhabi, Muscat | 4 | 4001 |
(GMT+04:00) Baku | 9 | 9001 |
(GMT+04:00) Caucasus Standard Time | 84 | 84001 |
(GMT+04:00) Yerevan | 13 | 13001 |
(GMT+04:30) Kabul | 1 | 1001 |
(GMT+05:00) Ekaterinburg | 31 | 31001 |
(GMT+05:00) Islamabad, Karachi, Tashkent | 80 | 80001 |
(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi | 40 | 40001 |
(GMT+05:30) Sri Jayawardenepura | 69 | 69001 |
(GMT+05:45) Kathmandu | 52 | 52001 |
(GMT+06:00) Almaty, Novosibirsk | 50 | 50001 |
(GMT+06:00) Astana, Dhaka | 16 | 16001 |
(GMT+06:30) Yangon (Rangoon) | 49 | 49001 |
(GMT+07:00) Bangkok, Hanoi, Jakarta | 66 | 66001 |
(GMT+07:00) Krasnoyarsk | 56 | 56001 |
(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi | 23 | 23001 |
(GMT+08:00) Irkutsk, Ulaan Bataar | 55 | 55001 |
(GMT+08:00) Kuala Lumpur, Singapore | 67 | 67001 |
(GMT+08:00) Perth | 77 | 77001 |
(GMT+08:00) Taipei | 70 | 70001 |
(GMT+09:00) Osaka, Sapporo, Tokyo | 72 | 72001 |
(GMT+09:00) Seoul | 44 | 44001 |
(GMT+09:00) Yakutsk | 82 | 82001 |
(GMT+09:30) Adelaide | 14 | 14001 |
(GMT+09:30) Darwin | 7 | 7001 |
(GMT+10:00) Brisbane | 26 | 26001 |
(GMT+10:00) Canberra, Melbourne, Sydney | 8 | 8001 |
(GMT+10:00) Guam, Port Moresby | 81 | 81001 |
(GMT+10:00) Hobart | 71 | 71001 |
(GMT+10:00) Vladivostok | 76 | 76001 |
(GMT+11:00) Magadan, Solomon Is., New Caledonia | 20 | 20001 |
(GMT+12:00) Auckland, Wellington | 53 | 53001 |
(GMT+12:00) Fiji, Kamchatka, Marshall Is. | 32 | 32001 |
(GMT+13:00) Nuku’alofa | 73 | 73001 |
- Aug 05 Wed 2020 10:58
[Dynamics AX/365] Create Number Sequence
Full Set:
- Jul 07 Tue 2020 11:34
[Database] Rebuild Index
- Jun 24 Wed 2020 15:30
[Dynamics AX/D365] 在Query Range 內加入methods
- Jun 23 Tue 2020 15:17
[Dynamics AX/D365] Data Management - 完整加data entity