3

Как преобразовать таблицу значений в структуру?

Выполнить такое преобразование очень просто. Но для этого нужно определиться, как мы будем хранить данные таблицы значений: либо это будет массив структур, либо структура структур. Принципиальной разницы тут нет и каждый может выбрать тот вариант, который больше по душе.

Рассмотрим такое преобразование на примере структуры структур:

//создадим выходную структуру
ВыходнаяСтруктура = Новый Структура;
//обойдем каждую строку таблицы значений
Для каждого СтрокаТЗ Из ТаблицаЗначений Цикл
	//сформируем структуру для каждой строки
	СтруктураСтроки = Новый Структура;
	Для каждого Колонка Из ТаблицаЗначений.Колонки Цикл
	    СтруктураСтроки.Вставить(Колонка.Имя, СтрокаТЗ[Колонка.Имя]);
	КонецЦикла;
	//и поместим ее в выходную структуру по индексу строки
	ВыходнаяСтруктура.Вставить("Строка" + ТаблицаЗначений.Индекс(СтрокаТЗ), СтруктураСтроки);
КонецЦикла;

Обратите внимание на наличие вложенного цикла. Если планируется использование алгоритма на больших объемах данных, возможно понадобится слегка оптимизировать алгоритм, вынеся вложенный цикл формирования структуры строки за цикл обхода строк.

//создадим выходную структуру
ВыходнаяСтруктура = Новый Структура;
//создадим шаблон для строки
СписокКолонок = "";
Для каждого Колонка Из ТаблицаЗначений Цикл
	СписокКолонок = СписокКолонок + ?(СписокКолонок = "", "", ",") + Колонка.Имя;
КонецЦикла;
//обойдем каждую строку таблицы значений
Для каждого СтрокаТЗ Из ТаблицаЗначений Цикл
	СтруктураСтроки = Новый Структура(СписокКолонок);
	//скопируем значения ячеек строки в структуру
	ЗаполнитьЗначенияСвойств(СтруктураСтроки, СтрокаТЗ);
	//и поместим их в выходную структуру по индексу строки
	ВыходнаяСтруктура.Вставить("Строка" + ТаблицаЗначений.Индекс(СтрокаТЗ), СтруктураСтроки);
КонецЦикла;

Попробуйте самостоятельно доработать этот вариант используя Массив и функцию СтрСоединить()

Читайте также:

Комментарии

  1. А как мне нравится «оптимизированный» вариант. При таком алгоритме, полы выходной структуры будут *ссылаться на структуру которая изменяется в цикле на одну и ту же. Вы получите структуру заполненную одинаковыми структурами, грубо говоря кучу одинаковых полей заполненных последней строкой таблицы. Спасибо классному сайту(((

    • Спасибо, Артем, за внимательность и конструктивную критику)) Сарказм в первом комментарии был не до конца однозначным))

Добавить комментарий для Александр К. Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *