![]() |
![]() |
|
Странное поведение ТЗ | ☑ | ||
---|---|---|---|---|
0
ParinovS
04.03.13
✎
13:19
|
Доброго всем дня! Уже час не могу понять странное поведение ТЗ.
В общем есть 2 ТЗ, которые я получаю из запроса (методом Выгрузить()). В первую ТЗ у меня помещается результат из запроса к БД, из которой запускаю обработку, во вторую из запроса к другой БД(копия первой). В общем дергаю движения и нужно найти отличия. Вот таким кодом удаляю в 2-х ТЗ одинаковые строки: Для Каждого СтрокаТек Из РезультатТекущий Цикл СтруктураОтбора = Новый Структура; Для каждого Колонка Из РезультатТекущий.Колонки Цикл СтруктураОтбора.Вставить(Колонка.Имя, СтрокаТек[Колонка.Имя]); КонецЦикла; НайденныеСтроки = ТаблицаКБД.НайтиСтроки(СтруктураОтбора); Если НайденныеСтроки.Количество() > 0 Тогда РезультатТекущий.Удалить(СтрокаТек); Для номер =0 По НайденныеСтроки.Количество()-1 Цикл ТаблицаКБД.Удалить(НайденныеСтроки[номер]); КонецЦикла; КонецЕсли; КонецЦикла; Но самое веселое то, что цикл доходит примерно до середины. Т.е. размер 51 элемент, а цикл проходит всего лишь 25 раз. |
|||
1
zladenuw
04.03.13
✎
13:20
|
ну так ты удаляешь сразу. индекс сдвигается
|
|||
2
ParinovS
04.03.13
✎
13:20
|
добавлю, вторую ТЗ привожу к типу данных первой.
ТаблицаКБД = ЗначениеИзСтрокиВнутр( V8.ЗначениеВСтрокуВнутр(РезультаткБД)); Так что, типы колонок и их количество у меня точно совпадают в 2-х ТЗ. |
|||
3
Wobland
04.03.13
✎
13:20
|
удалять строки из ТЗ нужно с конца. не вчитывался
|
|||
4
MSII
04.03.13
✎
13:21
|
Добавить удаляемые строки в массив, потом удалять.
|
|||
5
ParinovS
04.03.13
✎
13:22
|
аха, спасибо!) сейчас попробую)
|
|||
6
ParinovS
04.03.13
✎
13:26
|
все, спасибо всем!) Заработало))) сделал так:
МассивУдаляемых = Новый Массив; Для Каждого СтрокаТек Из РезультатТекущий Цикл СтруктураОтбора = Новый Структура; Для каждого Колонка Из РезультатТекущий.Колонки Цикл СтруктураОтбора.Вставить(Колонка.Имя, СтрокаТек[Колонка.Имя]); КонецЦикла; НайденныеСтроки = ТаблицаКБД.НайтиСтроки(СтруктураОтбора); Если НайденныеСтроки.Количество() > 0 Тогда МассивУдаляемых.Добавить(СтрокаТек); Для номер =0 По НайденныеСтроки.Количество()-1 Цикл ТаблицаКБД.Удалить(НайденныеСтроки[номер]); КонецЦикла; КонецЕсли; КонецЦикла; Для Номер = 0 По МассивУдаляемых.Количество()-1 Цикл РезультатТекущий.Удалить(МассивУдаляемых[номер]); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |