ОБСУЖДЕНИЕ

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

5 ответов 6,8 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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