Имя: Пароль:
1C
1С v8
Сохранение настроек элементов формы если они не привязаны к данным
0 Aleksey_a_z
 
18.11.11
09:25
Есть элементы на форме которые в зависимости от выбора поля сравнения принимают тип значения либо справочник ссылка либо список значений.
Проблема в том что не могу сохранять настройки формы. Как можно выбраться из ситуации?
1 Aleksey_a_z
 
18.11.11
09:28
(0) поправлю себя, сохранение не настроек а значений
2 vmv
 
18.11.11
09:56
платформа, сэр?
3 Aleksey_a_z
 
18.11.11
10:01
8.2
4 vmv
 
18.11.11
10:10
(3) если реквизит формы не привязан к данным, то в окне реквизитов формы достаточно выставить флаг "Сохранение", открыв палитру свойств реквизита.

вроде де бы все, но не тут то было)

Если этот флаг был выставлен и форма "запомнила" значение реквизита, а потом в конфигураторе сменить его тип или имя, то преодопределенный обработчки формы ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) просто не отработает и ничего не востаноит.

Выхода 2.

1. Снать флаг "сохранение" у модифицированного по типу-имени реквизита и переоткрыть форму в приложении, чтобы сервер "запомнил" новое сохранение

2. В обработчике ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки) проверять корректность поставляемых сервером ранее сохраненных значений с актуальным набором типов реквизитов формы и в случае обнаружения неактуальности сохранееного значения существующему - править в этом обработчике.

усе
5 vmv
 
18.11.11
10:13
(4) добавление множественно типа или добавление(удаление) типа из описания типов реквизитов будет рассматриваться обработчиком ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) как "некорректность" и он просто не будет работать, хотя форма откроется.

возможно такая ситуация - это недосмотр разработчиков, на 8.2.14.540 не проверял. все описанное справедливо для 8.214.528 и ниже
6 Aleksey_a_z
 
18.11.11
12:29
(4) это для управляемых форм? Не пойму про какое окно реквизитов идет речь, свойства реквизита? Но там нет флага "Сохранение".
7 vmv
 
18.11.11
12:36
(6) да - для управляемых, все остальное мне не интересно - это вчерашний день и тратить время на динозавров смысла не вижу, увы)
8 vmv
 
18.11.11
12:42
(6) для обычных форм в свойствах формы есть список сохранения где можно установить сохраняемые элементы формы, но они будут сохраняться при нажатиии на форме стандарной кнопки "Сохранить", которая обычно закрыта.

Универсальный и безотказый способ для обычных формы обработчики событий формы

Процедура ПриОткрытии(Отказ)
   
           
       ФлагТекущий = ВосстановитьЗначение("Add_УДУ_Загрузчик_ОбновлятьСуществующие");    
       Если ФлагТекущий = Неопределено Тогда
           ФлагТекущий = Истина;
       КонецЕсли;
       Объект.ОбновлятьСуществующие = ФлагТекущий;
       
       
       ЗначениеТекущее = ВосстановитьЗначение("Add_УДУ_Загрузчик_ОбрабатыватьНеБолее");    
       Если ЗначениеТекущее = Неопределено Тогда
           Объект.ОбрабатыватьНеБолее = 0;
       Иначе
           Объект.ОбрабатыватьНеБолее = ЗначениеТекущее;
       КонецЕсли;
   
   
КонецПроцедуры

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
   
           
       СохранитьЗначение("Add_УДУ_Загрузчик_ОбновлятьСуществующие", Объект.ОбновлятьСуществующие);
       
       СохранитьЗначение("Add_УДУ_Загрузчик_ОбрабатыватьНеБолее"            , Объект.ОбрабатыватьНеБолее);
   
КонецПроцедуры

Используй их и не томись сомненьем
Ибо печаль в умах ведет к глумленьям

все остальное от лукавого)