![]() |
![]() |
![]() |
|
Удаление строки в табличной части документа | ☑ | ||
---|---|---|---|---|
0
UnoMomento
16.06.08
✎
13:20
|
Подскажите, пж, при обходе табличной части документа с помощью конструкции
ДЛЯ каждого СтрокаТЧ из Док.Прочее Цикл Если ..... Тогда Док.Прочее.Удалить(СтрокаТЧ); КонецЕсли; КонецЦикла; никаких уверток, как в "семерке" не надо придумывать ? Нормально удалятся нужные строки и прочитаются все следующие за удаляемыми ? |
|||
1
Fragster
гуру
16.06.08
✎
13:21
|
а проверить не сутьба?
|
|||
2
Fragster
гуру
16.06.08
✎
13:21
|
(0)* мать-мать! судьба!
|
|||
3
IronDemon
16.06.08
✎
13:22
|
Строчки в список, обходи список и удаляй
|
|||
4
Fragster
гуру
16.06.08
✎
13:23
|
(3) массив круче
|
|||
5
UnoMomento
16.06.08
✎
13:26
|
Я спросил про конкретную конструкцию - она работает ? Про массивы и списки я в курсе.
|
|||
6
philll
17.06.08
✎
11:37
|
"Строчки в список, обходи список и удаляй"... честно говоря, не совсем понял...
|
|||
7
ЗлобнийМальчик
17.06.08
✎
11:39
|
вышеувказанная конструкция не работает, при наступлении условия вам необходимо добавить строку в список удаления , а после обхода коллекции удалить всё скопом.
ИМхо, кошернее просто обходить коллекцию с конца |
|||
8
philll
17.06.08
✎
11:49
|
спасибо
|
|||
9
Bober
17.06.08
✎
11:59
|
если обходишь коллекцию строк (а ты это и делаешь), то все нормально.
|
|||
10
Bober
17.06.08
✎
12:01
|
Вот пример, который это доказывает
ТаблицаЗначений в колонкой номенклатура перемен. номенклатура Для Каждого Строка Из Товар Цикл Если Строка.Номенклатура = Номенклатура Тогда Товар.Удалить(Строка); КонецЕсли; КонецЦикла; все удаляется на ура. |
|||
11
Широкий
17.06.08
✎
12:02
|
(10) мдя...
|
|||
12
hhhh
17.06.08
✎
12:03
|
(10) попробуй для случая, когда несколько строчек подряд с одной и той же номенклатурой.
|
|||
13
Bober
17.06.08
✎
12:07
|
ИЗВИНИТЕ, ошибся -
МассивСтрок = Товар.НайтиСтроки(новый Структура("Номенклатура", Номенклатура)); Для Каждого Строка Из МассивСтрок Цикл Товар.Удалить(Строка); КонецЦикла; а в (10) ошибка |
|||
14
Paris
17.06.08
✎
12:12
|
(0) Чел я делал подобное что показано в (10) но проблема в том если попадаются две стоки подлежащих удалению то первая удаляется вторая становится на её место а берется третья, пробовал в доп цикл брать но потом предложили с конца просматривать и удалять, вроде пока работает
|
|||
15
Stepa86
17.06.08
✎
12:13
|
(0) работает, только не правильно...
|
|||
16
acsent
17.06.08
✎
12:17
|
(0) Нужно с конца обходить, тогда сдвиг строк не будет влиять
|
|||
17
Bober
17.06.08
✎
12:17
|
(14) каюсь, грешен -)
работают только варианты 1. с конца 2. обход ТЗ и сбор в массив строк, если сложный отбор либо через НайтиСтроки, если простой отбор. Обход масиива и удаление. |
|||
18
Paris
17.06.08
✎
12:20
|
(17) Отпускаю тебе этот грех! Прочти пять раз Синтаксис-помощьник и будет тебе счастье :)
|
|||
19
Господин ПЖ
17.06.08
✎
12:20
|
даешь ветку в 400 постов...
|
|||
20
Fragster
гуру
17.06.08
✎
12:24
|
ИМХО (0) с учетом (3) нужен, чтобы удалять строки по условиям < > и т.д., а по условиям типа = рулит (13)
|
|||
21
Fragster
гуру
17.06.08
✎
12:25
|
(19) плюспицот
|
|||
22
Stepa86
17.06.08
✎
12:25
|
(19) я тоже за новый конкурс гламурности =)
|
|||
23
Bober
17.06.08
✎
12:42
|
(19)
КоличествоНаУдаление = 0; Для Каждого Строка Из Товар Цикл Если Строка.Номенклатура <> Номенклатура Тогда КоличествоНаУдаление = КоличествоНаУдаление + 1; КонецЕсли; КонецЦикла; КоличествоПозиций = Товар.Количество(); Пока Товар.Количество() <> (КоличествоПозиций - КоличествоНаУдаление) Цикл Для Каждого Строка Из Товар Цикл Если Строка.Номенклатура <> Номенклатура Тогда Товар.Удалить(Строка); КонецЕсли; КонецЦикла; КонецЦикла; |
|||
24
Fragster
гуру
17.06.08
✎
12:50
|
ИМХО правильное удаление есть (77, но в 80 также работать будет):
Сч = 1; Пока ИсхТаба.КоличествоСтрок()>=Сч Цикл ИсхТаба.ПолучитьСТрокуПоНомеру(Сч); Если (условие) Тогда ИсхТаба.УдалитьСтроку(); Иначе Сч = Сч+1; КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |