На самом деле, батч-сервер отслеживает зависимости между задачами. Для каждой задачи можно задать список зависимостей. Соответственно данная задача будет запущена только после того как завершаться все задачи в ее списке зависимостей.
В SalesFormRun зависимости создаются вызовом:
X++:
if(printout == Printout::After)
{
batchHeader.addDependency(salesFormLetterEndMultiThread,formLetterMultiThread,BatchDependencyStatus::FinishedOrError);
}
Так что гипотеза про бандлы и LIFO - не верна. Система просто тупо запускает (по крйней мере - переводит в статус Ready) все задачи у которых либо нету зависимостей либо все зависимости уже завершились. Если есть большое желание, можно самостоятельно раскопать логику активации задач в классе BatchRun::ServerProcessDependencies...