Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
02 дек 2023, 06:09

Заполнение таблицы значений в рекурсии

Автор Инокентий, 10 мар 2023, 11:50

0 Пользователей и 1 гость просматривают эту тему.

Инокентий

Добрый день! У меня есть процедура рекурсивного обхода дерева. В этой процедуре необходимо отобрать все строки дерева, удовлетворяющие определенному условию. Как это можно сделать?

antoneus

Дерево.НайтиСтроки(Отбор, Истина)

LexaK

Инокентий, используйте команду НайтиСтроки, получите сразу все что вам надо

КоллекцияСтрокДереваЗначений (ValueTreeRowCollection)
НайтиСтроки (FindRows)
Синтаксис:
НайтиСтроки(<ПараметрыОтбора>, <ВключатьПодчиненные>)
Параметры:
<ПараметрыОтбора> (обязательный)
Тип: Структура.
Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение.
если помогло нажмите: Спасибо!

Инокентий

LexaK, А как можно с помощью этого метода отобрать строки, у которых нет подчиненных элементов?

LexaK

Инокентий, на ум приходят два варианта
1.добавить колонку ЭтоЭлемент = Булево
и при заполнении дерева проставлять ему значение Истина если у этого элемента нет подчиненных
тогда просто ищется отбором по условию Структура("ЭтоЭлемент", Истина)
2.рекурсивный перебор всех строчек дерева с проверкой СтрДЗ.Количество() = 0;
если помогло нажмите: Спасибо!

Инокентий

LexaK, Вот я и хотел при рекурсивном обходе дерева проверить все строки и добавить в тз те, которые не имеют потомков, но не знаю, как это сделать :dfbbdrfb:

LexaK

Инокентий, вот простенькая тестовая обработка, с примером рекурсивного обхода 
после запуска нажмите кнопку Обработать - сформируется ДЗ
затем нажмите кнопку Получить элементы

еще в упр.формах есть способ обхода коллекцииДЗ по индексу
(линейно в цикле, очень интересный способ, но со своими особенностями)
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск