Имя: Пароль:
1C
 
Как програмно удалить текущую строку из табличного поля.
0 LLIaMaH
 
17.11.09
11:47
Не могу разобраться толком в связке табличное поле - данные табличного поля. Вобщем есть ТП ХХХ содержащее древо значений с темже именем ХХХ, есть необходимость удалить програмно строку где стоит курсор.

ХХХ.Строки.Удалить(ЭлементыФормы.ХХХ.ТекущаяСтрока);

Ругается что строка не принадлежит коллекции. Получается что табличное поле и древо разные коллекции, но как тогда связать текущую строку табличного поля с программным древом...
1 XLife
 
17.11.09
11:50
ХХХ.Строки.Удалить(ХХХ.Строки.Найти(...));
2 Point
 
17.11.09
11:52
(1) а если не найдет, то функция Найти возвращает "НЕОПРЕДЕЛЕНО", тогда при Удалить возникнет Искл.Ситуация.

Лучше сначало найти, проверить на неопределено, если все нормально тогда удалять
3 densis
 
17.11.09
11:53
ИндексТекСтроки = Состав.Индекс(ЭлементыФормы.Состав.ТекущаяСтрока);

Удалить(<Индекс>)  ... помоему в помошнике все описанно!
4 XLife
 
17.11.09
11:54
(2) эт понятно)) он спросил как... а уж как напишет, так и отработает))
5 Mitriy
 
17.11.09
11:55
ХХХ.Строки.Удалить(ЭлементыФормы.ХХХ.ТекущиеДанные);
6 LLIaMaH
 
17.11.09
12:04
(3) (5) Табличное поле ХХХ, что в интерфейсе, и древо ХХХ, что в памяти, формально разные наборы, связанные вместе, поэтому получение индексов и поиск по текущим строкам не работаю, я так понял.

(1) Получается единственный выход искать по значениям ссылок из колонок-строк Табличного поля в Древе и потом удалять. Для табличного поля не обнаружил получение номера строки или его индекса ваще ничего подобного.

Как вариант можно прикрутить контекстное меню, но я эксперементирую, охота чтоб програмно происходило.
7 hhhh
 
17.11.09
12:08
(6) чото бредишь.
8 TheNewOne
 
17.11.09
12:13
Мать моя, о чем вы говорите. Деревом просто надо пользоваться ВНИМАТЕЛЬНО:

Если ЭлементыФормы.ХХХ.ТекущаяСтрока.Владелец = Неопределено Тогда
 ХХХ.Строки.Удалить(ЭлементыФормы.ХХХ.ТекущаяСтрока);
Иначе
 ЭлементыФормы.ХХХ.ТекущаяСтрока.Владелец.Строки.Удалить(ЭлементыФормы.ХХХ.ТекущаяСтрока);
КонецЕсли;
9 LLIaMaH
 
17.11.09
12:13
(7) не догоняю просто. Конекретней в каком месте брежу. Для меня после 77 было трудно осознать что табличное поле в интерфейсе и переменная служащая данными для табличного поля это два разных набора, с каждым из которых нада работать отдельно. К табличному полю все обращения происходят через ЭлементыФормы либо через предопределенные процедуры табличного поля, что выставляються в свойствах при редактировании интерфейса, к данным табличного поля через Переменную. Загвоздка в том как получить текущую строку для данных а не для табличного поля.
10 LLIaMaH
 
17.11.09
12:20
(8) Работает, Большое спасибо. Тока не Владелец а Родитель.

Теперь помоги ликвидировать пробел, значит это все таки не разные наборы, когда обращаешься программно к древу через переменную ХХХ и через ЭлементыФормы.ХХХ обращение происходит к одному и томуже набору данных?
11 LLIaMaH
 
17.11.09
12:22
Просто занимался изучением раскарски и изменения шрифтов в табличном поле програмно, там все эти действия происходят через ЭлементыФормы вот я и смутился что дескать это разные вещи, отображающийся список и набор данных для него.
12 TheNewOne
 
17.11.09
12:25
(6)(9) все норм :) (8) работает? если да, то все просто:
1)Данные (в данном случае типа "дерево значений") - это самостоятельный объект для хранения данных и они совершенно необязательно выводятся на экран. Поэтому текущей строки нет, и никаких обработчиков нет, и вообще..
2)ТП - это надстройка над данными для их отображения. Имеет свои колонки, но не имеет своих данных, строк у нее нет! она просто черпает из (указанных) данных строки и отображает их в соответствии со своими натсройками, отоборами, колонками и пр. имеет обработчики и конечно же текущую строку в ввиде ссылки на строку данных
Ошибка? Это не ошибка, это системная функция.