|
Удаление строк в таблице. |
☑ |
0
Max2015
20.07.15
✎
15:47
|
Привет всем, изучаю 1С и прошу помочь с решением задачи.
Есть заполняемая по команде таблица:
&НаКлиенте
Процедура ЗаполнитьТаблицу(Команда)
ГСЧ = Новый ГенераторСлучайныхЧисел;
Для Инд = 1 По 100 Цикл
СтрТЧ = Объект.СписокТоваров.Добавить();
СтрТЧ.Номенклатура = "Номенклатура"+Инд;
СтрТЧ.Услуга = ГСЧ.СлучайноеЧисло(0,1);
КонецЦикла;
КонецПроцедуры
и команда на удаление "услуг"
&НаКлиенте
Процедура УдалитьУслуги(Команда)
Для Каждого СтрТЧ Из Объект.СписокТоваров
Цикл
Если СтрТЧ.Услуга = Истина Тогда
Объект.СписокТоваров.Удалить(СтрТЧ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Но по видимому из-за смещения строк при удалении происходит сбой и удаляется только часть значений. Никак не доходит, как решить данную проблему.
|
|
1
Fish
гуру
20.07.15
✎
15:51
|
(0) Обходи ТЧ при удалении с конца. Или сначала загоняй строки для удаления в массив, а потом удаляй.
|
|
2
cw014
20.07.15
✎
15:52
|
&НаКлиенте
Процедура УдалитьУслуги(Команда)
КолВоСтрок = Объект.СписокТоваров.Количество(); Сч = 0;
Пока Сч < КолВоСтрок Цикл
СтрТч = Объект.СписокТоваров[Сч];
Если СтрТЧ.Услуга Тогда
Объект.СписокТоваров.Удалить(СтрТЧ);
КолВоСтрок = Объект.СписокТоваров.Количество();
Иначе
Сч = Сч + 1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
|
|
3
rozer76
20.07.15
✎
16:02
|
i = 0;
Пока i < Таб.Количество() Цикл
Если <?"Условие"> Тогда
Таб.Удалить(i)
Иначе
i = i +1
КонецЕсли;
КонецЦикла;
|
|
4
rozer76
20.07.15
✎
16:04
|
КолвоЭлементовКоллекции = Строки.Количество();
Для ОбратныйИндекс = 1 По КолвоЭлементовКоллекции Цикл
ЭлементКоллекции = Строки[КолвоЭлементовКоллекции - ОбратныйИндекс];
Если ЭлементКоллекции.Номенклатура.Услуга Тогда
Строки.Удалить(ЭлементКоллекции);
КонецЕсли;
КонецЦикла;
|
|
5
Max2015
20.07.15
✎
16:34
|
Благодарю за столь быстрые ответы.
|
|
6
mikecool
20.07.15
✎
16:34
|
М = НайтиСтроки (Новый Структура("Услуга", Истина)
Для Каждого Строка Из М
Удалить(Строка)
|
|
7
D_E_S_131
20.07.15
✎
16:37
|
Вот так и пишутся дипломы по 1С...
|
|