|
|
|
Дерево значений на форме, Как удалить строку | ☑ | ||
|---|---|---|---|---|
|
0
pauluss
06.07.06
✎
11:19
|
Туплю я граждане, и чувствую себя идиотом.
Вроде бы примитивная задача, а застрял. Есть дерево значений на форме. Имя: СоставНоменклатурныхГрупп Стоит задача удалить строку на которой стоит курсор Пишу: ЭлементыФормы.СоставНоменклатурныхГрупп.Значение.Строки.Удалить(ЭлементыФормы.СоставНоменклатурныхГрупп.ТекущаяСтрока); Ругается: Недопустимое значение параметра 1. Строка не принадлежит коллекции. Чето не врублюсь я как это победить |
|||
|
1
Волшебник
06.07.06
✎
11:21
|
для начала:
Дерево = СоставНоменклатурныхГрупп; Дерево.Строки.Удалить(ЗдесьСтрока); проверь в отладчике типы данных |
|||
|
2
pauluss
06.07.06
✎
11:40
|
Гм. Странно.
Пишу как советовали: Дерево = СоставНоменклатурныхГрупп; (без ЭлементыФормы) Все логично. Возвращает дерево значений. Пишу дальше: ЭлементыФормы.СоставНоменклатурныхГрупп.ТекущаяСтрока (потому что у реквизита формы СоставНоменклатурныхГрупп нет свойства "ТекущаяСтрока", оно есть только у элемента формы) Проверяю типы. Все правильно: ЭлементыФормы.СоставНоменклатурныхГрупп.ТекущаяСтрока имеет тип "СтрокаДереваЗначений". Запускаю и получаю ту же ошибку. Печально :( P.S. Пардон за оффтопик, как выделять код рамочкой? |
|||
|
3
Волшебник
06.07.06
✎
11:41
|
(2) про выделение кода - ты не напрягайся. Форум сам всё раскрасит.
|
|||
|
4
pauluss
06.07.06
✎
12:01
|
*чухаю репу* Гм. А корневой элемент дерева удаляет.
|
|||
|
5
pauluss
06.07.06
✎
12:02
|
А как по строке дерева определить её индекс?
|
|||
|
6
TormozIT
гуру
06.07.06
✎
12:06
|
Так надо.
Функция УдалитьСтрокуДерева(пСтроки, пУдаляемаяСтрока) Для Каждого Строка из пСтроки Цикл Если Строка = пУдаляемаяСтрока Тогда пСтроки.Удалить(пУдаляемаяСтрока); Возврат Истина; КонецЕсли; // Рекурсивный вызов. Результат = УдалитьСтрокуДерева(Строка.Строки, пУдаляемаяСтрока); Если Результат Тогда Возврат Результат; КонецЕсли; КонецЦикла; Возврат Ложь; КонецФункции |
|||
|
7
TormozIT
гуру
06.07.06
✎
12:25
|
Ну и вызвать в твоем случае
УдалитьСтрокуДерева(ЭлементыФормы.СоставНоменклатурныхГрупп.Значение.Строки, ЭлементыФормы.СоставНоменклатурныхГрупп.ТекущаяСтрока) |
|||
|
8
pauluss
06.07.06
✎
12:32
|
Ага. Спасибо. Заработало.
Хотя я весьма удивлен чесно говоря. Получается, что что-бы удалить известную строку мало просто вызвать метод Удалить, надо рекурсивно пробедать по дереву, найти эту строку, ещё раз её получить а только потом вызвать этот же самый метод удалить, причем даже с тем-же параметром. (я бы ещё понял, если бы внутри цикла по строкам надо было вызывать метод "Удалить" с параметром "Строка", а не "пУдаляемаяСтрока"). Спасибо ещё раз. *Ушел впечатленный* |
|||
|
9
TormozIT
гуру
06.07.06
✎
12:58
|
Можно и проще. Но уже не так круто =))
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |