Я использую запрос для поиска пересечения элементов из запроса, т.е. в каком методе таблицы\поля из запроса одновременно используются:
X++:
select distinct p2.Path
from xRefPaths p
join xRefReferences r on r.ReferencePathRecId = p.RecId
join xRefPaths p2 on p2.RecId = r.xRefPathRecId
join xRefNames n on n.RecId = r.xRefNameRecId
where p.PATH = '\Data Dictionary\Tables\DIMENSIONATTRIBUTEVALUESETITEM'
INTERSECT
select distinct p2.Path
from xRefPaths p
join xRefReferences r on r.ReferencePathRecId = p.RecId
join xRefPaths p2 on p2.RecId = r.xRefPathRecId
join xRefNames n on n.RecId = r.xRefNameRecId
where p.PATH = '\Data Dictionary\Tables\DIMENSIONATTRIBUTEVALUESETITEM\FIELDS\DIMENSIONATTRIBUTEVALUESET'
INTERSECT
<...>
Т.е. для запроса из примера по ссылке:
X++:
SELECT
T1.REFERENCEDISTRIBUTION,
T4.EXCHANGERATE1,
T4.EXCHANGERATE2,
T4.REPORTINGEXCHANGERATE1,
T4.REPORTINGEXCHANGERATE2
FROM
tempdb."DBO".t100007_18B95DDA3C21488C85AC09C9FEB59FE5 T1
CROSS JOIN ACCOUNTINGDISTRIBUTION T2
CROSS JOIN SUBLEDGERJOURNALACCOUNTENTRYDISTRIBUTION T3
CROSS JOIN SUBLEDGERJOURNALACCOUNTENTRY T4
WHERE ((T1.PARTITION = @P1) AND (T1.REFERENCEDISTRIBUTION <> @P2))
AND ((T2.PARTITION = @P3) AND (T2.RECID = T1.REFERENCEDISTRIBUTION))
AND ((T3.PARTITION = @P4) AND (T3.ACCOUNTINGDISTRIBUTION = T1.REFERENCEDISTRIBUTION))
AND ((T4.PARTITION = @P5) AND (T4.RECID = T3.SUBLEDGERJOURNALACCOUNTENTRY))
GROUP BY
T1.REFERENCEDISTRIBUTION,
T4.EXCHANGERATE1,
T4.EXCHANGERATE2,
T4.REPORTINGEXCHANGERATE1,
T4.REPORTINGEXCHANGERATE2
ORDER BY
T1.REFERENCEDISTRIBUTION,
T4.EXCHANGERATE1,
T4.EXCHANGERATE2,
T4.REPORTINGEXCHANGERATE1,
T4.REPORTINGEXCHANGERATE2
будет запрос:
X++:
select distinct p2.Path
from xRefPaths p
join xRefReferences r on r.ReferencePathRecId = p.RecId
join xRefPaths p2 on p2.RecId = r.xRefPathRecId
join xRefNames n on n.RecId = r.xRefNameRecId
where p.PATH = '\Data Dictionary\Tables\ACCOUNTINGDISTRIBUTION'
INTERSECT
select distinct p2.Path
from xRefPaths p
join xRefReferences r on r.ReferencePathRecId = p.RecId
join xRefPaths p2 on p2.RecId = r.xRefPathRecId
join xRefNames n on n.RecId = r.xRefNameRecId
where p.PATH = '\Data Dictionary\Tables\SUBLEDGERJOURNALACCOUNTENTRYDISTRIBUTION'
INTERSECT
select distinct p2.Path
from xRefPaths p
join xRefReferences r on r.ReferencePathRecId = p.RecId
join xRefPaths p2 on p2.RecId = r.xRefPathRecId
join xRefNames n on n.RecId = r.xRefNameRecId
where p.PATH = '\Data Dictionary\Tables\SUBLEDGERJOURNALACCOUNTENTRY'
INTERSECT
select distinct p2.Path
from xRefPaths p
join xRefReferences r on r.ReferencePathRecId = p.RecId
join xRefPaths p2 on p2.RecId = r.xRefPathRecId
join xRefNames n on n.RecId = r.xRefNameRecId
where p.PATH = '\Data Dictionary\Tables\AccountingDistributionTmpJournalize'
Итого:
\Classes\SubledgerJournalizer\loadaccountingDistributionTmp
\Classes\SubledgerJournalizer\loadReferenceDistributionInformation
\Classes\SubledgerJournalizer\PSALoadaccountingDistReleaseTmp
Предварительно превращаем tableid временной таблицы в имя джобом:
X++:
info(strFmt("%1", tableId2name(100007)));
Можно докинуть еще блоки INTERSECT + select для уменьшения кол-ва выходных данных.