Вся беда в том, что если у нас в эту функцию приходит $time_limit = 0, как заметил Анатолий Кирсанов, $end_time у нас не задается, тоесть = NULL и тогда после выдачи первого заказа условие (time() > $end_time) выполняется и вызывается break;.
Выход - добавить проверку на существование $end_time. Примерно на 720 строке в файле /bitrix/modules/sale/general/export.php заменить if(time() > $end_time) на if(isset($end_time) && time() > $end_time).
Выход - добавить проверку на существование $end_time. Примерно на 720 строке в файле /bitrix/modules/sale/general/export.php заменить if(time() > $end_time) на if(isset($end_time) && time() > $end_time).