HelpF.pro

Преобразование ТаблицыЗначений во временную таблицу

Код 1C v 8.х
 Процедура ПреобразоватьТЗвТЗсОписаниемТипов(ТЗ)
ТипизированнаяТЗ = Новый ТаблицаЗначений;
    Для й=1 По Тз.Количество() Цикл ТипизированнаяТЗ.Добавить(); //Создаем строки
    КонецЦикла;    
    
    ДЗТипов = Новый ДеревоЗначений;
    ДЗТипов.Колонки.Добавить("ИмяКолонки");
    ДЗТипов.Колонки.Добавить("ТипЗначений");
    
    Для Каждого Колонка из Тз.Колонки Цикл
        СтрокаКолонки = ДЗТипов.Строки.Добавить();
        СтрокаКолонки.ИмяКолонки = Колонка.Имя;
        
        ТекСТрокаТипа = СтрокаКолонки.Строки.Добавить();
        ТекСТрокаТипа.ИмяКолонки = Колонка.Имя; //Заполняется для красоты
        ТекСТрокаТипа.ТипЗначений = ТипЗнч(тз[0][Колонка.Имя]);
        Для Каждого СтокаТЗ из Тз Цикл
            ТекТип = ТипЗнч(СтокаТЗ[Колонка.Имя]);
            Если НЕ ТекТип = ТекСТрокаТипа.ТипЗначений Тогда
                Если СтрокаКолонки.Строки.Найти(ТекТип, "ТипЗначений")=Неопределено Тогда
                    ТекСТрокаТипа = СтрокаКолонки.Строки.Добавить();
                    ТекСТрокаТипа.ИмяКолонки = Колонка.Имя;//Заполняется для красоты
                    ТекСТрокаТипа.ТипЗначений = ТекТип;
                КонецЕслИ;
            КонецЕслИ;
        КонецЦикла;
        
        МассивТипов = СтрокаКолонки.Строки.ВыгрузитьКолонку("ТипЗначений");
        ТипизированнаяТЗ.Колонки.Добавить(Колонка.Имя, Новый ОписаниеТипов(МассивТипов),Колонка.Заголовок);
        ТипизированнаяТЗ.ЗагрузитьКолонку(Тз.ВыгрузитьКолонку(Колонка),Колонка.Имя);
    КонецЦикла;
КонецПроцедуры

Источник


Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1823.html