Выполнить такое преобразование очень просто. Но для этого нужно определиться, как мы будем хранить данные таблицы значений: либо это будет массив структур, либо структура структур. Принципиальной разницы тут нет и каждый может выбрать тот вариант, который больше по душе.
Рассмотрим такое преобразование на примере структуры структур:
//создадим выходную структуру ВыходнаяСтруктура = Новый Структура; //обойдем каждую строку таблицы значений Для каждого СтрокаТЗ Из ТаблицаЗначений Цикл //сформируем структуру для каждой строки СтруктураСтроки = Новый Структура; Для каждого Колонка Из ТаблицаЗначений.Колонки Цикл СтруктураСтроки.Вставить(Колонка.Имя, СтрокаТЗ[Колонка.Имя]); КонецЦикла; //и поместим ее в выходную структуру по индексу строки ВыходнаяСтруктура.Вставить("Строка" + ТаблицаЗначений.Индекс(СтрокаТЗ), СтруктураСтроки); КонецЦикла;
Обратите внимание на наличие вложенного цикла. Если планируется использование алгоритма на больших объемах данных, возможно понадобится слегка оптимизировать алгоритм, вынеся вложенный цикл формирования структуры строки за цикл обхода строк.
//создадим выходную структуру ВыходнаяСтруктура = Новый Структура; //создадим шаблон для строки СписокКолонок = ""; Для каждого Колонка Из ТаблицаЗначений.Колонки Цикл СписокКолонок = СписокКолонок + ?(СписокКолонок = "", "", ",") + Колонка.Имя; КонецЦикла; //обойдем каждую строку таблицы значений Для каждого СтрокаТЗ Из ТаблицаЗначений Цикл СтруктураСтроки = Новый Структура(СписокКолонок); //скопируем значения ячеек строки в структуру ЗаполнитьЗначенияСвойств(СтруктураСтроки, СтрокаТЗ); //и поместим их в выходную структуру по индексу строки ВыходнаяСтруктура.Вставить("Строка" + ТаблицаЗначений.Индекс(СтрокаТЗ), СтруктураСтроки); КонецЦикла;
Попробуйте самостоятельно доработать этот вариант используя Массив и функцию СтрСоединить()
Читайте также:
Поделиться страницей в соц.сетях
Особенно нравится оптимизированные алгоритм
А как мне нравится «оптимизированный» вариант. При таком алгоритме, полы выходной структуры будут *ссылаться на структуру которая изменяется в цикле на одну и ту же. Вы получите структуру заполненную одинаковыми структурами, грубо говоря кучу одинаковых полей заполненных последней строкой таблицы. Спасибо классному сайту(((
Спасибо, Артем, за внимательность и конструктивную критику)) Сарказм в первом комментарии был не до конца однозначным))
В коде второго примера опечатка:
»
Для каждого Колонка Из ТаблицаЗначений Цикл
…
»
должно быть
»
Для каждого Колонка Из ТаблицаЗначений.Колонки Цикл
…
«
Спасибо, Михаил!