Недавно мне пришлось решать следующую задачу. Выгрузить в плоскую таблицу агрегированные данные по документам реализации за большой период. От решения в лоб, когда запросом выбирались данные за весь период, я отказался по причине того, что сохранение полученного табличного документа в файл в формате Excel могло вызвать большой расход памяти на сервер. Поэтому исходный период был разбит на более мелкие интервалы, для каждого из которых формировался отдельный файл. Склеивание общего файла выполнялось с помощью рекуррентной функции попарного соединения начальных и промежуточных файлов. Схема, приведенная в заголовке статьи, иллюстрирует данный процесс за исключением того, что стрелки должны быть направлены снизу вверх. Интерес может представлять именно эта функция. На вход функции подается массив, содержащий пути к промежуточным файлам, которые расположены в порядке создания и, как следствие, интервалов. Второй параметр это ссылка на com соединение с Excel.
Функция ОбъединитьФайлыПопарно(вхМассив,Excel)
если вхМассив.ВГраница()=1 тогда
возврат истина;
конецесли;
нМакс=(вхМассив.ВГраница()-вхМассив.ВГраница()%2);
мМассив=новый массив;
мМассив.Добавить();
инфо=новый СообщениеПользователю;
для н=1 по нМакс цикл
СоединитьФайлы(вхМассив[н],вхМассив[н+1],Excel);
УдалитьФайлы(вхМассив[н+1]);
инфо.Текст="удален файл "+вхМассив[н+1];
инфо.Сообщить();
мМассив.Добавить(вхМассив[н]);
н=н+1;
конеццикла;
если нМакс<вхМассив.ВГраница() тогда
СоединитьФайлы(вхМассив[нМакс-1],вхМассив[нМакс+1],Excel);
УдалитьФайлы(вхМассив[нМакс+1]);
инфо.Текст="удален файл "+вхМассив[нМакс+1];
инфо.Сообщить();
конецесли;
ОбъединитьФайлыПопарно(мМассив,Excel);
КонецФункции
Приложенная обработка не привязана к какой-либо конфигурации. Симулируется генерация данных на каждый день указанного интервала, при этом в итоговой таблице строки, в которых в колонке Номер стоит простое число, выделяются цветом. Имя итогового файла InfoStart.xls зашито в коде. Все промежуточные файлы создаются во временном каталоге на сервере с последующим удалением. Информация об удаленных файлах выводится в окно сообщений. Вид итоговой таблицы приведен ниже. После завершения процедуры формирования общего файла программа пытается открыть его с помощью команды НачатьЗапускПриложения.
Тестирование обработки выполнялось на платформе 1С:Предприятие 8.3 (8.3.14.1976) и 1С:Предприятие 8.3 (8.3.18.1616). Для работы в клиент-серверном варианте на сервере должен быть установлен Excel.
Форма обработки содержит два поля - Каталог и Период. Формирование итогового файла выполняется по команде Сохранить. Так как эмулируется вывод данных за каждый день, то указывать большой интервал нецелесообразно.