Захотелось мне сохранить некоторые значения в форме сразу для ВСЕХ ПОЛЬЗОВАТЕЛЕЙ и не "где-то на компе" а в моей базе.
Я хочу совместными усилиями упростить код.
Вариант с добавлением кнопок на форму "СохранитьЗначения / Восстановить значения" не предлагать, так не интересно, хочется "покрутить ручки".
Хороший вариант //infostart.ru/public/22132/ но там надо заводить регистр сведений "СохраненныеНастройки"
Итак вот мой код:
В любом документе или внешней форме
Процедура ПриОткрытии()
// из "Хранилища" справочника "СохраненныеДанные" вытаскиваем значения некоторых полей и восстановим их на этой форме
СпрСохранениеНастроек = Справочники.СохраненныеНастройки;
//Находим строку для текущего документа.
Поиск= СпрСохранениеНастроек.НайтиПоРеквизиту("НастраиваемыйОбъект" ,СокрЛП("ОтчетОбъект."+ЭтаФорма.Метаданные().Имя) );
Хранилище=Поиск.ХранилищеНастроек.Получить();
// Присвоим полям формы данные из Хранилища (если данных еще нет, то "молчим" )
Если Хранилище<>НЕОПРЕДЕЛЕНО Тогда
// Ваши поля
ЭтаФорма.НачПериода=Хранилище.НачПериода;
/// .......
КонецЕсли;
КонецПроцедуры;
Процедура ПриЗакрытии()
// Запишем в справочник "СохраненныеНастройки" некоторые данные
СпрСохранениеНастроек = Справочники.СохраненныеНастройки;
//Находим строку для текущего документа. Если такой записи еще нет, то создаем
Поиск= СпрСохранениеНастроек.НайтиПоРеквизиту("НастраиваемыйОбъект" ,СокрЛП("ОтчетОбъект."+ЭтаФорма.Метаданные().Имя) );
Если ПустаяСтрока(Поиск) Тогда
НоваяЗапись = СпрСохранениеНастроек.СоздатьЭлемент();
НоваяЗапись.НастраиваемыйОбъект = "ОтчетОбъект."+ЭтаФорма.Метаданные().Имя;
//Узнаем имя как заданно в конфигураторе;
НоваяЗапись.Наименование = ЭтотОбъект.Метаданные();
НоваяЗапись.Описание = "Храним данные для моей формы"; // краткое описание строки, на какой хрен она нужна
НоваяЗапись.Записать();
// Запишем в табличную часть "Пользователи" всего одну строку для "Всех пользователей"
// снова ищем строку, она уже записанна, и становимся на нее.
Поиск= СпрСохранениеНастроек.НайтиПоРеквизиту("НастраиваемыйОбъект" ,СокрЛП("ОтчетОбъект."+ЭтаФорма.Метаданные().Имя) );
Элемент=Поиск.ПолучитьОбъект(); // выбираем по этой строке
НоваяСтрока=Элемент.Пользователи.Добавить();
НоваяСтрока.Пользователь=Справочники.ГруппыПользователей.ВсеПользователи; // в Справ "ГруппыПользователей" есть строка "Все пользователи", ее и берем
НоваяСтрока.ПравоИзменения=Истина;
Элемент.Записать();
КонецЕсли;
// Для "Хранилища" справочника "СохраненныеНастройки" укажем какие поля сохранять
СтруктураНастроек = Новый Структура;
СтруктураНастроек.Вставить("ВашеПоле",ВашеПоле); ........
...... свои поля
// запишем в "Хранилище" справочника "СохраненныеНастройки" указанные данные ( это штатная функция ! )
// уточнить надо ли хранилище очищать ? или перезаписывается повех ?
СохранениеНастроек.СохранитьНастройкуОбъекта(Поиск,СтруктураНастроек);
КонецПроцедуры;