Сохранить свои параметры в настройки пользователя

1. Veetavas 21.08.14 15:05 Сейчас в теме
Отчёт создан на основе "Универсального отчета". Плюс добавлены два реквизита "Количество лет" и "Группировка колонок". Значения этих двух полей надо хранить в настройках пользователя так же, как и группировки, отбор и тэ пэ. Как это можно сделать без коверкания самого "Универсального отчета"?

Кусочек кода модуля формы отчёта. Я так понимаю, надо в процедуре "ПриЗакрытии" что-то нашаманить.
Процедура ПриОткрытии()
	УниверсальныйОтчет.мДействиеПолеВводаВидСравненияПриИзменении = Новый Действие("ПолеВводаВидСравненияПриИзменении");
	УниверсальныйОтчет.мДействиеПолеВводаЗначениеПриИзменении = Новый Действие("ПолеВводаЗначениеПриИзменении");
	УниверсальныйОтчет.ФормаПриОткрытии(УниверсальныйОтчет, ЭтотОбъект, ЭтаФорма);
	Если ЗначениеНеЗаполнено(УниверсальныйОтчет.ДатаКон) Тогда
		УниверсальныйОтчет.ДатаКон = КонецДня(ТекущаяДата());
	КонецЕсли;
	Если ЗначениеНеЗаполнено(УниверсальныйОтчет.ДатаНач) Тогда
		УниверсальныйОтчет.ДатаНач = ДобавитьМесяц(УниверсальныйОтчет.ДатаКон, -12);
	КонецЕсли;
	Если ЗначениеНеЗаполнено(КоличествоЛет) Тогда
		КоличествоЛет = 2;
	КонецЕсли;
КонецПроцедуры

Процедура ПриЗакрытии()//Вот тут-то что-то и надо умного написать
	ЭтотОбъект.УниверсальныйОтчет.мТекущаяНастройка.СохраненнаяНастройка.Вставить("КоличествоЛет", КоличествоЛет);//Насколько правильно
	ЭтотОбъект.УниверсальныйОтчет.мТекущаяНастройка.СохраненнаяНастройка.Вставить("ГруппировкаКолонок", Периодичность);//Насколько правильно
	УниверсальныйОтчет.ФормаПриЗакрытии(УниверсальныйОтчет, ЭтотОбъект, ЭтаФорма);
КонецПроцедуры
Показать


Помогите кто чем может, пожалуйста.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. Allexe8.1 22.08.14 05:45 Сейчас в теме
(1) Не понял, нужно чтобы была возможность сохранять эти настройки, или изменить текущие настройки у пользователей?
Если первое - то группировка колонок - это настройка построителя отчета, она и так будет сохраняться в типовом механизме. Количество лет - это что в запросе? Параметр или элемент отбора? Если элемент отбора, то, аналогично, сохранится и так.

Если второе - смотрите в сторону регистра сведений СохраненныеНастройки. Сами настройки представляют собой структуру (настройки построителя в нее входят также), завернутую в хранилище значения.
7. Veetavas 22.08.14 10:21 Сейчас в теме
(6) Allexe8.1, и "Количество лет", и "Группировка колонок" - это два реквизита отчета, которые влияют на формирование отчёта. Текст запроса формируется в цикле с учетом этих значений, т.е. в отборе или группировке в привычном смысле они не участвуют.
Механизм "СохранитьЗначение()/ВосстановитьЗначение()" работает как надо, но надо сохранять значения не для текущего пользователя, а для всех в настройке отчета пользователя.
Строка, скажем эта
ЭтотОбъект.УниверсальныйОтчет.мТекущаяНастройка.СохраненнаяНастройка.Вставить("КоличествоЛет", КоличествоЛет);
добавляет в структуру настроек нужные параметры, но в типовом механизме "Универсального отчета" не сохраняет. Вот и ищу способ сохранить без изменений самого "Универсального отчёта".
9. Allexe8.1 22.08.14 11:07 Сейчас в теме
(7) Veetavas, а, ну тогда вроде все верно у Вас.
остается только это прописать в обработчике КоманднаяПанельФормыСохранитьНастройку() // у меня так называется
10. Veetavas 22.08.14 12:13 Сейчас в теме
(9) Allexe8.1, в том-то и дело, что ПриЗакрытии() и КоманднаяПанельФормыСохранитьНастройку() ссылаются на УниверсальныйОтчет.СохранитьНастройки()

