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