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

20.03.12

Разработка - Универсальные функции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Ваши поля

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

 /// .......

КонецЕсли;

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

 

 

 

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  КонецЕсли;

     

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

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

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

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

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

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

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

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    3454    Abysswalker    8    

45

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    6393    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    48838    dimanich70    83    

170

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7309    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    61073    atdonya    31    

69

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9112    ke.92@mail.ru    17    

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