Процедура КоманднаяПанельФормыСохранитьНастройку(Кнопка)
	ЭтотОбъект.УниверсальныйОтчет.мТекущаяНастройка.СохраненнаяНастройка.Вставить("КоличествоЛет", КоличествоЛет);//Добавил. Не помогает
	ЭтотОбъект.УниверсальныйОтчет.мТекущаяНастройка.СохраненнаяНастройка.Вставить("ГруппировкаКолонок", Периодичность);//Добавил. Не помогает
	УниверсальныйОтчет.СохранитьНастройки(УниверсальныйОтчет, ЭтотОбъект, ЭтаФорма);
	
КонецПроцедуры
,
а эту процедуру трогать не стоит. Где я что упускаю? Как в настройку отчета добавить свои параметры?
11. Allexe8.1 22.08.14 13:23 Сейчас в теме
(10) Veetavas
upd: посмотрел функцию Универсального, прежний пост удалил.
Похоже так не получится. Там перед сохранением структура настройки заново создается.
Попробуйте вставить этот код в ф-ии (должны быть в модуле вашего отчета):
СформироватьСтруктуруДляСохраненияНастроек()
и для чтения:
ВосстановитьНастройкиИзСтруктуры()

Т.е. получается что-то вроде
Процедура СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками)
УниверсальныйОтчет.СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками);
СтруктураСНастройками.Вставить("КоличествоЛет", КоличествоЛет);
КонецПроцедуры
Boneman; Veetavas; +2 Ответить
12. Veetavas 22.08.14 15:02 Сейчас в теме
(11) Allexe8.1, всё гениальное просто!:) Спасибо.
В итоге результат таков:
Процедура КоманднаяПанельФормыВосстановитьНастройку(Кнопка)
	УниверсальныйОтчет.ВосстановитьНастройки(УниверсальныйОтчет, ЭтотОбъект, ЭтаФорма);
	КоличествоЛет = УниверсальныйОтчет.мТекущаяНастройка.СохраненнаяНастройка.КоличествоЛет;//Добавлено
	Периодичность = УниверсальныйОтчет.мТекущаяНастройка.СохраненнаяНастройка.ГруппировкаКолонок;//Добавлено
КонецПроцедуры

Процедура КоманднаяПанельФормыСохранитьНастройку(Кнопка)
	ЭтотОбъект.УниверсальныйОтчет.мТекущаяНастройка.СохраненнаяНастройка.Вставить("КоличествоЛет", КоличествоЛет);//Добавлено
	ЭтотОбъект.УниверсальныйОтчет.мТекущаяНастройка.СохраненнаяНастройка.Вставить("ГруппировкаКолонок", Периодичность);//Добавлено
	УниверсальныйОтчет.СохранитьНастройки(УниверсальныйОтчет, ЭтотОбъект, ЭтаФорма);
КонецПроцедуры
Показать

И "Универсальный отчёт" не тронут!!
Всем большое спасибо за участие, а Allexe8.1 особенно!
2. Obvious 21.08.14 15:14 Сейчас в теме
хммм без колупания...как врем решение предлагаю СохранитьЗначение(), ВосстановитьЗначение().
3. Veetavas 21.08.14 15:19 Сейчас в теме
Спасибо, но не вариант. Надо для всех пользователей хранить настройки. :(
4. Stepka1206 21.08.14 18:18 Сейчас в теме
Отчет похож на 1С 8,0 - 8,1 версии... в тех вообще было хранилище настроек? (именуемый как варианты отчета - как по мне, так его тут вообще нет)
хотя могу быть и не прав ... если что поправьте.
Посмотри как это реализовано в УТ ...
8. Veetavas 22.08.14 10:23 Сейчас в теме
(4) Stepka1206, хранилище настроек есть. Конфа на базе УПП 1.2 написана.
УТ под рукой нет( Там разве сохраняются какие-то параметры, кроме настроек построителя?
5. Boneman 302 21.08.14 20:49 Сейчас в теме
да без раскапывания конфы тут никак, в моих конфах тоже отчеты не такие, и кстати тоже через хранилище.
13. AlexKoso 20 20.10.19 18:42 Сейчас в теме
еще более лаконичный вариант, с добавлением двух строчек кода (как это сделано например в типовом Стоимостная оценка склада):

Процедура СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками) Экспорт
	
	УниверсальныйОтчет.СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками);
	УправлениеОтчетами.СохранитьРеквизитыОтчета(ЭтотОбъект, СтруктураСНастройками); // добавлено!!!
	
КонецПроцедуры

Функция ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками) Экспорт
	
	УправлениеОтчетами.ВосстановитьРеквизитыОтчета(ЭтотОбъект, СтруктураСНастройками); // добавлено!!!
	Возврат УниверсальныйОтчет.ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками, ЭтотОбъект);
	
КонецФункции

Показать
Оставьте свое сообщение

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