Процедура ПриОткрытииОтчетаВосстановлениеНастроек(ОтчетОбъект) Экспорт
Если ОтчетОбъект.мТекущаяНастройка <> Неопределено Тогда
Возврат;
КонецЕсли;
СтруктураНастройки = Новый Структура;
СтруктураНастройки.Вставить("Пользователь", ПараметрыСеанса.ТекущийПользователь);
СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ОтчетОбъект));
Если ФормироватьСУказаннойНастройкой(ОтчетОбъект, СтруктураНастройки)
ИЛИ УниверсальныеМеханизмы.ПолучитьНастройкуИспользоватьПриОткрытии(СтруктураНастройки) Тогда
ОтчетОбъект.мТекущаяНастройка = СтруктураНастройки;
ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(СтруктураНастройки.СохраненнаяНастройка);
ОтчетОбъект.КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.ПроверятьДоступность);
КонецЕсли;
#Если Клиент Тогда
Попытка
Если ОтчетОбъект.мФормироватьОтчетПриОткрытии Тогда
ФормаОтчета = ОтчетОбъект.ПолучитьФорму();
Если ФормаОтчета.Открыта() Тогда
ОтчетОбъект.СкомпоноватьРезультат(ФормаОтчета.ЭлементыФормы.Результат, ФормаОтчета.ДанныеРасшифровки);
КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;
#КонецЕсли
КонецПроцедуры
Процедура ПриЗакрытииОтчетаСохранениеНастроек(ОтчетОбъект) Экспорт
Если НЕ (ОтчетОбъект.мТекущаяНастройка = Неопределено
ИЛИ ОтчетОбъект.мТекущаяНастройка.НаименованиеНастройки = Неопределено)
И ОтчетОбъект.мТекущаяНастройка.Пользователь = ПараметрыСеанса.ТекущийПользователь
И ОтчетОбъект.мТекущаяНастройка.Свойство("СохранятьАвтоматически") И ОтчетОбъект.мТекущаяНастройка.СохранятьАвтоматически Тогда
СтруктураНастройки = Новый Структура;
СтруктураНастройки.Вставить("Пользователь", ПараметрыСеанса.ТекущийПользователь);
СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ОтчетОбъект));
СтруктураНастройки.Вставить("НаименованиеНастройки", ОтчетОбъект.мТекущаяНастройка.НаименованиеНастройки);
СтруктураНастройки.Вставить("СохраненнаяНастройка", ОтчетОбъект.КомпоновщикНастроек.Настройки);
СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", ОтчетОбъект.мТекущаяНастройка.ИспользоватьПриОткрытии);
СтруктураНастройки.Вставить("СохранятьАвтоматически", ОтчетОбъект.мТекущаяНастройка.СохранятьАвтоматически);
УниверсальныеМеханизмы.СохранитьНастройку(СтруктураНастройки);
КонецЕсли;
КонецПроцедуры
Процедура Восстановитьнастройки(ОтчетОбъект) Экспорт
СтруктураНастройки = Новый Структура;
СтруктураНастройки.Вставить("Пользователь", ПараметрыСеанса.ТекущийПользователь);
СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ОтчетОбъект));
СтруктураНастройки.Вставить("НаименованиеНастройки", Неопределено);
Результат = УниверсальныеМеханизмы.ВосстановлениеНастроек(СтруктураНастройки);
Если Результат <> Неопределено Тогда
ОтчетОбъект.мТекущаяНастройка = Результат;
ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(Результат.СохраненнаяНастройка);
ОтчетОбъект.КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.ПроверятьДоступность);
Иначе
ОтчетОбъект.мТекущаяНастройка = СтруктураНастройки;
КонецЕсли;
КонецПроцедуры
Процедура СохранитьНастройки(ОтчетОбъект) Экспорт
СтруктураНастройки = Новый Структура;
СтруктураНастройки.Вставить("Пользователь", ПараметрыСеанса.ТекущийПользователь);
СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ОтчетОбъект));
СтруктураНастройки.Вставить("НаименованиеНастройки", ?(ОтчетОбъект.мТекущаяНастройка = Неопределено, Неопределено, ОтчетОбъект.мТекущаяНастройка.НаименованиеНастройки));
СтруктураНастройки.Вставить("СохраненнаяНастройка", ОтчетОбъект.КомпоновщикНастроек.Настройки);
СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", Ложь);
СтруктураНастройки.Вставить("СохранятьАвтоматически", Ложь);
Результат = УниверсальныеМеханизмы.СохранениеНастроек(СтруктураНастройки);
Если Результат <> Неопределено Тогда
ОтчетОбъект.мТекущаяНастройка = Результат;
Иначе
ОтчетОбъект.мТекущаяНастройка = СтруктураНастройки;
КонецЕсли;
КонецПроцедуры
Функция ФормироватьСУказаннойНастройкой(ОтчетОбъект, СтруктураНастройки) Экспорт
ПользовательНастроек = Неопределено;
НаименованиеНастроек = Неопределено;
ДопСвойства = ОтчетОбъект.ДополнительныеСвойства;
Если НЕ (ДопСвойства.Свойство("ПользовательНастроек", ПользовательНастроек)
И ЗначениеЗаполнено(ПользовательНастроек)
И ДопСвойства.Свойство("НаименованиеНастроек", НаименованиеНастроек)
И ЗначениеЗаполнено(НаименованиеНастроек)) Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СохраненныеНастройки.НаименованиеНастройки,
| СохраненныеНастройки.СохраненнаяНастройка,
| СохраненныеНастройки.ИспользоватьПриОткрытии,
| СохраненныеНастройки.СохранятьАвтоматически
|ИЗ
| РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки
|ГДЕ
| СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
| И СохраненныеНастройки.НаименованиеНастройки = &НаименованиеНастройки
| И СохраненныеНастройки.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("ИмяОбъекта" , Строка(ОтчетОбъект));
Запрос.УстановитьПараметр("Пользователь" , ПользовательНастроек);
Запрос.УстановитьПараметр("НаименованиеНастройки" , НаименованиеНастроек);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Ложь;
КонецЕсли;
ВыборкаИзРезультатаЗапроса = РезультатЗапроса.Выбрать();
ВыборкаИзРезультатаЗапроса.Следующий();
СтруктураНастройки.Вставить("Пользователь" , ПользовательНастроек);
СтруктураНастройки.Вставить("НаименованиеНастройки" , ВыборкаИзРезультатаЗапроса.НаименованиеНастройки);
СтруктураНастройки.Вставить("СохраненнаяНастройка" , ВыборкаИзРезультатаЗапроса.СохраненнаяНастройка.Получить());
СтруктураНастройки.Вставить("ИспользоватьПриОткрытии" , ВыборкаИзРезультатаЗапроса.ИспользоватьПриОткрытии);
СтруктураНастройки.Вставить("СохранятьАвтоматически" , ВыборкаИзРезультатаЗапроса.СохранятьАвтоматически);
Возврат Истина;
КонецФункции