Настройки формы

1. juntatalor 63 04.09.12 17:25 Сейчас в теме
Задача:
Есть реквизит на форме (булево). Для формы установлено автоматическое сохранение данных в настройках. Нужно, чтобы при первом открытии формы пользователем (т.е. настройки для него не сохранены) реквизит устанавливался в истину, иначе - брался из настроек.

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

Посмотрел ХранилищеНастроекДанныхФорм - там вообще пусто, хотя для других пользователей есть сохраненные натройки. Видимо, хранятся они где-то еще.

Есть какие-то цивилизованные методы решения? Конкретно интересно, можно ли откуда-то вытащить данные, которые хранятся по галочке "автоматическое сохранение данных в настройках".
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. alex_pshkv 24 05.09.12 07:01 Сейчас в теме
(1) juntatalor,
Можно реализовать с помощью дополнительного реквизита "ПервыйВызов" с типом БУЛЕВО
В ПриСозданииНаСервере устанавливать его в Истина
В ПриЗагрузкеДанныхИзНастроекНаСервере присваивать ему Ложь
В ПриОткрытии его анализировать.

Но возможно - это не цивилизованный метод решения :)
9. juntatalor 63 05.09.12 10:53 Сейчас в теме
(8) alex_pshkv, вот, спасибо. Именно так.
2. Akuji 22 04.09.12 17:28 Сейчас в теме
3. juntatalor 63 04.09.12 17:33 Сейчас в теме
Краткость сестра таланта, безусловно. Что поставить? Куда поставить? Вазу на стол?

Установить значение реквизита я установлю, как мне узнать что его нет в сохраненных настройках?
4. ediks 337 04.09.12 18:26 Сейчас в теме
А если использовать событие формы (для УФ)? Аналогичное событие есть для обычных форм:

УправляемаяФорма (ManagedForm)
ПриЗагрузкеДанныхИзНастроекНаСервере (OnLoadDataFromSettingsAtServer)
Синтаксис:

ПриЗагрузкеДанныхИзНастроекНаСервере(<Настройки>)
Параметры:

<Настройки>

Тип: Соответствие.
Настройки формы.
Описание:

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

Вызывается на сервере.
5. juntatalor 63 04.09.12 18:34 Сейчас в теме
Я же написал, что это событие не вызывается, если для текущего пользователя нету ни одной сохраненной настройки.
6. fzt 05.09.12 00:41 Сейчас в теме
При открытии если значение не заполнено - инициализируй чем нужно по дефолту (ложь вроде).
А если настройки есть то нужные тебе события сработают и инициализируешь булево сохраненными значениями.
7. juntatalor 63 05.09.12 03:03 Сейчас в теме
(6) При открытии оно не будет незаполненным, оно будет ложь. Также оно будет ложь при создании на сервере.
10. noviol 07.03.13 10:38 Сейчас в теме
Для типа "булево" можно использовать обратный реквизит, который при первом запуске = ложь, а нужный тогда будет = истина.
А для реквизита любого типа- задавать нужное значение при первом запуске в процедуре ПриСозданииНаСервере. А в обработчике ПриЗагрузкеДанныхИзНастроекНаСервере, который выполняется (если выполняется) после ПриСозданииНаСервере уже будет присваиваться указанное пользователем и сохраненное в настройках.
11. iRounder 104 07.03.13 15:06 Сейчас в теме
ПриСозданииНаСервере выполняется раньше чем ПриЗагрузкеДанныхИзНастроекНаСервере.
Отсюда вывод. В ПриСозданииНаСервере инициализируем параметр как нам угодно, в нашем случае реквизит выставляем в истину.
Если нет сохраненных настроек - он останется. Если есть настройки - то его значение заменится значением из настроек.
Или я не прав?
user656502_roolee10; JUST4LOL; Kasatin_; +3 Ответить
12. cdover 10.06.15 11:44 Сейчас в теме
13. sergiykooo 26.01.23 12:47 Сейчас в теме
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если ДанныеВосстановленыИзНастроек = Ложь Тогда
		ЗагрузкаДанных();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
	
	ДанныеВосстановленыИзНастроек = Истина;
	ЗагрузкаДанных();
	
КонецПроцедуры
Показать
JohnyDeath; +1 Ответить
14. janit 20 27.06.24 14:46 Сейчас в теме
(13)
В вашем примере процедура ЗагрузкаДанных() будет выполнена при открытии формы, без всякого участия пользователя, что в корне неверно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот