|
Фильтр один, отбор по трем полям | ☑ | ||
---|---|---|---|---|
0
Rumpil
01.02.12
✎
18:07
|
Есть список клиентов, в карточке клиента есть 3 идентичных поля - Телефон1, Телефон2, Телефон3. У формы списка есть фильтр (один), который называется Телефон. Нужно чтобы при вводе значение в это поле фильтра происходил отбор списка клиентов - если хотя бы одно из трех полей Телефон 1 2 3 содержит введенное в фильтр значение, то клиент отбирается. В какую сторону копать плиз ?
Что то типа этого, но как то используя ИЛИ что ли ? ЭлементыФормы.СписокКонтрагенты.Значение.Отбор.Телефон1.Использование=Истина; ЭлементыФормы.СписокКонтрагенты.Значение.Отбор.Телефон1.ВидСравнения=ВидСравнения.Содержит; ЭлементыФормы.СписокКонтрагенты.Значение.Отбор.Телефон1.Значение=СокрЛП(ФильтрПоТелефон); |
|||
1
Rumpil
01.02.12
✎
18:15
|
Единственный вариант на ум приходит - написать запрос, который отберет по справочнику клиенты элементы отвечающие фильтру, а потом на список клиенто поставить фильтр код с типом сравнения "содержит" и пихнуть коды элементов из результата запроса
|
|||
2
Пират
01.02.12
✎
18:15
|
ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке;
|
|||
3
Живой Ископаемый
01.02.12
✎
18:16
|
никак
|
|||
4
Rumpil
01.02.12
✎
18:16
|
(2) не работает такое
|
|||
5
Живой Ископаемый
01.02.12
✎
18:16
|
2(1) вот-вот...
|
|||
6
Rumpil
01.02.12
✎
18:16
|
(3) вариант с запросом только ?
|
|||
7
Живой Ископаемый
01.02.12
✎
18:19
|
Еще прикольно почему нет отбора на Ссылка ВСписке, да впрочем и на "=" тоже
2(6) да, только не " список клиенто поставить фильтр код с типом сравнения "содержит" и пихнуть коды элементов из результата запроса" а фильтр на поле "Код в СПИСКЕ " и скормить список кодов полученных контрагентов.. в общем ужасно |
|||
8
fisher
01.02.12
✎
18:25
|
(1) Рабочий вариант для 8.1, делал подобное. Только не на код, а на ссылку фильтр. И группы при таком подходе не фильтруются (пустые выводятся тоже).
А для 8.2 можно ж вроде написать свой запрос для источника данных формы списка. Разве не взлетит? |
|||
9
Reset
01.02.12
✎
18:26
|
(7) Как нету отбора на ссылку в списке?
|
|||
10
Reset
01.02.12
✎
18:27
|
Форма.СправочникСписок.Отбор.Ссылка.ВидСравнения=ВидСравнения.ВСписке;
Форма.СправочникСписок.Отбор.Ссылка.Значение=СписокЗначений; Форма.СправочникСписок.Отбор.Ссылка.Использование=Истина; Работает такое |
|||
11
Живой Ископаемый
01.02.12
✎
18:29
|
2(10) может гоню, просто смотрел в интерактивном отборе - нету ССылка
|
|||
12
Reset
01.02.12
✎
18:29
|
(11) Да, только программно
|
|||
13
Живой Ископаемый
01.02.12
✎
18:29
|
2(8) мы про обычные формы?
|
|||
14
Живой Ископаемый
01.02.12
✎
18:30
|
2(12) а, тогда супер...
|
|||
15
Rumpil
01.02.12
✎
18:31
|
Все заработало, сделал запрос, получил список значений кодов клиентов и потом как в (10) отбор поставит
|
|||
16
Reset
01.02.12
✎
18:31
|
Я тоже думал что обычные. В УФ у меня ноль опыта, но таки там вроде существенно ширше(ширее) возможности. В частности, вроде возмождны по ИЛИ отборы (как вроде автору и надо) [могу соврать]
|
|||
17
fisher
01.02.12
✎
18:31
|
(13) Я бы переделал на управляемую ради такого дела, если взлетит. Условие на ссылку не гуд. Притормаживает на больших списках вестимо.
|
|||
18
Чарльз Треч
01.02.12
✎
18:33
|
(0) Сделай секретное поле "Телефон4", содержащее Телефон+" "+Телефон2+" "+Телефон3, и фильтруй по нему.
|
|||
19
Rumpil
01.02.12
✎
18:35
|
Вот код если кому понадобится:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Контрагенты.Код |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.Телефон1 ПОДОБНО &Телефон | ИЛИ Контрагенты.Телефон2 ПОДОБНО &Телефон | ИЛИ Контрагенты.Телефон3 ПОДОБНО &Телефон"; Запрос.УстановитьПараметр("Телефон",ФильтрПоТелефон); Выборка = Запрос.Выполнить().Выбрать(); СписокКодов = Новый СписокЗначений; пока Выборка.Следующий() Цикл СписокКодов.Добавить(Выборка.Код); КонецЦикла; ЭлементыФормы.СписокКонтрагенты.Значение.Отбор.Код.Использование=Истина; ЭлементыФормы.СписокКонтрагенты.Значение.Отбор.Код.ВидСравнения=ВидСравнения.ВСписке; ЭлементыФормы.СписокКонтрагенты.Значение.Отбор.Код.Значение=СписокКодов; |
|||
20
Reset
01.02.12
✎
18:35
|
(18) только там какой-нибудть НПП или еще пожутче символ, для уменьшения риска совпадения :)
|
|||
21
Rumpil
01.02.12
✎
18:36
|
тьфу, только убрать ПЕРВЫЕ 1
|
|||
22
Reset
01.02.12
✎
18:37
|
(19) ЭлементыФормы.СписокКонтрагенты.Значение == СписокКонтрагенты (как правило)
Отбор устанавливается на источник данных. |
|||
23
Живой Ископаемый
01.02.12
✎
18:38
|
2(22) это что?
|
|||
24
Reset
01.02.12
✎
18:38
|
пока Выборка.Следующий() Цикл
СписокКодов.Добавить(Выборка.Код); КонецЦикла RTFM -- > СписокКодов.ЗагрузитьЗначения |
|||
25
Reset
01.02.12
✎
18:39
|
(23) докопался до написания. "СписокКонтрагенты" короче, при водит к тому же результату, и, имхо, читабельней.
|
|||
26
Живой Ископаемый
01.02.12
✎
18:39
|
а..
|
|||
27
Пират
01.02.12
✎
19:07
|
(4) работает и еще как.
|
|||
28
Живой Ископаемый
01.02.12
✎
19:09
|
2(27) работает как в (10)и (19)
А если ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке; ЭлементОбора.Список = СписокСодержащийНомер1Номер2ИНомер3, то конечно не сработает... вернее сработает, но выдаст муйню |
|||
29
Пират
01.02.12
✎
19:12
|
(28) Я обычно, пишу запрос по условиям, выгружаю нужные данные
в ЭлементОтбора.Значение = СписокЗначений ЭлементОтбора.Использование = Истина. |
|||
30
Пират
01.02.12
✎
19:13
|
+(29) и все без проблем работает
|
|||
31
Живой Ископаемый
01.02.12
✎
19:15
|
2(29) в (2) про это НИ СЛОВА.
И тогда уж конечно вступает в свои права фантазия читающего. Можно нафантазировать (28), а можно (29) но фокус в том, что человек и спрашивал про способ описанный в (29) |
|||
32
Пират
01.02.12
✎
19:16
|
(31) не догадались... значит :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |