Как в управляемой форме развернуть группу справочника при активизации строки

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

Цель:

  • упростить работу пользователю, выполнять 1 клик вместо 2;
  • явно дать понять ему, что есть вложенные группы. 

В такой простой задаче может возникнуть стопор из-за особенностей динамического списка:

  • в метод Развернуть() таблицы формы следует передать идентификатор текущей строки (численное значение, согласно описанию в синтаксис-помощнике);
  • в динамическом списке, когда источник и основная таблица есть справочник, метод ТекущаяСтрока() возвращает ссылку этого справочника, к которому не применим метод ПолучитьИдентификатор().

Решение проблемы:

Первое что необходимо сделать: проверить или установить свойство “Отображение” у таблице в значение “Дерево”

Оказывается в метод Развернуть() в данном случае можно передавать эту ссылку, т.к. источник справочник, в котором нет дублей, следовательно система однозначно идентифицирует данную строку и сможет ее развернуть или свернуть. Аналогично работает и метод Развернут().

Код события при “АктивизацииСтроки”

Процедура ДеревоПриАктивизацииСтроки(Элемент)

    тд = Элементы.Дерево.ТекущиеДанные;
    Если Не тд = Неопределено Тогда
        Если Элементы.Дерево.Развернут(Элементы.Дерево.ТекущаяСтрока)= Ложь Тогда
            Элементы.Дерево.Развернуть(Элементы.Дерево.ТекущаяСтрока,Ложь);
        КонецЕсли;
    КонецЕсли;    

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

 

Для удобства пользователя добавим, авто раскрытие/сокрытие при выборе(двойном клике, по уже активной строке):

Код события “Выбор”

Процедура ДеревоВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    ТС = Элементы.Дерево.ТекущаяСтрока;
    Если Элементы.Дерево.Развернут(ТС) = Истина Тогда
        Элементы.Дерево.Свернуть(ТС);
    Иначе
        Элементы.Дерево.Развернуть(ТС,Ложь);
    КонецЕсли;

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

 

Данная статья также применима к плану счетов, планам видов характеристик и расчетов (которые имеют иерархическую структуру).

Ни одно, даже самое верное дело не двигается без рекламы… Обычно думают, что надо рекламировать только дрянь,- хорошая вещь и так пойдет. Это самое неверное мнение. Реклама – это имя вещи… Реклама должна напоминать бесконечно о каждой, даже чудесной вещи… Думайте о рекламе!”

— В.В. Маяковский, Статья “Агитация и реклама”