|
удаление строк ТЧ | ☑ | ||
---|---|---|---|---|
0
_barracuda_
10.05.18
✎
16:38
|
Добрый день.
Удаляю строки: Для каждого СтрокаТаблицы Из Товары Цикл если СтрокаТаблицы.Флаг=Истина Тогда Товары.Удалить(СтрокаТаблицы) ; КонецЕсли; КонецЦикла; Не удаляется последняя строка Хотя вроде все правильно: Табличная часть (Tabular section) Удалить (Delete) Синтаксис: Удалить(<Индекс>) Параметры: <Индекс> (обязательный) Тип: Число; Строка табличной части. Индекс удаляемой строки в табличной части, либо сама удаляемая строка. |
|||
1
Buster007
10.05.18
✎
16:40
|
плохой подход
|
|||
2
DrShad
10.05.18
✎
16:40
|
классика
выборка сбивается |
|||
3
_barracuda_
10.05.18
✎
16:42
|
"либо сама удаляемая строка".Удаляю именно строку
|
|||
4
mr_K
10.05.18
✎
16:42
|
НайтиСтроки.
Удалить |
|||
5
_barracuda_
10.05.18
✎
16:42
|
Продолжить; ??
|
|||
6
DrShad
10.05.18
✎
16:43
|
(5) либо обход ТЧ с последней строки до первой
либо собрать строки которые нужно удалить в массив и обходом массива удалить из ТЧ |
|||
7
bolobol
10.05.18
✎
16:49
|
Как эти глупыши умудрились сбивать выборку при удалении строки, на которой выборка спозиционирована. Элемент Следующий известен на этапе позиционирования, вдруг... становится неким другим. Как в анекдоте: "Да как так-то??"
|
|||
8
Масянька
10.05.18
✎
16:51
|
(7) Это не анекдот... Это классика...
"Средств у нас хватает. У нас ума не хватает" (Кот Матроскин). |
|||
9
Ахмадинежад
10.05.18
✎
16:52
|
Для х = - ТЗ.КоличествоСТрок() По -1 Цикл
ТекСтрока = ТЗ[-х-1]; ТЗ.Удалить(ТекСтрока); КонецЦикла; |
|||
10
_barracuda_
10.05.18
✎
17:01
|
Сч = 0;
Пока Сч < Товары.Количество() Цикл СтрокаТаблицы = Товары.Получить(Сч); Товары.Удалить(СтрокаТаблицы); Сч = Сч + 1; КонецЦикла; сделал так.средний не удаляется) |
|||
11
bolobol
10.05.18
✎
17:03
|
(10) Написали же - НайтиСтроки, Удалить
|
|||
12
bolobol
10.05.18
✎
17:04
|
(10) Так а чего в (10)-то написано? Чушь какая-то... Удаляешь строки, а счётчик увеличиваешь
|
|||
13
Buster007
10.05.18
✎
17:05
|
(10) лучше так
Сч = 0; Пока Сч < Товары.Количество() Цикл Товары.Удалить(Товары[0]); Сч = Сч + 1; КонецЦикла; |
|||
14
bolobol
10.05.18
✎
17:05
|
(13) Ещё один...
|
|||
15
Buster007
10.05.18
✎
17:05
|
+(13) а еще можно Товары.Очистить()
|
|||
16
bolobol
10.05.18
✎
17:07
|
(10) Кстати, а куда пропало условие удаления "если СтрокаТаблицы.Флаг=Истина Тогда" ?
|
|||
17
Timon1405
10.05.18
✎
17:07
|
Лучше так
ТЗ.удалить() Конфигуратор.Закрыть() Мозг.Включать() Поиск.Использовать() ТупыхТем.НеСоздавать() |
|||
18
_barracuda_
10.05.18
✎
17:09
|
Format C)))
|
|||
19
3achem
10.05.18
✎
17:13
|
Классика
ВременнаяТЗ = ИсходнаяТЗ.Скопировать(); СтрокиУдалить = ВременнаяТЗ .НайтиСтроки(Новый Структура("ЧтоТо", ЧтоТо); Для каждого Запись Из СтрокиУдалить Цикл ВременнаяТЗ.Удалить(Запись); КонецЦикла; ИсходнаяТЗ = ВременнаяТЗ; |
|||
20
Buster007
10.05.18
✎
17:23
|
(19) а чего 1 раз скопировал ТЗ только? Может еще раз на всякий случай скопировать?)
|
|||
21
3achem
10.05.18
✎
17:23
|
(20) скопирую 5 раз, чтобы потом 4 раза ТЗ обнулить
|
|||
22
hhhh
10.05.18
✎
17:41
|
(21) надо так
НаВсякийСлучайКопияТЗ = ИсходнаяТЗ; ИсходнаяТЗ = ВременнаяТЗ; |
|||
23
Масянька
10.05.18
✎
17:50
|
(18) Блин... Ты даже хард форматнуть не можешь...
|
|||
24
_barracuda_
10.05.18
✎
17:53
|
Лыжи не едут(((((
из 1,2,3 удаляет 1 и 3 ПараметрыОтбора = Новый Структура; Для каждого СтрокаТаблицы Из Товары Цикл Если СтрокаТаблицы.Флаг=Истина Тогда // ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Номенклатура", СтрокаТаблицы.Номенклатура); НайденныеСтроки =Товары.НайтиСтроки(ПараметрыОтбора); для каждого стр из НайденныеСтроки Цикл Товары.Удалить(стр); КонецЦикла; КонецЕсли; КонецЦикла; |
|||
25
Масянька
10.05.18
✎
17:55
|
(24) Кац предлагал сдаться (С)
|
|||
26
_barracuda_
10.05.18
✎
17:56
|
Кац жив
|
|||
27
palladyi
10.05.18
✎
17:57
|
Автор, когда ты удаляешь строчку из таблицы, твоя позиция в ней сдвигается (то есть текущая строка становится та, которая должна была стать следующей). И ты тут же переходишь на следующую строчку. Так и будешь перескакивать
|
|||
28
palladyi
10.05.18
✎
17:58
|
Лучше всего в отдельный массив отобрать строки на удаление (методом найтиСтроки()), а затем поэлементно удалять эти строки из ТЗ
|
|||
29
palladyi
10.05.18
✎
17:59
|
А старожилам желаю не стебаться и не намекать, а объяснять логику советов, иначе к ним не прислушаются никогда
|
|||
30
_barracuda_
10.05.18
✎
18:00
|
(29)Спасибо уважаю.А то чувствую себя мусором
|
|||
31
palladyi
10.05.18
✎
18:00
|
(30) Да все нормально) Сам долго не мог понять эту тему, пока не объяснили подробно)
|
|||
32
Йохохо
10.05.18
✎
18:05
|
(24) зачем тебе цикл? почему не сделать отбор 1 раз по Флаг?
|
|||
33
3achem
10.05.18
✎
18:11
|
||||
34
Fram
10.05.18
✎
18:12
|
(31) как же ты работаешь с более сложными вещами, если такие элементарные тяжело даются
|
|||
35
_barracuda_
10.05.18
✎
18:16
|
(34) стараюсь.набираюсь опыта
|
|||
36
Fram
10.05.18
✎
18:35
|
(35) скажи честно, прежде чем создать эту ветку, отладчиком хотя бы воспользовался сначала?
|
|||
37
_barracuda_
10.05.18
✎
18:56
|
(36)все сделал.всем спасибо
|
|||
38
НаборДанных
10.05.18
✎
20:04
|
(37)В смысле всё сделал за тебя человек из (33) и даже готовую обработку выложил?)))
|
|||
39
Масянька
11.05.18
✎
08:33
|
(29) (30) Да, ладно вам... :)))
В бытность моей учебы в универе говорили - каждый нормальный программист должен в своей жизни один раз написать бесконечный цикл. Сегодня понимаю, что и удалить неправильно должен. |
|||
40
_barracuda_
11.05.18
✎
08:55
|
(38)в прямом смысле.мне не удалось ее скачать.Сделал как описал Волшебник и (28)
|
|||
41
assasu
11.05.18
✎
08:57
|
(0)мой, проверенный годами метод
мУдалить = Новый Массив; для каждого стр из тз цикл если....тогда мУдалить.Добавить(стр); конецесли; конеццикла; для каждого уу из мУдалить Цикл тз.Удалить(уу); конеццикла; |
|||
42
3achem
11.05.18
✎
10:10
|
(38) Даже не знаю как это (40) прокомментировать
|
|||
43
Мыш
11.05.18
✎
10:14
|
Тоже отмечусь:
Для Счетчик=1-Коллекция.Количество() По 0 Цикл ЭлементКоллекции=Коллекция[-Счетчик]; КонецЦикла; |
|||
44
MiamiVice
11.05.18
✎
11:26
|
Товары = Товары.Скопировать(Новый Структура("Флаг", Истина));
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |