Создать Таблицу значений со структурой по данным источника

Создает таблицу значений со структурой колонок по данным источника. Есть возможность исключить ссылочные типы из обработки. Может обрабатывать типы РезультатЗапроса, ТаблицаЗначений, ВременнаяТаблицаЗапроса

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

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

См. также

Дополнить таблицу значений - приемника данными из таблицы значений - источника

ДополнитьТаблицу (БСП)

ИсточникиДанных (БСП)

Вернуть СКД (источник данных таблица значений)

СкопироватьРекурсивно (БСП)

Работа с универсальными коллекциями данных

НоваяТаблицаДанныхЗаголовкаПакета (БСП)

Передача таблицы значений в запрос

Модератору