Имя: Пароль:
1C
1С v8
Помогите сохранить раскрытые группировки
0 dimqa
 
24.07.12
11:58
Управляемая форма, на форме таблица динамического списка, я хочу сохранять раскрытые пользователем группировки и потом восстанавливать при следующем открытии формы.

Сохраняю так:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   Если ТипЗнч(ВыбраннаяСтрока) = тип("СтрокаГруппировкиДинамическогоСписка") тогда
       Если Элементы.Список.Развернут(ВыбраннаяСтрока) Тогда
           Элементы.Список.Свернуть(ВыбраннаяСтрока);
           СохранитьЗначение("СписокГруппировка"+ВыбраннаяСтрока.Ключ.Наименование,Ложь);
       иначе
           Элементы.Список.Развернуть(ВыбраннаяСтрока);
           СохранитьЗначение("СписокГруппировка"+ВыбраннаяСтрока.Ключ.Наименование,Истина);
       КонецЕсли;
   иначе
       СтандартнаяОбработка = Истина;
   КонецЕсли;
КонецПроцедуры

Но не могу найти как потом восстановить.
По хорошему, в ПриОткрытии надо пройтись как-то по группировкам и открыть нужные, но никак не получается пройтись по строкам таблицы.

Может есть какой-то вариант без использования кода?
1 dimqa
 
24.07.12
12:30
Апик
2 AaNnDdRrEeYy
 
24.07.12
12:33
Вот так

   ЭлементыГруппировки = Список.Группировка.Элементы;
   ЭлементыГруппировки.Очистить();

ТипГруппировка = Тип("ПолеГруппировкиКомпоновкиДанных");
       НовыйЭлементГруппировки = ЭлементыГруппировки.Добавить(ТипГруппировка);
       НовыйЭлементГруппировки.Поле = Новый ПолеКомпоновкиДанных("ИмяПоля");
3 AaNnDdRrEeYy
 
24.07.12
12:34
(2) Это надо ПриСозданииНаСервере()
4 dimqa
 
24.07.12
12:47
Ну это установка группировки, это я знаю.

Нужно в списке на форме (который в древовидном виде), сохранить раскрытые пользователем группировки
5 AaNnDdRrEeYy
 
24.07.12
12:55
в (0) написано что динамический список, а тебе надо для дерева значений?
список в древовидном виде такого нет.
6 dimqa
 
24.07.12
13:02
Ну он когда сгруппирован по 1 полю - выводится в виде дерева
7 dimqa
 
24.07.12
13:30
Получилось через пятую точку, но работает)))

&НаКлиенте
Перем МассивГруппировок;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   СтрМассивГруппировок = ПараметрыСеанса.ТекущийПользователь.ГруппировкиСерверов;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   
   Если СтрДлина(СокрЛП(СтрМассивГруппировок)) = 0 тогда
       МассивГруппировок = новый массив;
   иначе
       МассивГруппировок = ПолучитьМассивИзСтроки();
   КонецЕсли;
   
КонецПроцедуры

&НаСервере
Функция ПолучитьМассивИзСтроки()
   Возврат ЗначениеИзСтрокиВнутр(СтрМассивГруппировок);    
КонецФункции

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   Если ТипЗнч(ВыбраннаяСтрока) = тип("СтрокаГруппировкиДинамическогоСписка") тогда
       Если Элементы.Список.Развернут(ВыбраннаяСтрока) Тогда
           Элементы.Список.Свернуть(ВыбраннаяСтрока);
           Индекс = МассивГруппировок.Найти(ВыбраннаяСтрока);
           Если Индекс<>неопределено Тогда
               МассивГруппировок.Удалить(Индекс);
           КонецЕсли;
       иначе
           Элементы.Список.Развернуть(ВыбраннаяСтрока);
           Если МассивГруппировок.Найти(ВыбраннаяСтрока)=неопределено Тогда
               МассивГруппировок.Добавить(ВыбраннаяСтрока);
           КонецЕсли;
       КонецЕсли;
   иначе
       СтандартнаяОбработка = Истина;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
   ЗаписатьМассивВПользователя(МассивГруппировок);
КонецПроцедуры

&НаСервере
Процедура ЗаписатьМассивВПользователя(МассивГруппировок)
   СтрМассивГруппировок = ЗначениеВСтрокуВнутр(МассивГруппировок);
   Об = ПараметрыСеанса.ТекущийПользователь.ПолучитьОбъект();
   Об.ГруппировкиСерверов = СтрМассивГруппировок;
   Об.Записать();
КонецПроцедуры

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
   
   Для каждого ВыбраннаяСтрока из МассивГруппировок Цикл
       Если Элементы.Список.Развернут(ВыбраннаяСтрока)=Ложь Тогда
           Элементы.Список.Развернуть(ВыбраннаяСтрока);
       КонецЕсли;
   КонецЦикла;
   
КонецПроцедуры
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан