|
Как удалить в ТЧ документа не все строки, а удовлетворяющие нужному условию | ☑ | ||
---|---|---|---|---|
0
ktu78
14.12.15
✎
17:11
|
Добрый день, подскажите пожалуйста коллеги:
Это код удаления всех строк ТЧ ОбъектДокумента = Документ.ПолучитьОбъект(); ОбъектДокумента.Товары.Очистить(); Как удалить в ТЧ документа не все строки, а удовлетворяющие нужному условию Спасибо |
|||
1
ДенисЧ
14.12.15
✎
17:12
|
перебрать строки, найти нужные, записать в массив. Потом пройтись по массиву и удалить
|
|||
2
Смотрящий
14.12.15
✎
17:13
|
перебрать строки, нужные запихнуть в массив, удалить все строки с документа, перенести строки с массива в документ
|
|||
3
Гёдза
14.12.15
✎
17:13
|
есть стопицот способов удаления строк из тз )))
|
|||
4
Злобный Фей
14.12.15
✎
17:14
|
как-то так
МассивУдаляемыхСтрок = Новый Массив; Для Каждого Стр Из ТЧ Цикл Если <блабла> Тогда МассивУдаляемыхСтрок.Добавить(Стр); КонецЕсли; КонецЦикла; Для А = 0 По МассивУдаляемыхСтрок.Количество()-1 Цикл ТЧ.Удалить(МассивУдаляемыхСтрок[А]); КонецЦикла; |
|||
5
igork1966
14.12.15
✎
17:16
|
(4)
МассивУдаляемыхСтрок = Новый Массив; Для Каждого Стр Из ТЧ Цикл Если <блабла> Тогда МассивУдаляемыхСтрок.Добавить(Стр); КонецЕсли; КонецЦикла; Для Каждого Стр Из МассивУдаляемыхСтрок Цикл ТЧ.Удалить(Стр); КонецЦикла; |
|||
6
PR третий
14.12.15
✎
17:16
|
(0) А в чем проблема-то?
|
|||
7
Масянька
14.12.15
✎
17:19
|
(1) (2) (4) (5) А зачем массив? Перебором - не, низя?
|
|||
8
ДенисЧ
14.12.15
✎
17:19
|
(7) Я запрещаю.
|
|||
9
PR третий
14.12.15
✎
17:19
|
(4), (5)
Не? |
|||
10
Масянька
14.12.15
✎
17:20
|
(8) Почему?
|
|||
11
ДенисЧ
14.12.15
✎
17:20
|
(10) Так хочет моя левая пятка.
|
|||
12
PR третий
14.12.15
✎
17:20
|
(10) Провинция'с. Не поймут.
|
|||
13
igork1966
14.12.15
✎
17:20
|
(7) нельзя удалять значения коллекции которую обходишь, одновременно удаляя из нее элементы.
|
|||
14
Масянька
14.12.15
✎
17:21
|
(11) (12) П-п-п-п-предупреждать надо.
(13) Блин... Не знала... |
|||
15
igork1966
14.12.15
✎
17:22
|
(14) получишь неприятные эффекты в виде пропущенных подходящих под условие
|
|||
16
PR третий
14.12.15
✎
17:22
|
(13) Да ты че. А мужики-то и не знают :))
|
|||
17
PR третий
14.12.15
✎
17:23
|
(14) Да не слушай его. Он непрофессионал :))
|
|||
18
PR третий
14.12.15
✎
17:23
|
(15) Вообще-то с конца надо удалять. Или поправку индекса на количество удаленных строк делать.
|
|||
19
igork1966
14.12.15
✎
17:24
|
(18) c конца можно
|
|||
20
Масянька
14.12.15
✎
17:24
|
(18) Ну, на фига интригу портить? :)
|
|||
21
Масянька
14.12.15
✎
17:24
|
(19) Дык, коллекция-то одна... Как же (15)?
|
|||
22
igork1966
14.12.15
✎
17:25
|
(21) если с конца то никогда не удалится следующий элемент коллекции
|
|||
23
PR третий
14.12.15
✎
17:27
|
(19) Эээ... спасибо, КЭП.
|
|||
24
PR третий
14.12.15
✎
17:28
|
(21) Там цимус в том, что гарантированно при удалении элемента с индексах Жо в предварительных удалениях не удалится элемент с индексом < Жо/
|
|||
25
igork1966
14.12.15
✎
17:29
|
(22) + не так выразился
|
|||
26
Живой Ископаемый
14.12.15
✎
17:29
|
Сегодня какой-то лютый писец творицца.
ОбъектДокумента = Документ.ПолучитьОбъект(); КритерийОставленияСтрок = Новый Структура(); КритерийОставленияСтрок .Вставить("КакаяТаКолонка", КакоеТоЗначение) ОбъектДокумента.Товары.Загрузить(ОбъектДокумента.Товары.Загрузить(ОбъектДокумента.Товары.НайтиСтроки(КритерийОставленияСтрок))); Всего-то нужно - посидетьи придумать критерий не для удаления а для оставления строк. И без циклов |
|||
27
Живой Ископаемый
14.12.15
✎
17:30
|
ОбъектДокумента.Товары.Загрузить(ОбъектДокумента.Товары.Выгрузить(ОбъектДокумента.Товары.НайтиСтроки(КритерийОставленияСтрок)));
|
|||
28
Масянька
14.12.15
✎
17:31
|
(26) Давно пора тебя закопать обратно :)))))))))))
|
|||
29
igork1966
14.12.15
✎
17:31
|
(27) все хорошо, но при большом количестве строк в ТЧ более затратно...
|
|||
30
palpetrovich
14.12.15
✎
17:33
|
(27) точно уверен, что там внутри "Загрузить(" и "Выгрузить(" цикла нет? :)
|
|||
31
Живой Ископаемый
14.12.15
✎
17:35
|
2(30) Я уверен что есть, но только меня это как-то слабо колышет. Потому что движковый цкил будет на порядко быстрее 1Совского... Особенно если я еще добавлю внутрь цикла сравнение реквизита например.
|
|||
32
aleks_default
14.12.15
✎
17:39
|
(28)Кстати, слово "ископаемый" является прилагательным и не употребляется без существительного. И еще есть существительное "ископаемое", но оно среднего, а не мужского рода.
|
|||
33
Живой Ископаемый
14.12.15
✎
17:42
|
" еще есть существительное "ископаемое", но оно среднего" исключительно по причине того, что у ископаемых чаще всего не сохраяются первычные половые признаки, в отличии от.
|
|||
34
palpetrovich
14.12.15
✎
17:43
|
(33) балабол :)
|
|||
35
Масянька
14.12.15
✎
17:43
|
(32) Это ты объясняй Живой Ископаемый
|
|||
36
Масянька
14.12.15
✎
17:46
|
+(35) И это - у него в личке указано: пол - Мужской.
|
|||
37
ktu78
14.12.15
✎
17:47
|
Применил конструкцию
Для Каждого ТекСтрока Из Состав Цикл Если ТекСтрока.ВидРасчета = ПланыВидовРасчета.НачисленияУдержания.НайтиПоНаименованию("Оплата рекламному отделу") ТОгда Состав.Удалить(ТекСтрока); КонецЕсли; КонецЦикла; удаляет, но не все записи с видом расчета Оплата рекламному отделу остается примерно половину |
|||
38
PR третий
14.12.15
✎
17:48
|
(37) Потому что не нужно слушать тех, кто не знает, что говорит :))
|
|||
39
palpetrovich
14.12.15
✎
17:49
|
(37) тему читать тщательней нуно :)
|
|||
40
Масянька
14.12.15
✎
17:50
|
(37) Код семерочный (сам переделай, мне - лень):
мКолВоСтрок = гТабВыборка.КоличествоСтрок(); Для Индекс = -мКолВоСтрок По -1 Цикл гТабВыборка.ПолучитьСтрокуПоНомеру(-Индекс); Если гТабВыборка.Пометка = 1 Тогда гТабВыборка.УдалитьСтроку(); КонецЕсли; КонецЦикла; |
|||
41
PR третий
14.12.15
✎
17:51
|
(40) Так в (9) уже написал же
|
|||
42
Живой Ископаемый
14.12.15
✎
17:51
|
2(37) Ты сделал это недостаочно дерзко, нужно было
Для Каждого Строка Из Состав Цикл Если Строка .ВидРасчета = ПланыВидовРасчета.НачисленияУдержания.НайтиПоНаименованию("Оплата рекламному отделу") ТОгда Состав.Удалить(Строка); КонецЕсли; КонецЦикла; Во-вторых https://www.youtube.com/watch?v=dKNdUjyT-sw |
|||
43
фобка
14.12.15
✎
17:55
|
Мда, товарищи, столько ответов...
Мс = состав.найтистроки(новый структура("видрасчета", блабла)); Для каждого стр из мс цикл Состав.удалить(стр); Конеццикла; |
|||
44
Масянька
14.12.15
✎
17:56
|
(43) Демократия, блин :))))))))
|
|||
45
Живой Ископаемый
14.12.15
✎
18:02
|
2(43) Но тока
Для каждого Строка из мс цикл Состав.удалить(Строка); Конеццикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |