Помогите разобраться как сейчас по феншую во внешней обработке сохранять ее параметры?
&НаСервере
Процедура ZAU_СохранитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено)
Настройки = Новый Структура;
Для Каждого Элем ИЗ Элементы Цикл
Если ТипЗнч(Элем) = Тип("ПолеФормы") И ТипЗнч(Элем.Родитель) <> Тип("ТаблицаФормы") Тогда
Если Объект.Свойство(Элем.Имя) Тогда
Настройки.Вставить(Элем.Имя, Объект[Элем.Имя]);
Иначе
Настройки.Вставить(Элем.Имя, ЭтаФорма[Элем.Имя]);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки,, Пользователь);
КонецПроцедуры
&НаСервере
Процедура ZAU_ВосстановитьНастройкиНаСервере(КлючОбъекта, КлючНастроек, Пользователь = Неопределено)
СтруктураНастроек = Неопределено;
Попытка
СтруктураНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта,КлючНастроек, ,Пользователь);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Если СтруктураНастроек <> Неопределено Тогда
Для Каждого Настройка Из СтруктураНастроек Цикл
Если Объект.Свойство(Настройка.Ключ) Тогда
Объект[Настройка.Ключ] = Настройка.Значение;
Иначе
ЭтаФорма[Настройка.Ключ] = Настройка.Значение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать
Пока нашел такой вариант, но смущают два момента:
1. Не удается сохранить табличную часть обработки
2. При записи Объект[Элем.Имя] предполагается что имя поля в реквизитах объекта и имя поля формы должно быть одинаковое.
Может есть иные варианты? Более технологичные с точки зрения 1С решения?
(3) Понятно что существуют различные методы решения проблемы. В т.ч. и организационные. Так и поступил как видно из приведенного мною кода. Просто я в ЭТОЙ платформе начинающий (я про 1С), а методы предыдущей платформы (другая система) не всегда применимы. Думал может есть стандартные рекомендации в рамках технологии построения кода. Спасибо, значит так и буду продолжать, тем более что в ТЧ данной обработки хранится результат а не настройки обработки.
И не надо. Это вредно. Сохраняйте значения ТЧ как обычную ТЗ. И восстанавливайте так же. Табличная часть обработки по сути предназначена для внешнего запуска обработки, а не для открытия формы обработки.
2. При записи Объект[Элем.Имя] предполагается что имя поля в реквизитах объекта и имя поля формы должно быть одинаковое.
Это вопрос религии. И это самое универсальное решение. Иначе для каждой обработки вы можете написать собственные процедуры чтения/сохранения параметров.