1С 8.3, 8.5 Сохранить и восстановить значения объектов и реквизитов
Данные > Примеры кода 1С > 1С 8.3 Пользователи, роли (права) доступа
Перейти в раздел примеры кода 1С 8.3:

⚙️ Настройки (реквизиты объектов, форм) можно хранить в:
✔ ХранилищеОбщихНастроек
✔ Регистре сведений
✔ Справочнике
✔ Внешнем файле (удобно для миграции между базами), JSON.
✔ Штатно в настройках формы. Достаточно только поставить напротив галочку Сохранение.

Удобно при отладке для 1Сника и ускоряют работу пользователей. В повседневной работе использую именно хранилище общих настроек. Эти простые куски кода кочуют из одной внешней обработки (отчета) в другую. Если есть БСП, используем соответствующие процедуры.
Програмно сохранить и восстановить значения объектов и реквизитов формы 1С 8.3, 8.5:
&НаСервере
Процедура ВосстановитьНастройки()
КлючОбъекта = "ВнешняяОбработка_ЗагрузкаСоСклада";
КлючНастроек = "ПериодПутьОрганизация";
ИмяПользователя = ИмяПользователя();
Попытка
ЗначениеНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, КлючНастроек, , ИмяПользователя);
// ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(ИмяНастройки);
Исключение
Сообщить("Не достаточно прав доступа к настройкам пользователя: "+ИмяПользователя);
КонецПопытки;
Если ЗначениеНастроек = Неопределено Тогда // Значит настроек нет
Сообщить("Не получилось прочитать настройки.");
Иначе
Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
Объект.НачалоПериода = ЗначениеНастроек.Получить("НачалоПериода");
Объект.КонецПериода = ЗначениеНастроек.Получить("КонецПериода");
Объект.Организация = ЗначениеНастроек.Получить("Организация");
Объект.ПутьККаталогу = ЗначениеНастроек.Получить("ПутьККаталогу");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьНастройки()
КлючОбъекта = "ВнешняяОбработка_ЗагрузкаСоСклада";
КлючНастроек = "ПериодПутьОрганизация";
ИмяПользователя = ИмяПользователя();
Настройки = Новый Соответствие;
Настройки.Вставить("НачалоПериода", Объект.НачалоПериода);
Настройки.Вставить("КонецПериода", Объект.КонецПериода);
Настройки.Вставить("Организация", Объект.Организация);
Настройки.Вставить("ПутьККаталогу", Объект.ПутьККаталогу);
ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, , ИмяПользователя);
// ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(ИмяНастройки, ,ЗначениеНастроек);
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ВосстановитьНастройки(); // Восстанавливаем данные!!!
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
СохранитьНастройки(); // Сохраняем данные!!!
КонецПроцедуры
Процедура ВосстановитьНастройки()
КлючОбъекта = "ВнешняяОбработка_ЗагрузкаСоСклада";
КлючНастроек = "ПериодПутьОрганизация";
ИмяПользователя = ИмяПользователя();
Попытка
ЗначениеНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, КлючНастроек, , ИмяПользователя);
// ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(ИмяНастройки);
Исключение
Сообщить("Не достаточно прав доступа к настройкам пользователя: "+ИмяПользователя);
КонецПопытки;
Если ЗначениеНастроек = Неопределено Тогда // Значит настроек нет
Сообщить("Не получилось прочитать настройки.");
Иначе
Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
Объект.НачалоПериода = ЗначениеНастроек.Получить("НачалоПериода");
Объект.КонецПериода = ЗначениеНастроек.Получить("КонецПериода");
Объект.Организация = ЗначениеНастроек.Получить("Организация");
Объект.ПутьККаталогу = ЗначениеНастроек.Получить("ПутьККаталогу");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьНастройки()
КлючОбъекта = "ВнешняяОбработка_ЗагрузкаСоСклада";
КлючНастроек = "ПериодПутьОрганизация";
ИмяПользователя = ИмяПользователя();
Настройки = Новый Соответствие;
Настройки.Вставить("НачалоПериода", Объект.НачалоПериода);
Настройки.Вставить("КонецПериода", Объект.КонецПериода);
Настройки.Вставить("Организация", Объект.Организация);
Настройки.Вставить("ПутьККаталогу", Объект.ПутьККаталогу);
ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, , ИмяПользователя);
// ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(ИмяНастройки, ,ЗначениеНастроек);
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ВосстановитьНастройки(); // Восстанавливаем данные!!!
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
СохранитьНастройки(); // Сохраняем данные!!!
КонецПроцедуры
//&НаКлиенте
//Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
// Если ЗавершениеРаботы = Ложь и Модифицированность Тогда // Исключает ошибку "Запрещены серверные процедуры"
// СохранитьНастройки(); // Сохраняем данные!!!
// КонецЕсли;
// Оповестить("ЗакрытьФормуКонсолиЗапроса",,ЭтаФорма);
//КонецПроцедуры
//Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
// Если ЗавершениеРаботы = Ложь и Модифицированность Тогда // Исключает ошибку "Запрещены серверные процедуры"
// СохранитьНастройки(); // Сохраняем данные!!!
// КонецЕсли;
// Оповестить("ЗакрытьФормуКонсолиЗапроса",,ЭтаФорма);
//КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник