![]() |
![]() |
![]() |
|
Помогите сохранить раскрытые группировки | ☑ | ||
---|---|---|---|---|
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 тогда МассивГруппировок = новый массив; иначе МассивГруппировок = ПолучитьМассивИзСтроки(); КонецЕсли; КонецПроцедуры &НаСервере Функция ПолучитьМассивИзСтроки() Возврат ЗначениеИзСтрокиВнутр(СтрМассивГруппировок); КонецФункции &НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если ТипЗнч(ВыбраннаяСтрока) = тип("СтрокаГруппировкиДинамическогоСписка") тогда Если Элементы.Список.Развернут(ВыбраннаяСтрока) Тогда Элементы.Список.Свернуть(ВыбраннаяСтрока); Индекс = МассивГруппировок.Найти(ВыбраннаяСтрока); Если Индекс<>неопределено Тогда МассивГруппировок.Удалить(Индекс); КонецЕсли; иначе Элементы.Список.Развернуть(ВыбраннаяСтрока); Если МассивГруппировок.Найти(ВыбраннаяСтрока)=неопределено Тогда МассивГруппировок.Добавить(ВыбраннаяСтрока); КонецЕсли; КонецЕсли; иначе СтандартнаяОбработка = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) ЗаписатьМассивВПользователя(МассивГруппировок); КонецПроцедуры &НаСервере Процедура ЗаписатьМассивВПользователя(МассивГруппировок) СтрМассивГруппировок = ЗначениеВСтрокуВнутр(МассивГруппировок); Об = ПараметрыСеанса.ТекущийПользователь.ПолучитьОбъект(); Об.ГруппировкиСерверов = СтрМассивГруппировок; Об.Записать(); КонецПроцедуры &НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) Для каждого ВыбраннаяСтрока из МассивГруппировок Цикл Если Элементы.Список.Развернут(ВыбраннаяСтрока)=Ложь Тогда Элементы.Список.Развернуть(ВыбраннаяСтрока); КонецЕсли; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |