|
Удаление строк документа как оптимизировать? вложенный цикл | ☑ | ||
|---|---|---|---|---|
|
0
temsa
26.06.16
✎
11:53
|
Есть таблица ексель. При чем в этой таблице могут быть несколько строк с одного документа которых надо удалить.
Как удалить все нужные строки в один проход в реал документе и записать всего один раз??? Пока у меня так: &НаСервере Процедура ОбработатьДанные(Массив,ТабДок) Если Не Массив[0][0] = "Номер" Тогда Возврат; КонецЕсли; ЧислоСтрок = Массив[0].Количество(); Для к = 1 По ЧислоСтрок-1 Цикл ТекНомер = Массив[0][к]; ТекКодНом= Массив[1][к]; ТекНаим = Массив[2][к]; ТекКол = Массив[3][к]; ТекЦена = Массив[4][к]; ТекСумма = Массив[5][к]; НАйден = 0; Документ = Документы.Продажа.НайтиПоНомеру(ТекНомер); Если Не Документ.Пустая() Тогда ТабличнаяЧастьДок = Документ.Товары; Для Каждого ТекущаяСтрока Из Документ.Товары Цикл ТекКодД = СокрЛП(ТекущаяСтрока.Номенклатура.Код); ТекНаимД = СокрЛП(ТекущаяСтрока.Номенклатура.Наименование); ТекКолД = ТекущаяСтрока.Количество; Если ((ТекНаим = ТекНаимД) и (ТекКол = ТекКолД)) или ((ТекКодНом = ТекКодД) и (ТекКол = ТекКолД)) Тогда ТабличнаяЧастьДок.Удалить(ТекущаяСтрока.НомерСтроки); НАйден = 1; Прервать; Конецесли; КонецЦикла; Если НАйден = 0 Тогда КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
|
1
temsa
26.06.16
✎
11:55
|
Подумал может сделать рекурсию при уже выбранном доку перебирая ексель до номера дока кторый меняется...и на этом рекурсию завершать и по новой.
|
|||
|
2
temsa
26.06.16
✎
11:56
|
Счетчик строк = "К" не жестко менять а по условию...
|
|||
|
3
jsmith
26.06.16
✎
11:58
|
Лучше бери нужные.
|
|||
|
4
temsa
26.06.16
✎
12:02
|
(3) Понял направление мысли. Но ведь построчно надо куда-то временно хранить чтоб потом залить в док один раз...
|
|||
|
5
jsmith
26.06.16
✎
12:03
|
Короче. Я щас код почитал. Немного не то.
|
|||
|
6
temsa
26.06.16
✎
12:05
|
(5) Пока мой код тупо в двойном цикле по одному убирает строки. При этом каждый раз находит док и каждый раз делает обход. Хотя как я уже сказал возможно 4-5 строк надо удалять и они в екселе идут прям последовательно.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |