Имя: Пароль:
1C
1С v8
Поиск строки в Дереве
0 renowka
 
15.03.13
10:06
На управляемой форме расположено заполненное дерево. Есть поле ввода строки и кнопка "поиска". Как сделать поиск строки введенной в поле вовода по нажатию на кнопку "поиск"? По аналогии с тем что расположен в главной панели в обычном приложении.
1 sapphire
 
15.03.13
10:07
(0) Свойство ОтборСтрок
2 sapphire
 
15.03.13
10:08
Ну или находить строку и делать её текущей.
3 renowka
 
15.03.13
10:11
Могу найти строки и получить их индексы. Не получается по нажатию на "поиск", выделить следующую строку
4 pessok
 
15.03.13
10:12
(3) что конкретно не получается?
5 pessok
 
15.03.13
10:12
+(4) и почему именно индекс, а не сама строка?
6 renowka
 
15.03.13
10:13
Индекс - потому что 8.2
7 renowka
 
15.03.13
10:14
Не получается нажать "поиск", спозиционироваться на строке и остановиться. Нажать опять поиск - спозиционироваться на следующей строке
8 pessok
 
15.03.13
10:14
(6) а СтрокаДереваЗначений, потому что гладиолус, не выходит?
9 pessok
 
15.03.13
10:15
КоллекцияСтрокДереваЗначений (ValueTreeRowCollection)
Найти (Find)
Синтаксис:

Найти(<Значение>, <Колонки>, <ВключатьПодчиненные>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Искомое значение.
<Колонки> (необязательный)

Тип: Строка.
Список имен колонок, в которых будет осуществляться поиск, разделенных запятыми.
Если параметр не указан, поиск осуществляется по всем колонкам дерева.
Значение по умолчанию: Пустая строка
<ВключатьПодчиненные> (необязательный)

Тип: Булево.
Определяет, будут ли участвовать в поиске строки подчиненных коллекций (если таковые имеются). Истина - строки подчиненных коллекций участвуют в поиске.
Значение по умолчанию: Ложь
Возвращаемое значение:

Тип: СтрокаДереваЗначений, Неопределено.
Строка, которая содержит искомое значение. Если значение не найдено, то возвращается значение Неопределено.
Описание:

Осуществляет поиск значения в дереве в указанных колонках коллекции строк дерева значений.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Метод эффективно использовать для поиска уникальных значений.
Пример:

НайденнаяСтрока = СтрокиСостава.Найти(ТекЗатрата, "Затрата");
Если НайденнаяСтрока = Неопределено Тогда
   Текст = "ru = ""Затрата не найдена!"";"
    + " en = ""Expense not found!""";
   Предупреждение(НСтр(Текст));
Иначе
   Количество = НайденнаяСтрока.Норма;
КонецЕсли;
10 renowka
 
15.03.13
10:18
Мне нужно искать любую введенную подстроку, этот метод даст результат только на полное совпадение строки
11 renowka
 
15.03.13
10:19
Индексы получаю Коллекции элементов моего дерева и методом Найти(СтрокаДерева[ИмяПоля], СтрокаПоиска)
12 pessok
 
15.03.13
10:21
(11) дык СтрокаДерева это и есть то, что тебе нужно
13 pessok
 
15.03.13
10:22
(11) насколько я понимаю, ты рекурсивно оббегаешь дерево циклом. вот когда нашел, по СтрокаДерева и позиционируйся, а не по индексу его
14 renowka
 
15.03.13
10:26
ок, в дереве две, три, ... одинаковые, как на следующей найденной строке спозиционироваться?
15 pessok
 
15.03.13
10:27
(14) хранить в переменной модуля позицию счетчика, начинать следуюзий обход уже с нее
16 sapphire
 
15.03.13
10:27
(14) Запоминать, что ты на ней уже останавливалась
17 pessok
 
15.03.13
10:30
вообще, конечно, спасибо 1С за такой онанизм со списками на УФ
18 renowka
 
15.03.13
10:50
(16) Вот с этим и проблема. подскажите как это делается?
Есть ТаблицаИндексов и ДеревоДокументов. По кнопке нужно брать следующий индекс и искать строку в этом дереве, останавливаясь перед каждым новым индексом
19 renowka
 
15.03.13
14:29
идеи?