helpf.pro
Регистрация

v8: Хранилище значений

nikola20
29.08.2022 12:55Прочитано: 686

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

При открытии обработки:

Код 1C v 8.3
 &НаСервере
Процедура ПодключитьДополнительнуюОбработкуНаСервере(ДополнительнаяОбработкаСсылка)

ОбъектСсылка = ДополнительнаяОбработкаСсылка; 
ОбработкаПодключена = ЗначениеЗаполнено(ОбъектСсылка);

Если ОбработкаПодключена Тогда
ХранилищеНастроек = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектСсылка, "ХранилищеНастроек");
Настройки = ХранилищеНастроек.Получить();
Если ТипЗнч(Настройки) = Тип("Структура") Тогда
Для каждого элНастройки из Настройки цикл
Попытка
Если ТипЗнч(ЭтаФорма[элНастройки.Ключ]) = Тип("ДанныеФормыКоллекция") тогда 
ЭтаФорма[элНастройки.Ключ].Загрузить(ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Настройки, элНастройки.Ключ));
ИначеЕсли  ТипЗнч(ЭтаФорма[элНастройки.Ключ]) = Тип("СписокЗначений") тогда
ЭтаФорма[элНастройки.Ключ].ЗагрузитьЗначения(ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Настройки, элНастройки.Ключ));
ИначеЕсли ТипЗнч(ЭтаФорма[элНастройки.Ключ]) = Тип("ТаблицаЗначений") тогда
ЭтаФорма[элНастройки.Ключ].Загрузить(ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Настройки, элНастройки.Ключ));
Иначе
ЭтаФорма[элНастройки.Ключ] = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Настройки, элНастройки.Ключ);
КонецЕсли;
Исключение
//Если поменялись реквизиты настроек
КонецПопытки;
КонецЦикла;
КонецЕсли;
РежимОтладки = Ложь;
Иначе
ИдентификаторКоманды = "ФормаНастройки";
ЭтаФорма.РежимОтладки = Истина;
КонецЕсли; 

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

При сохранении значений:

Код 1C v 8.3
 &НаСервере
Процедура СохранитьНастройкиФормы(ОбъектСсылка)

СохраняемоеЗначение = Новый Структура;
ЭтаФорма.Прочитано = Истина;
Для каждого элНастройки из СохраняемоеЗначениеНастройки цикл 
УдалитьСтарыеНастройки = Истина;
Попытка
УдалитьСтарыеНастройки = ЭтаФорма[элНастройки.Ключ] = Неопределено; 
Исключение 
КонецПопытки;

Если УдалитьСтарыеНастройки тогда
СохраняемоеЗначениеНастройки.Удалить(элНастройки.Ключ);
Продолжить;
КонецЕсли;

Если ТипЗнч(ЭтаФорма[элНастройки.Ключ]) = Тип("ДанныеФормыКоллекция") тогда
СохраняемоеЗначение.Вставить(элНастройки.Ключ, ЭтаФорма[элНастройки.Ключ].Выгрузить());
ИначеЕсли  ТипЗнч(ЭтаФорма[элНастройки.Ключ]) = Тип("СписокЗначений") тогда
СохраняемоеЗначение.Вставить(элНастройки.Ключ, ЭтаФорма[элНастройки.Ключ].ВыгрузитьЗначения());
ИначеЕсли ТипЗнч(ЭтаФорма[элНастройки.Ключ]) = Тип("ТаблицаЗначений") тогда
СохраняемоеЗначение.Вставить(элНастройки.Ключ, ЭтаФорма[элНастройки.Ключ].Выгрузить());
Иначе
СохраняемоеЗначение.Вставить(элНастройки.Ключ, ЭтаФорма[элНастройки.Ключ]);
КонецЕсли;    
КонецЦикла;

ДополнительнаяОбработкаОбъект = ОбъектСсылка.ПолучитьОбъект();
ДополнительнаяОбработкаОбъект.ХранилищеНастроек = Новый ХранилищеЗначения(СохраняемоеЗначение);
ДополнительнаяОбработкаОбъект.Записать();

КонецПроцедуры
Yandex
Возможно, вас также заинтересует
Реклама на портале
spider_13
21.12.2022 18:04Ответ № 1

Нужно удалить лишнее из СохраняемоеЗначениеНастройки

Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.