Восстановление настроек приоткрытии.

1. Intercititude 27.12.19 11:07 Сейчас в теме
Есть программная реализация ВосстановленияНастроек:

Процедура ДействияФормыВосстановитьНастройки(Кнопка)

    СтруктураНастройки = Новый Структура;
    СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
    СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ЭтотОбъект));
    СтруктураНастройки.Вставить("НаименованиеНастройки", ?(мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка.НаименованиеНастройки));

    ВозвращаемаяСтруктура = УниверсальныеМеханизмы.ВосстановлениеНастроек(СтруктураНастройки);

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

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

Показать


Если в форме выбрать необходимую настройку, то всё восстанавливает безупречно. Форма обычная.
Но! Там стоит галочка "При открытии" восстанавливать настройки. То есть при открытии обработки настройки не подтягиваются. Почему ?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
9. YannikAlx 43 27.12.19 11:48 Сейчас в теме +0.15 $m
(8) Тоггда все тоже самое но перед закрытием и перед открытием

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	 ХранилищеНастроекДанныхФорм.Сохранить("ПоискРазрывовСЗВ_Стаж", "ГодВыб", ЭтотОбъект.ГодВыб);


Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
ЭтотОбъект.ГодВыб=ХранилищеНастроекДанныхФорм.Загрузить("ПоискРазрывовСЗВ_Стаж", "ГодВыб");
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YannikAlx 43 27.12.19 11:11 Сейчас в теме
Эту выполняйте при закрытии формы ...
&НаСервере
Процедура СохранениеНастроек()
	ХранилищеНастроекДанныхФорм.Сохранить("ОбработкаВыгрузкаАлиментовСбербанк", "Организация", Объект.Организация);
	ХранилищеНастроекДанныхФорм.Сохранить("ОбработкаВыгрузкаАлиментовСбербанк", "Зарплатныйпроект", Объект.ЗарплатныйПроект);
	
КонецПроцедуры


А при создании на сервере
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Объект.Организация=	ХранилищеНастроекДанныхФорм.Загрузить("ОбработкаВыгрузкаАлиментовСбербанк", "Организация");
Объект.ЗарплатныйПроект=ХранилищеНастроекДанныхФорм.Загрузить("ОбработкаВыгрузкаАлиментовСбербанк", "Зарплатныйпроект");
3. Intercititude 27.12.19 11:27 Сейчас в теме
(2) ПриСозданииНаСервере у внешней обработки?!
4. magvay_k 63 27.12.19 11:30 Сейчас в теме
5. YannikAlx 43 27.12.19 11:37 Сейчас в теме
(3) Я вам привел реальные строки из моей обработки!
У обработки есть однако форма...
И она создается на сервере, вот ПриСозданииНаСервере и восстанавливаются реквизиты
6. Intercititude 27.12.19 11:40 Сейчас в теме
(5) У меня нету этой стандартной процедуры у формы ПриСозданииНаСервере
7. YannikAlx 43 27.12.19 11:42 Сейчас в теме
Тогда нужно давать информацию Точно , на чем вы программируете!
Или по вашему вся 1С одинаковая?
Intercititude; +1 Ответить
8. Intercititude 27.12.19 11:43 Сейчас в теме
(7) Извиняюсь. Это обычная форма. Думал,что указал.
9. YannikAlx 43 27.12.19 11:48 Сейчас в теме +0.15 $m
(8) Тоггда все тоже самое но перед закрытием и перед открытием

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	 ХранилищеНастроекДанныхФорм.Сохранить("ПоискРазрывовСЗВ_Стаж", "ГодВыб", ЭтотОбъект.ГодВыб);


Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
ЭтотОбъект.ГодВыб=ХранилищеНастроекДанныхФорм.Загрузить("ПоискРазрывовСЗВ_Стаж", "ГодВыб");
10. Intercititude 27.12.19 11:56 Сейчас в теме
(9) А если надо сохранять значения объекта ПостроительОтчета.Отбор . Он у меня на форме и в нём задаются разные настройки. В этом вся суть
Достаточно этого?
	ХранилищеНастроекДанныхФорм.Загрузить("ОбработкаУтверждениеЗаказов", "ПостроительОтчетаОтбор", ЭтотОбъект.ПостроительОтчета.Отбор);


Попытался сделать на объекты формы ДатуНачала и ДатуКонца. Всё равно не сохраняет при новом открытии обработки.

Прошёлся отладчиком призакрытии. По идее Сохранять делает. Но когда открываю форму в объектах пусто, при загрузке.
11. YannikAlx 43 27.12.19 12:05 Сейчас в теме
(10) У вас настройки должны быть Реквизитами не формы а Объекта, то есть обработки
12. Intercititude 27.12.19 12:06 Сейчас в теме
(11) Так и есть. В общем ДатуНачала и ДатуКонца сохраняет
Но вот объект ПостроительОтчета типа ПостроительОтчета ругается мол поля объекта не обнаружены.
14. YannikAlx 43 27.12.19 12:08 Сейчас в теме
(12) А как вы их ему передаете?
15. Intercititude 27.12.19 12:10 Сейчас в теме
(14)
Процедура мУстановитьОтборыПоУмолчанию()

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

КонецПроцедуры  
Показать


поле объекта не обнаружено АдресДоставки в этом месте ругается.
17. YannikAlx 43 27.12.19 12:14 Сейчас в теме
(15) Именно для отчета немного по другому делаю...
18. Intercititude 27.12.19 12:16 Сейчас в теме
(17) Вообще это же типовой механизм. Ну в форме восстановления настроек галочка "При открытии" ? Которая потом записывает в регист сведении "Сохранение настроек". Разве оно там само не должно как то отрабатывать?
13. YannikAlx 43 27.12.19 12:07 Сейчас в теме
(10) то есть в Обработке создайте реквизиты ДатуНачала и ДатуКонца и вот их точно получится восстанавливать
Реквизиты формы не пробовал никогда, потому как минимум, что не использую обычно реквизитов у форм ни у обычных ни в управляемых
Реквизиты удобно делать у самой обработки...
16. YannikAlx 43 27.12.19 12:13 Сейчас в теме
Процедура ПриОткрытии()
	
	// Реквизит формы и компоновщик отчета ссылаются на один компоновщик
	//КомпоновщикНастроек = ЭтотОбъект.КомпоновщикНастроек;
	
	ТиповыеОтчеты.ОбновитьТаблицуДоступныхНастроекПользователю(ЭтотОбъект);
	ТиповыеОтчеты.УстановитьВариантПоУмолчанию(ЭтотОбъект, ЭтаФорма);
	
	// Нарисуем кнопки выбора настроек на верхней панели
	ТиповыеОтчеты.ОбновитьКнопкиВыбораНастроек(ЭтаФорма, ЭтотОбъект, ПредставлениеНастройки, РежимРедактированияНастройки);
	ТиповыеОтчеты.ОбновитьФормуТиповогоОтчетаПоКомпоновщику(ЭтотОбъект, ЭтаФорма);
	ТиповыеОтчеты.УстановитьВидимостьПанелиВариантовПоУмолчанию(ЭтотОбъект, ЭтаФорма);
	ТиповыеОтчеты.УстановитьВидимостьПанелиПользователяПоУмолчанию(ЭтотОбъект, ЭтаФорма);
	ТиповыеОтчеты.ВосстановитьНастройкиФормыОтчета(ЭтотОбъект, ЭтаФорма);
	ТиповыеОтчеты.УправлениеОтображениемПанелиВариантов(ЭтаФорма);
	ТиповыеОтчеты.УправлениеОтображениемПанелиПользователя(ЭтаФорма);
	ЭтаФорма.ЭлементыФормы.Результат.Защита = УправлениеДопПравамиПользователей.ЗащитаТаблиц();
	
КонецПроцедуры


Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	
	Если РежимРедактированияНастройки Тогда
		СтандартнаяОбработка = Ложь;
		Возврат;
	КонецЕсли;
	
	ТиповыеОтчеты.ОбработкаЗакрытияНастройкиОтчета(ЭтотОбъект, ЭтаФорма, Отказ, СтандартнаяОбработка);
	Если Не ЭтоОтработкаРасшифровки И Не РежимРедактированияНастройки Тогда
		ТиповыеОтчеты.СохранитьПоследнююИспользуемуюНастройку(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры
Показать
19. Intercititude 27.12.19 14:52 Сейчас в теме
(16) Это что вообще? в итоге построитель отчета не сохранить никак получается?
20. YannikAlx 43 27.12.19 14:55 Сейчас в теме
(19) Это у меня есть отчет в ЗУП2.5 вот таким образом с охраняются введенные настройки и потом успешно восстанавливаются при повторном запуске ...
Процедуры в форме отчета....
21. Intercititude 27.12.19 15:20 Сейчас в теме
(20) А как быть с построителем отчета... проблема не решилась.
22. YannikAlx 43 27.12.19 15:34 Сейчас в теме
Что за проблема с постоителем?
Способ из (16) запоминает все настройки и отборы, которые были применены и при следующем запуске все открывается в с теми же отборами.
Что вам еще то нужно?
23. Intercititude 27.12.19 15:38 Сейчас в теме
(22) Я написал в (15) в чем проблема.
24. YannikAlx 43 27.12.19 15:43 Сейчас в теме
(23) смотрите в отладке, иначе не поймешь - что там не так...
25. Intercititude 27.12.19 15:47 Сейчас в теме
(24) Процедура выполняется ПриОткрытии. Которая мУстановитьОтборыПоУмолчанию().
Ругается на АдресДоставки,так как если делать ваше условие то в ПоляОтбора ничего не попадает.. Тобишь АдресДоставки.
26. YannikAlx 43 27.12.19 16:00 Сейчас в теме
(25) Вы пытаетесь скрестить ежа с ужом?
Что вы вообще делаете?
Я предложил вам вариант сохранения и восстановления , вы пытаетесь в него внедрить свою мУстановитьОтборыПоУмолчанию ?
28. Intercititude 27.12.19 16:08 Сейчас в теме
(26) В том то и дело, что это не моя настройка мУстановитьОтборыПоУмолчанию.Но она нужна.

Если я поставлю условие Если пусто и не выполнять, то она сброситься... А хотелось чтобы эта настройка была и значения которые в этих отборах сохранялись. Это реально же ?)

Кроме того он не в одном месте ругнется ещё. Так как ПостроительОтчета пустой..
27. YannikAlx 43 27.12.19 16:01 Сейчас в теме
Ну если ничего не попадает - то и не выполняйте , ЕСЛИ поставьте......
29. YannikAlx 43 27.12.19 16:17 Сейчас в теме
скрестить ежа с ужом не всегда целесообразно...
Вы хотите не настройки сохранять, а задавать начальные программно - это немного все же другая задача изначально.
Вернитесь вчистую к своему варианту и отладкой ищите что у вас там не стыкуется...
Еще раз говорю - без отладки вы ничего не сможете.
Ищите где и что заполняется не так как вы задумали
Intercititude; +1 Ответить
Оставьте свое сообщение

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