Сложение таблиц значений. Технологии 1С.

    Для некоторых типов задач, решаемых на Платформе 1С, часто необходимо сложение таблиц значений. Данная задача обычно решается при помощи двух основных алгоритмов объединения таблиц значений: по строкам и по столбцам. На разных сайтах приводятся различные мнения относительно производительности обоих методов, однако однозначного ответа мне получить не удалось. Пришлось проверить оба способа экспериментально.

Тестирование проводилось на платформе 1С 8.3.19, в качестве слагаемых таблиц брались 2 таблицы по 70 колонок и 500 000 строк. Обе таблицы были одинаковой структуры т.е. совпадали количество и названия колонок.

Результат получился следующий: для данного тестового примера производительность способа №1 получилась на 80% быстрее, чем для способа №2. Таким образом, основным для реализации решения был выбран алгоритм по способу №1. Способ №2 не более чем зарядка для ума.

Вывод: Для реальных проектов рекомендуется способ №1. Для практических задач способ №2 не пригоден.

Ниже приводиться код исполняемых модулей.

Способ №1 - по строкам:

Процедура СложитьТаблицы(ИтоговаяТаб, СлагаемаяТаб) Экспорт
      
    Если ИтоговаяТаб.Количество() = 0 Тогда
        ИтоговаяТаб = СлагаемаяТаб;
        Возврат;        
    КонецЕсли;
    
    Для Каждого СтрСлаг ИЗ СлагаемаяТаб Цикл
        НовСтр = ИтоговаяТаб.Добавить();
        ЗаполнитьЗначенияСвойств(НовСтр,СтрСлаг);        
    КонецЦикла;
        
КонецПроцедуры 

Способ №2 - по столбцам

Процедура СложитьТаблицы(ИтоговаяТаб, СлагаемаяТаб) Экспорт
    
    Если ИтоговаяТаб.Количество() = 0 Тогда
        ИтоговаяТаб = СлагаемаяТаб;
        Возврат;        
    КонецЕсли;
         
    Для Сч = 1 По СлагаемаяТаб.Количество() Цикл 
        ИтоговаяТаб.Вставить(0); 
    КонецЦикла;
    
    Для Сч = 0 По СлагаемаяТаб.Колонки.Количество()-1 Цикл
        ИтоговаяТаб.ЗагрузитьКолонку(СлагаемаяТаб.ВыгрузитьКолонку(Сч), Сч);
    КонецЦикла;