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