пятница, 2 сентября 2016 г.

Как обьединить/слить таблицы значений в одну таблицу значений?

 //функции 'ОбьединитьМассивТаблицЗначений' передается массив таблиц значений для обьединения, к примеру:
Процедуре тест()
  МассивТаблиц = Новый Массив;
  МассивТаблиц.Добавить(МояТаблица1);
  МассивТаблиц.Добавить(МояТаблица2);
  МассивТаблиц.Добавить(МояТаблица3);
  МассивТаблиц.Добавить(МояТаблица4);
  МассивТаблиц.Добавить(МояТаблица5);
  ИтоговаяТаблица = ОбьединитьМассивТаблицЗначений(МассивТаблиц);
КонецПроцедуры

Функция ОбьединитьМассивТаблицЗначений(МассивТаблиц) Экспорт
    Попытка
        Запрос = Новый Запрос();
        //наращиваем запрос
        i = 1;
        Для Каждого ТекущаяТаблица Из МассивТаблиц Цикл   
            Если i = 1 Тогда
                //создать основу запрос
                ТекстВТ = "ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_ТаблицаЗначений1 ИЗ &ТаблицаЗначений1 КАК ВТ_ТаблицаЗначений1;";
                ТекстВыборки = "ВЫБРАТЬ * ИЗ ВТ_ТаблицаЗначений1";
                Запрос.УстановитьПараметр("ТаблицаЗначений1",ТекущаяТаблица);
            Иначе
                //донаростить запрос
                ТекстВТ = ТекстВТ
                +  Символы.ПС + "ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_ТаблицаЗначений" + i + " ИЗ &ТаблицаЗначений" + i + " КАК ВТ_ТаблицаЗначений" + i + ";";
                ТекстВыборки = ТекстВыборки + " ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ * ИЗ ВТ_ТаблицаЗначений" + i;
                Запрос.УстановитьПараметр("ТаблицаЗначений"+i,ТекущаяТаблица);   
            КонецЕсли;
            i = i + 1;   
        КонецЦикла;   
        Запрос.Текст = ТекстВТ + Символы.ПС + ТекстВыборки;
        ИтоговаяТаблица = Запрос.Выполнить().Выгрузить();
        Возврат ИтоговаяТаблица;
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат Неопределено;
    КонецПопытки;
КонецФункции

Комментариев нет:

Отправить комментарий