|   |   | 
| 
 | Фильтр один, отбор по трем полям | ☑ | ||
|---|---|---|---|---|
| 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) не догадались... значит :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |