Добрый день!
Я только начинаю работать с Dynamics AX и многого еще не знаю.
Особенно тяжело дается QueryBuildDataSource
Если у кого случайно завалялась литература по нему, очень-очень прошу поделиться.
Сейчас я вношу поправки в чужом коде, но застряла в тупике и никак не могу решить как поступить.
PHP код:
public void init()
{
QueryBuildDataSource queryBuildDataSource;
;
super();
// Cache the display methods
//
this.cacheAddMethod(tablemethodstr(smmActivities, showFollowUpIcon));
this.cacheAddMethod(tablemethodstr(smmActivities, showDocHanIcon));
// The query on any related datasource should only depend on the currently
// active business relation. So, clear any automaticaly created dynalinks.
//
this.query().dataSourceNo(1).clearDynalinks();
queryBuildDataSource = this.query().dataSourceNo(1).addDataSource(tablenum(smmActivityParentLinkTable));
queryBuildDataSource.relations(true);
queryBuildDataSource.addRange(fieldnum(smmActivityParentLinkTable, ParentType)).value(queryValue(smmActivityParentType::BusRel));
queryBuildDataSource.addRange(fieldnum(smmActivityParentLinkTable, ParentType)).value(queryValue(smmActivityParentType::QuotationLine_ZTR));
queryBuildDataSource.addRange(fieldnum(smmActivityParentLinkTable, ParentType)).value(queryValue(smmActivityParentType::Quotation));
queryBuildDataSource.addDynalink(fieldnum(smmActivityParentLinkTable, RefRecId), smmBusRelTable, fieldnum(smmBusRelTable,RecId));
queryBuildDataSource.addDynalink(fieldnum(smmActivityParentLinkTable, RefRecId), SalesQuotationLine_ztr, fieldnum(SalesQuotationLine,RecId));
queryBuildDataSource.addDynalink(fieldnum(smmActivityParentLinkTable, RefRecId), SalesQuotation, fieldnum(SalesQuotationTable,RecId));
if (element.args() && element.args().record() && element.args().dataset() == tablenum(smmLeadTable))
{
smmLeadTable = element.args().record();
queryBuildRange = queryBuildDataSource.addRange(fieldnum(smmActivityParentLinkTable, RefRecId));
}
}
Связь, которую я создала, возвращает такой SQL запрос
PHP код:
SELECT FIRSTFAST * FROM smmActivities
USING INDEX ActivityNumberIdx
JOIN FIRSTFAST * FROM smmActivityParentLinkTable
WHERE smmActivities.ActivityNumber = smmActivityParentLinkTable.ActivityNumber
AND ((ParentType = 2) OR (ParentType = 17) OR (ParentType = 5))
AND smmBusRelTable.RecId=smmActivityParentLinkTable.RefRecId
AND SalesQuotationLine.RecId=smmActivityParentLinkTable.RefRecId
AND SalesQuotationTable.RecId=smmActivityParentLinkTable.RefRecId
Мне же необходимо добиться такого результата:
PHP код:
SELECT FIRSTFAST * FROM smmActivities
USING INDEX ActivityNumberIdx
JOIN FIRSTFAST * FROM smmActivityParentLinkTable
WHERE smmActivities.ActivityNumber = smmActivityParentLinkTable.ActivityNumber
AND ((ParentType = 2 AND smmBusRelTable.RecId=smmActivityParentLinkTable.RefRecId )
OR (ParentType = 17 AND SalesQuotationLine.RecId=smmActivityParentLinkTable.RefRecId )
OR (ParentType = 5 AND SalesQuotationTable.RecId=smmActivityParentLinkTable.RefRecId))
Ума не приложу как это сделать