|
Удаление проводок в цикле, удаление из коллекции. | ☑ | ||
---|---|---|---|---|
0
12345Kostya
13.05.13
✎
14:18
|
Для каждого ЗначПроводки Из Проводки Цикл
Если ЗначПроводки.СчетКт=Счет10111 Тогда НайденнаяСтрока = ТаблЗначений.Найти(ЗначПроводки.СубконтоКт.Номенклатура); Если НайденнаяСтрока = Неопределено Тогда НоваяСтрока = ТаблЗначений.Добавить(); НоваяСтрока.Номенклатура = ЗначПроводки.СубконтоКт.Номенклатура; Проводки.Удалить(ЗначПроводки); Проводки.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; Получается что при каждом удалении проводки обход уменьшается на единицу, а как быть иначе? |
|||
1
Лефмихалыч
13.05.13
✎
14:20
|
(0) два варианта:
1. Удалять в обратном порядке 2. Выгрузить в ТЗ, в обходе по строкам в массив запомнить строки (не номера, а именно строки), потом в обходе массива грохнуть строки и загрузить все, что останется в набор |
|||
2
Лефмихалыч
13.05.13
✎
14:20
|
и третий вариант - запросом выбрать только нужные проводки и заменить ими набор записей
|
|||
3
Defender aka LINN
13.05.13
✎
14:23
|
Ну и перезаписывать набор после всякого чиха - это тоже сильно.
|
|||
4
samozvanec
13.05.13
✎
14:25
|
(0) не валится?
|
|||
5
12345Kostya
13.05.13
✎
14:38
|
(1) и (2) не понял, можно более подробнее?
Да и еще, я удаляю задвоенную проводку. Изначально я знаю что проводки задвоенные поэтому я ТЗ добавляю строку номенклатуры НоваяСтрока = ТаблЗначений.Добавить(); НоваяСтрока.Номенклатура = ЗначПроводки.СубконтоКт.Номенклатура; И при следующем проходе если указанная в текущей проводке номенклатура из ТЗ найдена то не удаляю проводку НайденнаяСтрока = ТаблЗначений.Найти(ЗначПроводки.СубконтоКт.Номенклатура); В конечном итоге дубли должны пропасть. |
|||
6
12345Kostya
13.05.13
✎
14:51
|
up
|
|||
7
12345Kostya
13.05.13
✎
14:55
|
(4) не валится, просто количество обходов уменьшается
|
|||
8
hhhh
13.05.13
✎
15:05
|
(7) тогда читайте (1)
|
|||
9
12345Kostya
13.05.13
✎
15:10
|
(8)
в (5) написал про (1) ) |
|||
10
hhhh
13.05.13
✎
15:18
|
(9) ну миллион раз объясняли, если удаляешь запись, то весь список сдвигается вверх. Чего непонятного. Поэтому делайте то же самое, но начиная с последней строчки и идите вверх. И закончите первой строкой.
|
|||
11
Лефмихалыч
13.05.13
✎
15:21
|
(5) подробнее - только за тебя все сделать. см вариант (2), он самый наиболее правильный
|
|||
12
12345Kostya
13.05.13
✎
15:28
|
(10) (11) Спокойнее, спокойнее!! я чет не пойму как мне обход делать с конца? Ну хоть пару строчек кода это же не значит что все за меня сделать.
|
|||
13
Trier
13.05.13
✎
15:45
|
Мне лично в обратно порядке не нравится, лучше всего как в (2) делать, либо второй вариант из (1).
Ну или если ближе всего к твоему уже написанному то мождно так й=0; Пока й <> Проводки.Количество()-1 Цикл Если ЗначПроводки.СчетКт=Счет10111 Тогда НайденнаяСтрока = ТаблЗначений.Найти(ЗначПроводки.СубконтоКт.Номенклатура); Если НайденнаяСтрока = Неопределено Тогда НоваяСтрока = ТаблЗначений.Добавить(); НоваяСтрока.Номенклатура = ЗначПроводки.СубконтоКт.Номенклатура; Проводки.Удалить(ЗначПроводки); Проводки.Записать(); Иначе й=й+1; КонецЕсли; КонецЕсли; КонецЦикла; |
|||
14
12345Kostya
13.05.13
✎
16:16
|
(13) А как мне обращаться к текущей проводке?
Ведь я же в НайденнаяСтрока = ТаблЗначений.Найти(ЗначПроводки.СубконтоКт.Номенклатура); обращаюсь к текущей проводке. |
|||
15
Лефмихалыч
13.05.13
✎
16:18
|
(12) Для СчЦ=0 по КоличествоСтрок Цикл
Набор.УдалитьКЪебеням(КоличествоСтрок-СчЦ) |
|||
16
12345Kostya
13.05.13
✎
16:35
|
(15) А как обратиться к текущей строке в теле цикла?
|
|||
17
samozvanec
13.05.13
✎
16:43
|
давно ли у нас в цикле Для Каждого разрешили менять коллекцию?
|
|||
18
12345Kostya
13.05.13
✎
16:46
|
(17) ну так вроде всегда так было
|
|||
19
samozvanec
13.05.13
✎
16:48
|
(18) у вас это где?
|
|||
20
samozvanec
13.05.13
✎
16:50
|
(19) виноват. 1сникам можно, спутал с шарпами.
|
|||
21
12345Kostya
13.05.13
✎
16:52
|
кто такие шарпы?
|
|||
22
12345Kostya
13.05.13
✎
17:00
|
(16) ОЧЕНЬ АКТУАЛЬНО
|
|||
23
12345Kostya
13.05.13
✎
17:04
|
UP
|
|||
24
Лефмихалыч
13.05.13
✎
17:05
|
(22) у тебя уже три готовых решения есть. Подробности - в синтаксис-помощнике.
|
|||
25
Maxus43
13.05.13
✎
17:08
|
(20) всякие делфи и т.д. тоже позволяют, 1с не виновата, это нормально
|
|||
26
12345Kostya
13.05.13
✎
17:12
|
Ну как же три готовых решения это просто варианты (идеи). Нужна помощь в (16) написано. Я бы не писал этот пост, если бы мог обойтись СП.
|
|||
27
12345Kostya
13.05.13
✎
17:15
|
(24) ------> (26)
|
|||
28
hhhh
13.05.13
✎
17:19
|
(27) ну в (13) же написали.
|
|||
29
samozvanec
13.05.13
✎
17:20
|
(26) КоличествоСтрок-СчЦ
вот так обратись. |
|||
30
samozvanec
13.05.13
✎
17:21
|
элемент = коллекция[индекс];
на всякий пожарный |
|||
31
12345Kostya
13.05.13
✎
17:48
|
(15) Почему КоличествоСтрок-СчЦ? Логики не улавливаю.
|
|||
32
hhhh
13.05.13
✎
17:56
|
(31) ряд чисел й = 0,1,2,3,4,5,6,7,8,9
преобразуешь в ряд индекс проводки = 9,8,7,6,5,4,3,2,1,0 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |