Класс, облегчающий реализацию дерева на основе ТП.
Для работы необходимо перенаправить в класс следующие события ТП:
- ПриВыводеСтроки
- ПриВыбореКартинки
- ПриАктивизацииСтроки
Пример такого перенаправления
Процедура кнтпСписокПриАктивизацииСтроки(ТП) Экспорт
Если ТП = Дерево.ТП Тогда
Дерево.тпПриАктивизацииСтроки();
КонецЕсли;
КонецПроцедуры
, где Дерево - экземпляр класса Общие.Дерево.
Пример создания дерева
Дерево = СоздатьОбъект("Общие.Дерево");
Дерево.ЗаголовокКода = "Товар";
Дерево.ДлинаКода = 50;
Дерево.ШиринаКода = 10;
Дерево.НоваяКолонка("Путь", "Строка",,, "Путь к файлам группы", 10);
Дерево.НоваяКолонка("Примечание", "Строка",,,,10);
тпСписок = Дерево.Инициализация(ФормаЗаявки.Форма, "кнтпСписок");
Пример заполнения дерева
тзГрупп.ВыбратьСтроки();
Пока тзГрупп.ПолучитьСтроку() = 1 Цикл
Дерево.НоваяСтрока();
Дерево.Код = тзГрупп.ИмяРодителя;
Дерево.Путь = тзГрупп.Путь;
Дерево.Данные = тзГрупп.Родитель;
ПозицияГруппы = Дерево.Позиция;
Дерево.ПреобразоватьГруппу(ПозицияГруппы, 1);
тзСписок.ВыбратьСтроки();
Пока тзСписок.ПолучитьСтроку() = 1 Цикл
Если тзСписок.Родитель <> тзГрупп.Родитель Тогда
Продолжить;
КонецЕсли;
Дерево.НоваяСтрока(ПозицияГруппы);
Дерево.Код = тзСписок.ИмяТовара;
Дерево.Путь = тзГрупп.Путь;
Дерево.Примечание = тзСписок.Примечание;
Дерево.Данные = СоздатьОбъект("СписокЗначений");
Дерево.Данные.Установить("КодТовара", тзСписок.КодТовара);
Дерево.Данные.Установить("КодСтроки", тзСписок.КодСтроки);
КонецЦикла;
КонецЦикла;
Дерево.Обновить();
Т.е. класс используется по аналогии с классом ТаблицаЗначений, только вместо номера строки используется свойство Позиция.
Для получения более подробной информации следует почитать als-файл, который рекомендуется закинуть в папку BIN программы.
Также прилагается и ints-файл, используемый интелисенсом в конфигураторе.
Файл Общие.Дерево.bmp содержит иконки и должен лежать рядом с файлом класса.
P.S.: Сам считаю данный класс еще очень сырым, но люди просили - выкладываю.
P.P.S.: Пример заполнения довольно старый, в нем еще не использовались невидимые колонки, потому неотображаемые данные хранились строго в списке значений, что было не очень удобно и привело к появлению возможности создания невидимых колонок.