Сохранение настроек при закрытии обычной формы

1. G_108408780541402684893 08.11.23 10:13 Сейчас в теме
Как можно сохранить отбор при закрытии обычной формы? Как здесь https://infostart.ru/1c/articles/88010/ но только для обычной формы и не динамического списка?
По теме из базы знаний
Найденные решения
11. G_108408780541402684893 10.11.23 13:07 Сейчас в теме
В итоге такое решение:

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	ПараметрыОтбор1 =Новый Структура;
	ПараметрыОтбор1 = ЭтаФорма.Отбор;
	СохранитьЗначение("ПараметрыОтбор1",ПараметрыОтбор1);
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
ПараметрыОтбор1 = ВосстановитьЗначение("ПараметрыОтбор1");
	Если ПараметрыОтбор1<>Неопределено Тогда
		Для каждого Эл из ПараметрыОтбор1 Цикл
			Если Эл.Использование = Истина Тогда
				Имя2 = Эл.Имя;
				ЗаполнитьЗначенияСвойств(Список.Отбор.Найти( Имя2 ), Эл);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. mpudy 08.11.23 10:53 Сейчас в теме
Для толстого клиента доступны СохранитьЗначение и ВосстановитьЗначение которые могут сохранять значения произвольного типа под указаным именем.
4. G_108408780541402684893 08.11.23 12:50 Сейчас в теме
(2)
Нашел как обращаться к этому значению в обработке, но как туда передать что я хочу сохранить? Какое-то наименование строкой передается
Прикрепленные файлы:
5. G_108408780541402684893 08.11.23 12:51 Сейчас в теме
(2)Может есть пример кода?
6. independ 1542 08.11.23 13:04 Сейчас в теме
(5) Сохранить отбор в форме списка? скриншот формы (отбора) можно увидеть?
7. G_108408780541402684893 08.11.23 13:17 Сейчас в теме
(6)
Прикрепленные файлы:
10. mpudy 08.11.23 15:59 Сейчас в теме
(7)
На обычных формах есть встроенный функционал - история отборов, в два клика можно восстановить любой с ~10 последних.
9. mpudy 08.11.23 15:51 Сейчас в теме
(5)
Написал за минуту на коленке, возможно не заработает для диапазонов или его-то подобного.
После вставки кода нужно процедуры подвязать к событиям формы.
Процедура ПриЗакрытии()	
	СохранитьЗначение(КлючУникальностиМодуля(), Отбор);	
КонецПроцедуры

Процедура ПриОткрытии()	
	ОтборСохраненныйРанее = ВосстановитьЗначение(КлючУникальностиМодуля());
	Если ОтборСохраненныйРанее <> Неопределено Тогда 
		Для Каждого ЭлементОтбора из ОтборСохраненныйРанее Цикл 
			ЗаполнитьЗначенияСвойств(Отбор.Найти( ЭлементОтбора.Имя ), ЭлементОтбора);
		КонецЦикла;
	КонецЕсли; 	
КонецПроцедуры

Функция КлючИмениОтбора()
	Возврат "Например, полное имя модуля/формы, по красоте - получать с метаданных, но лень думать как" + "_Отбор";
КонецФункции
Показать
3. jmw 60 08.11.23 12:07 Сейчас в теме
СохранитьЗначение/ВосстановитьЗначение работает только для текущего пользователя.

Лучше так:

ОчиститьСообщения();

Настройки = Новый Соответствие;
Настройки.Вставить("ДатаНачалаОтчета"   , '2023-11-01');
Настройки.Вставить("ДатаОкончанияОтчета", '2023-11-30');

ХранилищеОбщихНастроек.Сохранить("Отчет.ЭтотОтчет", "Настройки", Настройки,, ИмяПользователя());

////////////////////////////////////////////////////////////­////////////////////////////////////////

Настройки = ХранилищеОбщихНастроек.Загрузить("Отчет.ЭтотОтчет", "Настройки",, ИмяПользователя());
Если ТипЗнч(Настройки) = Тип("Соответствие") Тогда
	ДатаНачалаОтчета    = Настройки.Получить("ДатаНачалаОтчета"   );
	ДатаОкончанияОтчета = Настройки.Получить("ДатаОкончанияОтчета");
КонецЕсли;

Сообщить(ДатаНачалаОтчета   );
Сообщить(ДатаОкончанияОтчета);
Показать


Таким образом можно получать/устанавливать настройки не только для текущего пользователя, но и любого другого по его имени. Т.е. можно переносить настройки любому пользователю.

Плюсик в карму Tormozit
Прикрепленные файлы:
8. independ 1542 08.11.23 13:45 Сейчас в теме
(7) примерно так, точность не гарантирую, смотреть в СП

Процедура ПриЗакрытии()
	ПараметрыОтбор=Новый Структура;
	ПараметрыОтбор.Вставить("Отбор",ЭтаФорма.Отбор);
	СохранитьЗначение("ПараметрыОтбор",ПараметрыОтбор);

////

Процедура ПриОткрытии()
	ПараметрыОтбор=ВосстановитьЗначение("ПараметрыОтбор");
	Если ПараметрыОтбор<>Неопределено Тогда
		Для сч=1 по ЭтаФорма.Отбор.Количество() Цикл
			ЭтаФорма.Отбор.Удалить[сч-1];
		КонецЦикла;
		Для каждого Эл из ПараметрыОтбор.Отбор Цикл
			ЭтаФорма.Отбор.Добавить(Эл.Значение,Эл.Имя,Эл.Представление);
		КонецЦикла;	
	КонецЕсли;
Показать
G_108408780541402684893; +1 Ответить
11. G_108408780541402684893 10.11.23 13:07 Сейчас в теме
В итоге такое решение:

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	ПараметрыОтбор1 =Новый Структура;
	ПараметрыОтбор1 = ЭтаФорма.Отбор;
	СохранитьЗначение("ПараметрыОтбор1",ПараметрыОтбор1);
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
ПараметрыОтбор1 = ВосстановитьЗначение("ПараметрыОтбор1");
	Если ПараметрыОтбор1<>Неопределено Тогда
		Для каждого Эл из ПараметрыОтбор1 Цикл
			Если Эл.Использование = Истина Тогда
				Имя2 = Эл.Имя;
				ЗаполнитьЗначенияСвойств(Список.Отбор.Найти( Имя2 ), Эл);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры
Показать
Оставьте свое сообщение

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