Имя: Пароль:
1C
 
Удаление строки из списка значений
0 SurFace
 
26.06.09
17:17
Каким способом можно удалить строку из списка значений. Переливание в другой список нжуных строк предполагаю займет большего времени.
1 also
 
26.06.09
17:18
А вот почитать СП не судьба
2 zbv
 
26.06.09
17:18
(0) удалить() - не катит?
3 also
 
26.06.09
17:18
Раздел Список значений
4 also
 
26.06.09
17:19
>>Переливание в другой список нжуных строк предполагаю займет большего времени

А это пять конечно...За идею )
5 SurFace
 
26.06.09
17:23
в СП не нашел, , метода Удалить у строки списка нет.
метод удалить существует для списка значений - т.е. чтобы удалить строки из саписка нужно прогнать список, определить идентификаторы строк, циклом прогнать идентификаторы с методом списка значей удалить
6 73
 
26.06.09
17:24
(5) Плохо искал:

СписокЗначений (ValueList)
Удалить (Delete)
Синтаксис:
Удалить(<Элемент>)
Параметры:
<Элемент> (обязательный)
Тип: Число, ЭлементСпискаЗначений. Индекс удаляемого элемента либо сам элемент.
Описание:
Удаляет элемент из списка значений.
Пример:
// удаление по индексу в списке
СписокТиповЦен.Удалить(0);

// удаление по элементу
НайденныйЭлемент = СписокТиповЦен.НайтиПоЗначению(ВыбЗначение);
Если НайденныйЭлемент <> Неопределено Тогда
   СписокТиповЦен.Удалить(НайденныйЭлемент);
Иначе
   Сообщить("Значение не найдено!");
КонецЕсли;
7 SurFace
 
26.06.09
17:29
вот про это я и описал - для такого методанужно знать идентификатор строки
8 Птица
 
26.06.09
17:30
(7)эээ. а что это такое - идентификатор строки?
9 Mitriy
 
26.06.09
17:31
(7) а ты хочешь удалить абы какое значение из списка?
10 SurFace
 
26.06.09
17:31
Для каждого СтрокаСпискаНайденныхОбъектов из СписокНайденныхОбъектов Цикл
               Если СтрокаСпискаНайденныхОбъектов.Значение.Яркость <> 5000 Тогда
                   СписокНайденныхОбъектов.Удалить(СтрокаСпискаНайденныхОбъектов);
               КонецЕсли;
           КонецЦикла;
11 Mitriy
 
26.06.09
17:33
(10) не взлетит...
12 Mitriy
 
26.06.09
17:34
(10) сначала найди все элементы, а потом уже удаляй их...
13 SurFace
 
26.06.09
17:35
вот в пункте (5) эту мысль излагал -а в (10) появилась другая удалять налету элементы
14 Mitriy
 
26.06.09
17:36
(13) тогда надо с конца идти, а не с начала...
15 SurFace
 
26.06.09
17:37
(14) индексы меняются?
16 Mitriy
 
26.06.09
17:38
(15) угу...
17 SurFace
 
26.06.09
17:40
(16) теперь понятно почему половина элементов осталась неотфильтрована =).
Тогда возникает другой вопрос
как список значений пролистать задом наперед?
18 73
 
26.06.09
17:51
КвоЭлементов = Список.Количество();
   
   Для й=1 по КвоЭлементов Цикл
       Сообщить(Список[КвоЭлементов-й].Значение);
   КонецЦикла;
19 SurFace
 
26.06.09
18:02
(18) что-то непонятно странное
(4) вот так работает
           СписокНайденныхОбъектовУрезанный = Новый СписокЗначений;    
           Для каждого СтрокаСпискаНайденныхОбъектов из СписокНайденныхОбъектов Цикл
               Если СтрокаСпискаНайденныхОбъектов.Значение.Яркость = 5000 Тогда
//                    СписокНайденныхОбъектов.Удалить(СтрокаСпискаНайденныхОбъектов);
                   СписокНайденныхОбъектовУрезанный.Добавить(СтрокаСпискаНайденныхОбъектов.Значение);  
               КонецЕсли;
           КонецЦикла;
20 73
 
26.06.09
18:07
(19) Что непонятно?
Обращаемся по индексу [Количество - перем цикла]
Ну если полностью для твоего случая, то типа так:

   КвоЭлементов = СписокНайденныхОбъектов.Количество();
   
   Для й=1 по КвоЭлементов Цикл
     Если СписокНайденныхОбъектов[КвоЭлементов-й].Значение.Яркость <> 5000 Тогда
                   СписокНайденныхОбъектов.Удалить(КвоЭлементов-й);
     КонецЕсли;

   КонецЦикла;