Можно использовать макроподстановки
Важно помнить что макроподстановка выполняется в момент компиляции, а не в момент исполнения !
X++:
#localmacro.select
#define.Arg(%1)
Select tableName
where ...
#if.arg('exists') exists #endIF
#if.arg('notexists') notexists #endIF
join joinTableName
where ...
#endmacro
static void Job(Args _args)
{
if (flag)
#select('exists');
else
#select('notexists');
while (tableName)
{
next tableName;
}
}
Если один и тот же запрос используется разных местах, можно оформить "глобальный" макрос в дереве AOT,
Нпример: \Macros\InventDimJoin