При разработке форм подборов и организации отборов для удобства работы может возникнуть задача по автоматическому раскрытию текущей группы.
Цель:
- упростить работу пользователю, выполнять 1 клик вместо 2;
- явно дать понять ему, что есть вложенные группы.
В такой простой задаче может возникнуть стопор из-за особенностей динамического списка:
- в метод Развернуть() таблицы формы следует передать идентификатор текущей строки (численное значение, согласно описанию в синтаксис-помощнике);
- в динамическом списке, когда источник и основная таблица есть справочник, метод ТекущаяСтрока() возвращает ссылку этого справочника, к которому не применим метод ПолучитьИдентификатор().
Решение проблемы:
Первое что необходимо сделать: проверить или установить свойство «Отображение» у таблице в значение «Дерево»
Оказывается в метод Развернуть() в данном случае можно передавать эту ссылку, т.к. источник справочник, в котором нет дублей, следовательно система однозначно идентифицирует данную строку и сможет ее развернуть или свернуть. Аналогично работает и метод Развернут().
Код события при «АктивизацииСтроки»
тд = Элементы.Дерево.ТекущиеДанные;
Если Не тд = Неопределено Тогда
Если Элементы.Дерево.Развернут(Элементы.Дерево.ТекущаяСтрока)= Ложь Тогда
Элементы.Дерево.Развернуть(Элементы.Дерево.ТекущаяСтрока,Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Для удобства пользователя добавим, авто раскрытие/сокрытие при выборе(двойном клике, по уже активной строке):
Код события «Выбор»
СтандартнаяОбработка = Ложь;
ТС = Элементы.Дерево.ТекущаяСтрока;
Если Элементы.Дерево.Развернут(ТС) = Истина Тогда
Элементы.Дерево.Свернуть(ТС);
Иначе
Элементы.Дерево.Развернуть(ТС,Ложь);
КонецЕсли;
КонецПроцедуры
Данная статья также применима к плану счетов, планам видов характеристик и расчетов (которые имеют иерархическую структуру).
Реклама — величайшее искусство XX века.