gifts2017

Замена функции СохранитьЗначения() ВосстановитьЗначения() и штатный справочник "СохраненныеНастройки"

Опубликовал Эдуард (mart-sha) в раздел Программирование - Практика программирования

Замена функции   СохранитьЗначения()  ВосстановитьЗначения()  и штатный справочник  "СохраненныеНастройки"

Захотелось мне сохранить некоторые значения в форме сразу для ВСЕХ ПОЛЬЗОВАТЕЛЕЙ  и  не "где-то на компе" а в моей базе.

Я хочу  совместными усилиями упростить код.

Вариант с добавлением кнопок на форму "СохранитьЗначения / Восстановить значения" не предлагать,  так не интересно,  хочется "покрутить ручки".

Хороший вариант http://infostart.ru/public/22132/  но там надо заводить регистр сведений "СохраненныеНастройки"

Итак  вот мой код:

В любом документе или внешней форме
 

Процедура ПриОткрытии()
// из  "Хранилища" справочника "СохраненныеДанные" вытаскиваем значения некоторых полей и восстановим их на этой форме 

СпрСохранениеНастроек = Справочники.СохраненныеНастройки;

//Находим строку для текущего документа.

Поиск= СпрСохранениеНастроек.НайтиПоРеквизиту("НастраиваемыйОбъект" ,СокрЛП("ОтчетОбъект."+ЭтаФорма.Метаданные().Имя) );

Хранилище=Поиск.ХранилищеНастроек.Получить();

// Присвоим полям формы данные из Хранилища (если данных еще нет, то "молчим" )

Если Хранилище<>НЕОПРЕДЕЛЕНО Тогда 

// Ваши поля

ЭтаФорма.НачПериода=Хранилище.НачПериода; 

 /// .......

КонецЕсли;

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

 

 

 

 

 

Процедура ПриЗакрытии()
// Запишем в справочник "СохраненныеНастройки" некоторые данные 

СпрСохранениеНастроек = Справочники.СохраненныеНастройки;

//Находим строку для текущего документа. Если такой записи еще нет, то создаем 

Поиск= СпрСохранениеНастроек.НайтиПоРеквизиту("НастраиваемыйОбъект" ,СокрЛП("ОтчетОбъект."+ЭтаФорма.Метаданные().Имя) ); 

Если  ПустаяСтрока(Поиск) Тогда 

  НоваяЗапись = СпрСохранениеНастроек.СоздатьЭлемент(); 

НоваяЗапись.НастраиваемыйОбъект "ОтчетОбъект."+ЭтаФорма.Метаданные().Имя;

//Узнаем имя как заданно в конфигураторе; 

НоваяЗапись.Наименование =  ЭтотОбъект.Метаданные();

НоваяЗапись.Описание = "Храним данные для моей формы"; // краткое описание строки, на какой хрен она нужна

  НоваяЗапись.Записать();

  // Запишем в табличную часть "Пользователи" всего одну строку для "Всех пользователей" 

  // снова ищем строку, она уже записанна, и становимся на нее. 

  Поиск= СпрСохранениеНастроек.НайтиПоРеквизиту("НастраиваемыйОбъект" ,СокрЛП("ОтчетОбъект."+ЭтаФорма.Метаданные().Имя) );

    Элемент=Поиск.ПолучитьОбъект(); // выбираем по этой строке   

  НоваяСтрока=Элемент.Пользователи.Добавить();   

НоваяСтрока.Пользователь=Справочники.ГруппыПользователей.ВсеПользователи; // в Справ "ГруппыПользователей" есть строка  "Все пользователи", ее и берем 

  НоваяСтрока.ПравоИзменения=Истина;

    Элемент.Записать();   

  КонецЕсли;

     

// Для "Хранилища" справочника "СохраненныеНастройки" укажем какие поля сохранять 

     СтруктураНастроек = Новый Структура;

    СтруктураНастроек.Вставить("ВашеПоле",ВашеПоле); ........

     ...... свои поля

  // запишем в "Хранилище" справочника "СохраненныеНастройки" указанные данные ( это штатная функция ! ) 

      // уточнить надо ли хранилище очищать ? или перезаписывается повех ?   

     СохранениеНастроек.СохранитьНастройкуОбъекта(Поиск,СтруктураНастроек);
КонецПроцедуры;
 

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей Фурманов (Aleksey-29) 09.11.11 09:59
Зачем велосипед изобретать?? :?:
2. Алексей Новоселов (a-novoselov) 09.11.11 14:01
Чушь какая-то. Какой "ОтчетОбъект."+ЭтаФорма.Метаданные().Имя? Во-первых, у формы нет метода Метаданные(). Во вторых, обработка и документ могут иметь одно и то же имя, а в настройке вообще будет написано, что она для отчета("ОтчетОбъект."). Да и в 8.2 есть в общих объектах хранилища настроек. Может все-таки через них делать такие вещи?
3. Ю М (mtv:)) 21.03.12 20:17
(0) Делал буквально на днях подобное, но использовал для этого свойство конфигурации "ХранилищеОбщихНастроек".
Хотя и в твоей идее есть что-то. Надо на досуге покопать в этом направлении. Спасибо за идею.
4. Эдуард (mart-sha) 22.03.12 12:30
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа