|
Перенос строк из одной таблицы в другую | ☑ | ||
|---|---|---|---|---|
|
0
FuriKuri
17.09.13
✎
14:56
|
В документе есть 2 табличные части. Перед записью дока идет проверка: Если в таблице "товары" у какого либо элемента, количество = 0, то этот элемент переносится в таблицу "вычерки". Но появилась такая проблема, при проведении документа переносятся не все позиции, и приходится нажимать "Провести" несколько раз. Из за чего происходят такие пропуски?
Для каждого СтрокаТаблицыИсточника Из Товары Цикл Если СтрокаТаблицыИсточника.Количество=0 тогда СтрокаТаблицыПриемника = Вычерки.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемника, СтрокаТаблицыИсточника); Товары.Удалить(СтрокаТаблицыИсточника); КонецЕсли; КонецЦикла; |
|||
|
1
MKZM
17.09.13
✎
14:58
|
Так и есть. Составь индексы и по уже по ним
|
|||
|
2
Песец
17.09.13
✎
14:58
|
Из-за пропусков в ДНК :(
|
|||
|
3
kosts
17.09.13
✎
14:59
|
(0) Нельзя удалять элементы коллекции в цикле по этой коллекции...
|
|||
|
4
НеБорис Нуралиев
17.09.13
✎
14:59
|
(0) Товары.Удалить(СтрокаТаблицыИсточника);
Это очень старый баян. |
|||
|
5
KishMish
17.09.13
✎
15:00
|
создай массив строк, для переноса. потом цикл по массиву и копируй и удаляй эти строки
|
|||
|
6
Песец
17.09.13
✎
15:00
|
(3) Почему?
|
|||
|
7
FuriKuri
17.09.13
✎
15:01
|
(5) Спасибо. Попробую
|
|||
|
8
catena
17.09.13
✎
15:02
|
(6)Потому что при удалении эн-ной строки эн+1 строка становится эн-ной, а твой цикл уже ее проверил и спокойно скачет дальше.
|
|||
|
9
FuriKuri
17.09.13
✎
15:04
|
(8) Теперь точно все понял :)
|
|||
|
10
Песец
17.09.13
✎
15:05
|
(8) У меня циклы не скачут :)
|
|||
|
11
Sabbath
17.09.13
✎
15:07
|
(0) Добавляй в массив и отдельно удаляй
|
| Форум | Правила | Описание | Секции | Поиск |