А не проще ли будет макет сделать, в него вывести результаты выполнения запроса, а потом записать штатными средствами 1С в экселевский файл?
ТабДок = Новый ТабличныйДокумент;
Макет = ВнешниеОбработки.ВнешняяОбработка1.ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|ЗаказыПокупателейОстатки.Номенклатура,
|ЗаказыПокупателейОстатки.Цена,
|ЗаказыПокупателейОстатки.ЕдиницаИзмерения,
|ЗаказыПокупателейОстатки.КоличествоОстаток,
|ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток,
|ЗаказыПокупателейОстатки.СуммаУпрОстаток
|ИЗ
|РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
|ГДЕ
|ЗаказыПокупателейОстатки.КоличествоОстаток > 0";
Результат = Запрос.Выполнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
ТабДок.Записать(ИмяФайлаЭксель, ТипФайлаТабличногоДокумента.XLS);