|
|
Поиск по элементам коллекции набора данных СКД |
☑ |
|
0
Leksus
16.09.11
✎
14:11
|
Например часто возникает такая задача:
необходимо в настройках СКД программно найти и установить поле отбора.
Как это эффективно решать?
У элементов коллекции набора данных СКД нет метода Найти()
Есть возможность получить по индексу, но как получить индекс необходимого элемента?
|
|
|
1
also
16.09.11
✎
14:21
|
Перебор
|
|
|
2
Leksus
16.09.11
✎
14:37
|
(1) печально :(
|
|
|
3
chingiz
16.09.11
✎
15:24
|
КоллекцияЭлементовОтбораКомпоновкиДанных (DataCompositionFilterItemCollection)
Индекс (IndexOf)
Синтаксис:
Индекс(<Элемент>)
Параметры:
<Элемент> (обязательный)
Тип: ЭлементОтбораКомпоновкиДанных; ГруппаЭлементовОтбораКомпоновкиДанных. Элемент, индекс которого определяется.
Возвращаемое значение:
Тип: Число.
Описание:
Получает индекс элемента в коллекции.
|
|
|
4
Axel2009
16.09.11
✎
15:35
|
(3) особенно если надо найти по имени
|
|
|
5
chingiz
16.09.11
✎
15:36
|
Минуя индекс -
|
|
|
6
chingiz
16.09.11
✎
15:37
|
Сам сейчас сижу над подобным. Только не с отбором, а с выбором 8)
|
|
|
7
Axel2009
16.09.11
✎
15:42
|
а с индексом как по имени?
|
|
|
8
chingiz
16.09.11
✎
15:48
|
Да я вот сам бьюсь. Мне нужно получить индекс ГруппыВыбранныхЭлементов и что-то не выходит.
КомпоновщикНастроек.Настройки.Выбор.Элементы[2].Элементы.Получить(ЭлементыФормы.ПолеСписка.ТекущаяСтрока.ПолучитьИдентификатор())
Вот с ПолемСписка все ясно, он берет Текущую Строку и получает индекс, и мы его благополучно пихаем в Получить. Но вот порнографию в виде "Элементы[2]" мне нужно убрать, а то пользователь ведь может передвинуть ГруппуПолей в настройках...
|
|
|
9
Axel2009
16.09.11
✎
15:53
|
а что во 2ом элементе находится?
|
|
|
10
Axel2009
16.09.11
✎
15:53
|
что делать если пользователь "может удалить"?
|
|
|
11
chingiz
16.09.11
✎
16:05
|
Первый это ГруппаВыбранныхПолей, а второй сами поля. Ну дак если удалит, то и поля не будет...значит ошибка :) Мне то не грозит, эта Группа всегда включена и используется....а вот то что ее могут подвинуть, это нужно решить :\
|
|
|
12
Axel2009
16.09.11
✎
16:08
|
ну сделай имя группировки. и проверяй по имени
|
|
|
13
Робинзон Крузо
16.09.11
✎
16:19
|
В (1), пожалуй, правильно сказано. Отборов не бывает уж очень много. так что использование перебора в данном случае некритично.
|
|
|
14
chingiz
16.09.11
✎
16:27
|
Мда, что же я на (1) не посмотрел :) Вот и решение в коде:
Для каждого Элемент из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
Если Элемент.Заголовок = "Характер поездок" Тогда
Индекс = КомпоновщикНастроек.Настройки.Выбор.Элементы.Индекс(Элемент);
КонецЕсли;
КонецЦикла;
|
|
|
15
chingiz
16.09.11
✎
16:28
|
Респект (1) и (13), я уже как только не извращаюсь 2 часа по незнанию 8))
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший