А при чем здесь initSectionMap()? Это же просто список констант, которые записываются в MAP. Идентификаторы полос отчета. Там просто инициализация и наполнение MAP
Я не очень понимаю, зачем Вам вообще вот эти 2 команды
document.copyDefineNames(1, i);
this.initSectionMap();
Физически же работа происходит так
1. По именам ячеек заполняются ячейки в ШАБЛОНЕ
2. По именам полосы (вот то, что в initSectionMap задается) выделяется секция из шаблона и копируется в итоговый отчет в конце
Т.е. я вообще не понимаю какой смысл в этих играх с переименованием. В этом просто нет смысла. По логике, у Вас в методе CreateReport должно быть что-то вроде такого
X++:
// Инициализация MAP с именами секций отчета
// Один раз в самом начале
this.initSectionMap();
// Выбор первой записи таблиц-источников
// Заполнение первого листа
execute(#header);
execute(#body);
execute(#footer);
// Выбор следующей записи таблиц-источников
// Создаем новый лист
document.insertSheet(0, i, sheetName); // Метод есть и на самом документе
// Выбор листа - не уверен, что это нужно
this.setCurrentWorksheetNum(i);
execute(#header);
execute(#body);
execute(#footer);
// Ну и далее цикл продолжаем
// Выбор следующей записи таблиц-источников
(...)