&НаСервере
Процедура ПреобразоватьТаблицуВСтруктуру()
ДеревоЗначений = РеквизитФормыВЗначение("Параметры");
ВхДанные = ДеревоВСтруктуру(ДеревоЗначений);
НастройкиЗаписать(ВхДанные);
КонецПроцедуры
&НаСервере
Функция ДобавитьЗапистьВПараметры(РезультатПараметры, СтрокаДЗ)
ДобавленоВМассив = Ложь;
Если СтрокаДЗ.ТипЗначения = "Массив" Тогда
Если ТипЗнч(РезультатПараметры) = Тип("Массив") Тогда
РезультатПараметры.Добавить(Новый Массив);
ДобавленоВМассив = Истина;
Иначе
РезультатПараметры.Вставить(СтрокаДЗ.Имя, Новый Массив);
КонецЕсли;
ИначеЕсли СтрокаДЗ.ТипЗначения = "Структура" Тогда
Если ТипЗнч(РезультатПараметры) = Тип("Массив") Тогда
РезультатПараметры.Добавить(Новый Структура);
ДобавленоВМассив = Истина;
Иначе
РезультатПараметры.Вставить(СтрокаДЗ.Имя, Новый Структура);
КонецЕсли;
ИначеЕсли СтрокаДЗ.ТипЗначения = "Соответствие" Тогда
Если ТипЗнч(РезультатПараметры) = Тип("Массив") Тогда
РезультатПараметры.Добавить(Новый Соответствие);
ДобавленоВМассив = Истина;
Иначе
РезультатПараметры.Вставить(СтрокаДЗ.Имя, Новый Соответствие);
КонецЕсли;
Иначе
Если СтрокаДЗ.Родитель <> Неопределено И СтрокаДЗ.Родитель.ТипЗначения = "Массив" Тогда
РезультатПараметры.Добавить(СтрокаДЗ.Значение);
ДобавленоВМассив = Истина;
Иначе
РезультатПараметры.Вставить(СтрокаДЗ.Имя, СтрокаДЗ.Значение);
КонецЕсли;
КонецЕсли;
Если ДобавленоВМассив Тогда
УказательНаОбъектВСтруктуре = РезультатПараметры[РезультатПараметры.Количество()-1];
Иначе
УказательНаОбъектВСтруктуре = РезультатПараметры[СтрокаДЗ.Имя];
КонецЕсли;
Возврат УказательНаОбъектВСтруктуре;
КонецФункции
&НаСервере
Процедура ОбработатьВложенныеСтроки(УказательНаОбъектВСтруктуре, СтрокаДЗ)
Если СтрокаДЗ.Строки.Количество() > 0 Тогда
Для Каждого Подстрока Из СтрокаДЗ.Строки Цикл
Если СтрокаДЗ.ТипЗначения = "Массив" Тогда
УказательНаПодОбъектВСтруктуре = ДобавитьЗапистьВПараметры(УказательНаОбъектВСтруктуре, Подстрока);
ОбработатьВложенныеСтроки(УказательНаПодОбъектВСтруктуре, Подстрока);
ИначеЕсли СтрокаДЗ.ТипЗначения = "Структура"
ИЛИ СтрокаДЗ.ТипЗначения = "Соответствие" Тогда
УказательНаПодОбъектВСтруктуре = ДобавитьЗапистьВПараметры(УказательНаОбъектВСтруктуре, Подстрока);
ОбработатьВложенныеСтроки(УказательНаПодОбъектВСтруктуре, Подстрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ДеревоВСтруктуру(ДеревоЗначений)
РезультатПараметры = Новый Структура;
Для Каждого СтрокаДЗ Из ДеревоЗначений.Строки Цикл
УказательНаОбъектВСтруктуре = ДобавитьЗапистьВПараметры(РезультатПараметры, СтрокаДЗ);
ОбработатьВложенныеСтроки(УказательНаОбъектВСтруктуре, СтрокаДЗ);
КонецЦикла;
Возврат РезультатПараметры;
КонецФункции
#КонецОбласти