Имя: Пароль:
1C
 
УФ : Сохранить в настройках формы документа флаг открытия / закрытия группы
0 bvb
 
12.08.25
12:10
Добрый день

Необходимо сохранять настройки свертываемой группы в форме документа  для конкретного пользователя.

В обычных формах я сделал бы сделал так :

&НаКлиенте
Процедура ПриОткрытии(Отказ)                              
    Если ВосстановитьЗначение("Группа1Скрыта") Тогда
       ЭтаФорма.Элементы.ГруппаСодержаниеМатериалов.Скрыть();            
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакртыии()                              
      СохранитьЗначение("Группа1Скрыта "  ,     ЭтаФорма.Элементы.ГруппаСодержаниеМатериалов.Скрыта());

КонецПроцедуры

А Как сделать это в УФ ?
И еще вопрос :
Связано ли как то это, со свойством формы «АвтоматическоеСохранениеДанныхВНастройках» ?
1 Мультук
 
гуру
12.08.25
12:30
1) Ну дык протести под разными пользователями в
-- форме обработки
-- форме документа

и доложи результаты

2) со свойством формы «АвтоматическоеСохранениеДанныхВНастройках» ?

Флажочки на нужных реквизитах нужно еще проставить
2 bvb
 
12.08.25
13:16
(1) Речь идет про форму документа

1. в УФ ВосстановитьЗначение - не понимает : "Процедура или функция с указанным именем не определена (ВосстановитьЗначение)"

2. Пробовал : Добавил чисто реквизит формы с флажком - значение этого реквизита не помнит
3 Fish
 
гуру
12.08.25
13:31
(2) А в свойствах формы СохранениеДанныхВНастройках включал?
4 Fish
 
гуру
12.08.25
13:34
+(3) Проверил, вполне достаточно указать у формы АвтоматическоеСохранениеДанныхВНастройках в "использовать", а у самого реквизита поставить галку "Сохранение".

Всё работает.
5 Волшебник
 
12.08.25
13:34
флаг "Сохранение"
6 bvb
 
12.08.25
14:03
Включил СохранениеДанныхВНастройках
Добавил реквизит формы "ГруппаСодержаниеМатериаловСкрыта"
Поставил на нее галку "Сохранение"

&НаКлиенте
Процедура ПриОткрытии(Отказ)                              
    
    Если ГруппаСодержаниеМатериаловСкрыта Тогда
       ЭтаФорма.Элементы.ГруппаСодержаниеМатериалов.Скрыть();            
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
      ГруппаСодержаниеМатериаловСкрыта = ЭтаФорма.Элементы.ГруппаСодержаниеМатериалов.Скрыта();
КонецПроцедуры

Закрываю со свернутой группой (ПриЗакрытии): ГруппаСодержаниеМатериаловСкрыта  - ИСТИНА
Открываю (ПриОткрытии) : ГруппаСодержаниеМатериаловСкрыта  - ЛОЖЬ (а должно быть по идее ИСТИНА)

ЧЯДНТ ?
7 Волшебник
 
12.08.25
14:13
(6) Добавьте обработчик ПослеОткрытия, который вызывается так:

&НаКлиенте
Процедура ПриОткрытии(Отказ)                              
    
    ПодключитьОбработчикОжидания("ПослеОткрытия", 0.1, Истина);
    
КонецПроцедуры

&НаКлиенте
Процедура ПослеОткрытия()                              
    
    Если ГруппаСодержаниеМатериаловСкрыта Тогда
       ЭтаФорма.Элементы.ГруппаСодержаниеМатериалов.Скрыть();            
    КонецЕсли;
    
КонецПроцедуры
8 Мультук
 
гуру
12.08.25
14:15
(6)

Всё работает (см рис)

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
//Всякое от 1С	
	
   Сообщить("МистаБулево:" + Строка(МистаБулево));
	
КонецПроцедуры
9 Fish
 
гуру
12.08.25
14:20
(6) Можно еще ХранилищеОбщихНастроек использовать.
10 bvb
 
12.08.25
15:05
(7) НЕ работает

(8) ВЫ не поняли . Если выставить реквизит на форме и его поставить руками - да работает

Но мне нужно проанализировать состояние закладки при закрытии и записать булево в реквизит (а на форме этого реквизита нет)

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
      ГруппаСодержаниеМатериаловСкрыта = ЭтаФорма.Элементы.ГруппаСодержаниеМатериалов.Скрыта();
КонецПроцедуры
11 Волшебник
 
12.08.25
15:06
(10) Вытащите его на форму и Видимость=Ложь
12 bvb
 
12.08.25
15:19
(11) Сделал уже (видимость Даже не скрывал)

Не работает

Походу нужно перехватывать ГруппаСодержаниеМатериаловСкрыта = ЭтаФорма.Элементы.ГруппаСодержаниеМатериалов.Скрыта();

Не при закрытиии
13 Волшебник
 
12.08.25
15:23
(12) есть ПередЗакрытием
14 Мультук
 
гуру
12.08.25
15:25
(11)

Удалил реквизит с формы. Всё равно работает
Хотя возможно суть в том, что он "на форме хоть раз побывал"

(12)
Золотые слова (с)

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	
	ПринудительноЗакрытьФорму = Истина;
	
	МистаБулево = не МистаБулево;
КонецПроцедуры
15 bvb
 
12.08.25
15:38
(13) Спасибо - заработало
Реквизит на форме не нужен
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.