Данная функция может использоваться как конструктор для создания таблицы или дерева значений из других объектов, имеющих коллекцию колонок, включая РезультатЗапроса. А также дополнения колонок из других коллекций.
// СкопироватьКолонки — Копирует заданные колонки из Источника в Приемник с учетом исключений
//
// Параметры:
// Приемник — ТаблицаЗначений, ДеревоЗначений — коллекция в которой создаются колонки
// Источник — РезультатЗапроса, ТаблицаЗначений, ДеревоЗначений — коллекция из которой копируются свойства колонок
// — СтрокаДереваЗначений, СтрокаТаблицыЗначений — строка коллекции из которой копируются свойства колонок
// ИменаКолонок — Строка — разделенные запятыми имена колонок, которые подлежат копированию
// — Массив, ФиксированныйМассив — массив имен колонок, которые подлежат копированию
// — Неопределено — копируются все колонки с учетом исключений
// ИменаКолонокИсключений — Строка — разделенные запятыми имена колонок, которые исключены из копирования
// — Массив, ФиксированныйМассив — массив имен колонок, которые исключены из копирования
// — Неопределено — нет исключений
//
// Возвращаемое значение:
// — ТаблицаЗначений, ДеревоЗначений — значение параметра Приемник
// Пример:
// Дерево = СкопироватьКолонки(Новый ДеревоЗначений(), РезультатЗапроса);
//
Функция СкопироватьКолонки(Приемник, Знач Источник, Знач ИменаКолонок = Неопределено, Знач ИменаКолонокИсключений = Неопределено) Экспорт
Перем Колонка, КоллекцияИмен, КоллекцияИменИсключений, КолонкиИсточника;
Если ЗначениеЗаполнено(ИменаКолонок) Тогда
Если ТипЗнч(ИменаКолонок) = Тип("Строка") Тогда
КоллекцияИмен = РазложитьСтрокуВМассивПодстрок(ИменаКолонок, ",", Истина, Истина);
Иначе
КоллекцияИмен = ИменаКолонок;
КонецЕсли;
Иначе
КоллекцияИмен = Неопределено;
КонецЕсли;
Если ЗначениеЗаполнено(ИменаКолонокИсключений) Тогда
Если ТипЗнч(ИменаКолонокИсключений) = Тип("Строка") Тогда
КоллекцияИменИсключений = РазложитьСтрокуВМассивПодстрок(ИменаКолонокИсключений, ",", Истина, Истина);
Иначе
КоллекцияИменИсключений = ИменаКолонокИсключений;
КонецЕсли;
Иначе
КоллекцияИменИсключений = Неопределено;
КонецЕсли;
Если ТипЗнч(Источник) = Тип("СтрокаДереваЗначений")
ИЛИ ТипЗнч(Источник) = Тип("СтрокаТаблицыЗначений") Тогда
КолонкиИсточника = Источник.Владелец().Колонки;
Иначе
КолонкиИсточника = Источник.Колонки;
КонецЕсли;
Для Каждого Колонка Из КолонкиИсточника Цикл
Если (КоллекцияИмен = Неопределено ИЛИ КоллекцияИмен.Найти(Колонка.Имя) <> Неопределено)
И (КоллекцияИменИсключений = Неопределено ИЛИ КоллекцияИменИсключений.Найти(Колонка.Имя) = Неопределено)
Тогда
Если ТипЗнч(Источник) = Тип("РезультатЗапроса") Тогда
Приемник.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения, Колонка.Имя, Колонка.Ширина);
Иначе
Приемник.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения, Колонка.Заголовок, Колонка.Ширина);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Приемник;
КонецФункции
Создание схемы компоновки данных программно
ТаблицаЗначений из кроны ДереваЗначений
СформироватьОписаниеКолонок (БСП)
Таблица значений из списка колонок
Преобразование Объекта ДеревоЗначений в Объект ТаблицаЗначений
Вывод данных СКД в таблицу значений (дерево)