Имя: Пароль:
1C
1С v8
как удалить строки Табличного поля
0 LivingStar
 
08.11.11
13:32
на форме обработки лежит табличное поле
перебираю его

Для каждого Стр Из СсылкиНаУдаление Цикл

  СсылкиНаУдаление.Удалить(Стр);
  ЭлементыФормы.СсылкиНаУдаление.Удалить(Стр)

ни так ни так не работает, как нужно?
1 Wobland
 
08.11.11
13:33
перебирай данные. и удалять лучше с конца. а ещё лучше Очистить(). на здоровье
2 LivingStar
 
08.11.11
13:35
(1) причем тут очистить? мне нужно удалить только определенные строки, отвечающие определенному условию, как это сделать?
3 Wobland
 
08.11.11
13:36
(2) этого в (0) не сказано. идёшь с конца циклом Для й=, проверяешь условие, удаляешь по индексу
4 LivingStar
 
08.11.11
13:37
(3) инструкции

  СсылкиНаУдаление.Удалить(Стр);
  ЭлементыФормы.СсылкиНаУдаление.Удалить(Стр)

не работают (
5 Wobland
 
08.11.11
13:38
(4) давай ещё раз. идёшь с конца циклом Для й=...
6 LivingStar
 
08.11.11
13:39
(5) Стр.НомерСтроки - вот индекс, если нужен индекс
зачем с конца Циклом?
7 Wobland
 
08.11.11
13:40
(6) после удаления строки надо будет делать шаг назад в противном случае. можно и не с конца, конечно
8 LivingStar
 
08.11.11
13:43
(7) ну Ок, скажите почему я не могу удалить все же строку, как это нужно делать по синтаксису?
9 Wobland
 
08.11.11
13:44
(8) сделай по синтаксису. мне отсюда деталей не видно. и да, ЭлементыФормы не трожь
10 Reset
 
08.11.11
13:44
В СП есть, как удалять по синтаксису
11 Reset
 
08.11.11
13:49
Можно еще через временный массив.
Попроще понять будет думаю так:
Обходишь таблицу, по своему условию отбираешь в массив строки, которые нужно удалить.
Обходишь массив, удаляя строки в таблице.

Почему так(почему или обходить с конца или отдельный массив)? Допустим, ты решил отрубить себе пальцы (на руках). Ты не сможешь отрубить все, т.к. отрубив половину, тебе будет неудобно держать топор без пальцев.
Поэтому проще попросить отрубить кого-то другого, предоставив ему список(массив) пальцев для отрубания.
12 LivingStar
 
08.11.11
13:50
Ок спасибо! я уже отказался от этой идеи, вспомнив что да, тама есть свои особенности и нельзя так просто удалять выборочно строки!
13 LivingStar
 
08.11.11
13:51
(10) я в (0) привел пример синтаксиса, он у меня не работает
14 Reset
 
08.11.11
13:55
(13) Там пример случаного сочетания слов.
У ТабличногоПоля не метода Удалить.
С таким же успехом можно пожаловаться ТП.СделатьКакЯХочу() - не работает
15 hhhh
 
08.11.11
13:57
(13) ну, поменяй синтаксис. Пиши нормально, на языке 1С.
16 Wobland
 
08.11.11
13:59
на вот. на коленке писал за 5 минут

Процедура КнопкаВыполнитьНажатие(Кнопка)
   док=ДокументУстановкиЦен.ПолучитьОбъект();
   й=док.Товары.Количество()-1;
   Пока й>=0 Цикл
       Состояние(""+й+"/"+док.Товары.Количество());
       стр=док.Товары.Получить(й);
       Если стр.ЦенаВРознице=0 Тогда
           док.Товары.Удалить(й);
       КонецЕсли;
       й=й-1;
   КонецЦикла;
   Попытка
       док.Записать();
       Сообщить("документ записан");
   Исключение
       Сообщить("ошибка записи");
   КонецПопытки;
КонецПроцедуры
17 LivingStar
 
08.11.11
14:08
(16) спасибо за пример!