Строить такие запросы (2 и более OUTER JOIN к одному паренту) на Х++ для таблиц со свойством "SaveDataPerCompany" == "Yes" можно путем добавления фиктивной связи между дочерними таблицами по полю DataAreaId:
PHP код:
ChildTable2.DataAreaId == ChildTable1.DataAreaId || ChildTable2.DataAreaId != ChildTable1.DataAreaId
Например, запрос из первого сообщения примет вид:
PHP код:
while
select SalesName
from contractTable
outer join NumOfDays, Description
from paymTerm
where paymTerm.PaymTermId == contractTable.Payment
outer join Name
from emplTable
where (emplTable.DataAreaId == paymTerm.DataAreaId || emplTable.DataAreaId != paymTerm.DataAreaId) &&
emplTable.EmplId == contractTable.SalesResponsible
Это, естественно, добавит работы парсеру SQL-сервера, но т.к. поле DataAreaId входит во все индексы таблиц со свойством "SaveDataPerCompany" == "Yes", то никаких побочных эффектов (кроме пренебрежимо малого падения скорости) быть не должно.
Аналогично для Query, если у вложенных датасоурсов свойство "FetchMode" == "1:1".