Для некоторых типов задач, решаемых на Платформе 1С, часто необходимо сложение таблиц значений. Данная задача обычно решается при помощи двух основных алгоритмов объединения таблиц значений: по строкам и по столбцам. На разных сайтах приводятся различные мнения относительно производительности обоих методов, однако однозначного ответа мне получить не удалось. Пришлось проверить оба способа экспериментально.
Тестирование проводилось на платформе 1С 8.3.19, в качестве слагаемых таблиц брались 2 таблицы по 70 колонок и 500 000 строк. Обе таблицы были одинаковой структуры т.е. совпадали количество и названия колонок.
Результат получился следующий: для данного тестового примера производительность способа №1 получилась на 80% быстрее, чем для способа №2. Таким образом, основным для реализации решения был выбран алгоритм по способу №1. Способ №2 не более чем зарядка для ума.
Вывод: Для реальных проектов рекомендуется способ №1. Для практических задач способ №2 не пригоден.
Ниже приводиться код исполняемых модулей.
Способ №1 - по строкам:
Процедура СложитьТаблицы(ИтоговаяТаб, СлагаемаяТаб) Экспорт
Если ИтоговаяТаб.Количество() = 0 Тогда
ИтоговаяТаб = СлагаемаяТаб;
Возврат;
КонецЕсли;
Для Каждого СтрСлаг ИЗ СлагаемаяТаб Цикл
НовСтр = ИтоговаяТаб.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр,СтрСлаг);
КонецЦикла;
КонецПроцедуры
Способ №2 - по столбцам
Процедура СложитьТаблицы(ИтоговаяТаб, СлагаемаяТаб) Экспорт
Если ИтоговаяТаб.Количество() = 0 Тогда
ИтоговаяТаб = СлагаемаяТаб;
Возврат;
КонецЕсли;
Для Сч = 1 По СлагаемаяТаб.Количество() Цикл
ИтоговаяТаб.Вставить(0);
КонецЦикла;
Для Сч = 0 По СлагаемаяТаб.Колонки.Количество()-1 Цикл
ИтоговаяТаб.ЗагрузитьКолонку(СлагаемаяТаб.ВыгрузитьКолонку(Сч), Сч);
КонецЦикла;
КонецПроцедуры