1c8 поиск значения в Таблице значений

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#1
Есть две таблицы значений ТЗ1 и ТЗ2.
Обхожу в цикле Для каждого СТЗ из ТЗ1 - получаю Код = СТЗ.Код
Далее мне нужно этот код найти в ТЗ2. Добиваюсь этого так - СтрокаТЗ = ТЗ2.Найти(Код,"КодЦБ");
Но дело в том, что строк с таким кодом может быть несколько, а мне почему-то возвращается только первый найденный.
Подскажите пожалуйста как правильнее организовать поиск. Задача такая - получить все строки из ТЗ2, если значения поля КодЦБ = Код
 
B

binx

#2
Есть две таблицы значений ТЗ1 и ТЗ2.
Обхожу в цикле Для каждого СТЗ из ТЗ1 - получаю Код = СТЗ.Код
Далее мне нужно этот код найти в ТЗ2. Добиваюсь этого так - СтрокаТЗ = ТЗ2.Найти(Код,"КодЦБ");
Но дело в том, что строк с таким кодом может быть несколько, а мне почему-то возвращается только первый найденный.
Подскажите пожалуйста как правильнее организовать поиск. Задача такая - получить все строки из ТЗ2, если значения поля КодЦБ = Код
А почему бы не удалить найденную строку с совпадением в ТЗ2 и продолжить поиск, если этот поиск оформить в процедуру и передать ТЗ2 по Значению, то и дополнит. ТаблицЗначений создавать не придется.
 

Zab

Well-known member
07.08.2006
583
0
#3
А я бы предварительно отсортировал ТЗ2 по полю код (методом ТЗ Сортировать(), не надо вспоминать метод пузырька) и после СтрокаТЗ = ТЗ2.Найти(Код,"КодЦБ"); перебирал бы цикле (Например: Пока КодЦБ = Код Цикл) строки до тех пор, пока код не изменится. К сожалению, седьмая платформа на самом деле ищет только первое вхождение...
 
B

binx

#4
Есть две таблицы значений ТЗ1 и ТЗ2.
Обхожу в цикле Для каждого СТЗ из ТЗ1 - получаю Код = СТЗ.Код
Далее мне нужно этот код найти в ТЗ2. Добиваюсь этого так - СтрокаТЗ = ТЗ2.Найти(Код,"КодЦБ");
Но дело в том, что строк с таким кодом может быть несколько, а мне почему-то возвращается только первый найденный.
Подскажите пожалуйста как правильнее организовать поиск. Задача такая - получить все строки из ТЗ2, если значения поля КодЦБ = Код
маленькое уточнение, если удалить строку то указатель текущей строки автоматически перемещается на следующую строку, поэтому если захочешь делать методом перебора вместо поиска, необходимо проверить строку сразу после удаления.
 

Zab

Well-known member
07.08.2006
583
0
#5
Упс, не внимательно читаю, платформа восьмая. А покажи код, где ты получаешь результат поиска.
 

Zab

Well-known member
07.08.2006
583
0
#6
Должно быть что-то типа:
Код:
Отбор = Новый Структура();
Отбор.Вставить("КодЦБ",Код);
Строки = тз.НайтиСтроки(Отбор);
Для ж=0 По Строки.Количество()-1 Цикл
// Строки[ж] - тут по очереди будут все строки
КонецЦикла;