Стандартный способ объединения двух таблиц значений заключается в организации цикла, в котором строки второй таблицы приписываются в конец копии первой. Для этого используется следующий простой код:
ОбъединениеТаблиц = Таблица1.Скопировать();
Для Каждого Строка Из Таблица2 Цикл ЗаполнитьЗначенияСвойств(ОбъединениеТаблиц.Добавить(), Строка) КонецЦикла
Все возможности оптимизация данного способа ограничиваются записью в одну строку и выбором таблицы с меньшим количеством элементов в качестве источника добавляемых строк.
Предлагаемый трюк заключается в последовательном выполнении трех действий:
Схематичное описание той же последовательности действий приведено на рисунке ниже
Реализация предложенного способа очень проста и выполняется следующим фрагментом программного кода:
ОбъединениеТаблиц = Таблица2.Скопировать();
Для ё = 1 По Таблица1.Количество() Цикл ОбъединениеТаблиц.Вставить(0) КонецЦикла;
Для ё = 0 По Таблица1.Колонки.Количество() - 1 Цикл
ОбъединениеТаблиц.ЗагрузитьКолонку(Таблица1.ВыгрузитьКолонку(ё), ё)
КонецЦикла;
Колонок в таблицах значений обычно всегда значительно меньше, чем строк. Поэтому такой способ содержит меньше отдельных действий и в результате выполняется платформой быстрее построчного копирования. Ускорение зависит от соотношения числа строк и столбцов и может достигать полутора раз.
Автор: ildarovich
Быстрое объединение двух таблиц значений
Быстрое удаление строк в таблице значений
Преобразование отчета на СКД в таблицу значений на табличном документе
Таблица значений с колонкой любого имени (без ограничений используемых символов)
Получение таблицы и массива, заполненных последовательностью чисел от 0 до N-1
Связывание таблиц значений по ФИФО