|
Перенос строк из одной таблицы в другую
| ☑ |
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) Добавляй в массив и отдельно удаляй
|
|