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

Тема в разделе "1C и всё что с ней связано", создана пользователем KiR, 30 апр 2008.

  1. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

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

    binx Гость

    А почему бы не удалить найденную строку с совпадением в ТЗ2 и продолжить поиск, если этот поиск оформить в процедуру и передать ТЗ2 по Значению, то и дополнит. ТаблицЗначений создавать не придется.
     
  3. Zab

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    А я бы предварительно отсортировал ТЗ2 по полю код (методом ТЗ Сортировать(), не надо вспоминать метод пузырька) и после СтрокаТЗ = ТЗ2.Найти(Код,"КодЦБ"); перебирал бы цикле (Например: Пока КодЦБ = Код Цикл) строки до тех пор, пока код не изменится. К сожалению, седьмая платформа на самом деле ищет только первое вхождение...
     
  4. binx

    binx Гость

    маленькое уточнение, если удалить строку то указатель текущей строки автоматически перемещается на следующую строку, поэтому если захочешь делать методом перебора вместо поиска, необходимо проверить строку сразу после удаления.
     
  5. Zab

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Упс, не внимательно читаю, платформа восьмая. А покажи код, где ты получаешь результат поиска.
     
  6. Zab

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Должно быть что-то типа:
    Код (Text):
    Отбор = Новый Структура();
    Отбор.Вставить("КодЦБ",Код);
    Строки = тз.НайтиСтроки(Отбор);
    Для ж=0 По Строки.Количество()-1 Цикл
    // Строки[ж] - тут по очереди будут все строки
    КонецЦикла;
     
Загрузка...

Поделиться этой страницей