Пример удаления строки из дерева значений на УФ
День добрый.
Есть дерево значений на форме (УФ). Не могу понять как обратиться к индексу текущей строки дерева и удалить строку, пересчитав потом всю форму. Удалять надо только нижний уровень, соответственно если в верхнем уровне не останется подчиненных то тоже нужно его удалить.
Если у кого-то код такой есть, то буду благодарен, если поделитесь.
Спасибо!
Есть дерево значений на форме (УФ). Не могу понять как обратиться к индексу текущей строки дерева и удалить строку, пересчитав потом всю форму. Удалять надо только нижний уровень, соответственно если в верхнем уровне не останется подчиненных то тоже нужно его удалить.
Если у кого-то код такой есть, то буду благодарен, если поделитесь.
Спасибо!
По теме из базы знаний
- Программное добавление кнопок копирования табличных частей во все документы с минимальными изменениями конфигурации (или вообще без изменения)
- Быстрый поиск дублей в 1С с четким/нечетким поиском по любому сочетанию реквизитов/реквизитов таб. частей с отбором и быстрой заменой значений в ЛЮБЫХ базах 8.1-8.3 (УТ 10.3, БП 2, ЗУП 2.5, КА 1.1, УТ 11, БП 3, УНФ 1.6/3.0, КА 2, ЗУП 3 и т.д.)
- Обзор полезных методов БСП 3.1.4
- Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
- Самые используемые методы БСП 3.1.9
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Удаление текущей строки (на клиенте)
УдаляемаяСтрока = ДеревоЗначений.НайтиПоИдентификатору(Элементы.ДеревоЗначений.ТекущиеДанные.ПолучитьИдентификатор());
ДеревоЗначений.ПолучитьЭлементы().Удалить(УдаляемаяСтрока);
Так не работает, если удаляемая строка не на первом уровне. Если она в глубине работает заклинание
УдаляемаяСтрока.ПолучитьРодителя().ПолучитьЭлементы().Удалить(УдаляемаяСтрока);
Так как получить элементы тянет только один уровень.
На первом уровне может и нет родителя и заклинание упадёт, я не проверял, мне не надо. Но гибрида если что каждый думаю соберёт.
УдаляемаяСтрока.ПолучитьРодителя().ПолучитьЭлементы().Удалить(УдаляемаяСтрока);
Так как получить элементы тянет только один уровень.
На первом уровне может и нет родителя и заклинание упадёт, я не проверял, мне не надо. Но гибрида если что каждый думаю соберёт.
Реализовал так.
Здесь пустой родитель не удаляется (мне это не нужно). Но думаю, что логика понятна.
В моем коде в дереве может быть два уровня. Я могу выделить курсором либо строку нижнего уровня, либо родителя.
Соответственно удаляется либо первый уровень целиком, либо строка на втором уровне.
Здесь пустой родитель не удаляется (мне это не нужно). Но думаю, что логика понятна.
В моем коде в дереве может быть два уровня. Я могу выделить курсором либо строку нижнего уровня, либо родителя.
Соответственно удаляется либо первый уровень целиком, либо строка на втором уровне.
&НаКлиенте
Процедура Удалить(Команда)
Если Элементы.Дерево.ТекущиеДанные <> Неопределено Тогда
ид = Элементы.Дерево.ТекущиеДанные.ПолучитьИдентификатор();
Стр = Дерево.НайтиПоИдентификатору(ид);
Родитель = Стр.ПолучитьРодителя();
Если Родитель = Неопределено Тогда
Дерево.ПолучитьЭлементы().Удалить(Элементы.Дерево.ТекущиеДанные);
Иначе
Родитель.ПолучитьЭлементы().Удалить(Элементы.Дерево.ТекущиеДанные);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот