Перейти к содержимому


Фильтр по полю (свойство поля)

фильтр

Сообщений в теме: 11

#1 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 03 Июль 2014 - 22:13

У полей есть такое свойство - Фильтр по полю... , которое позволяет фильтровать выборку значений связанного поля по другому полю связанной таблицы. Мне необходимо отфильтровать эту выборку по двум полям связанной таблицы. И раз уж стандартно нет такого механизма, то можно ли реализовать его через вычисления? Для начала, как через вычисление задать для поля определенную выборку значений, которые будут в виде выпадающего списка? Не напишешь же
$line['field'] IN (SELECT...)


#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 04 Июль 2014 - 08:27

Нет, в КБ не существует вычислений для формирования списков, только для заполнения значений полей. Но в частных случаях можно фильтровать и по двумя полям, если выставлять их последовательно, двухуровневым фильтром (т.е. вначале фильтруем второе поле по первому, а затем итоговое по второму).

#3 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 05 Июль 2014 - 16:30

Пробовал так, в моем случае это не помогает. Итоговое поле фильтруется по второму, второе - по первому. Но в итоговом поле получается выборка, как будто первого фильтра и нет, т.е. получается ИЛИ, а не И, не одновременная фильтрация.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Июль 2014 - 16:37

Ну значит, в вашем случае сделать такой фильтр невозможно на данный момент. Я потому и написал про частные случаи.

#5 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 11 Июль 2014 - 15:37

А что тогда означает конструкция $line['Поле']['raw']? Разве это не список возможных значений? Очень часто возникает необходимость выбирать значение поля из нескольких значений, которые сформированы определенным образом. И тут нужен механизм, позволяющий либо вручную написать эту выборку, либо очень хорошо отфильтровать значения поля по другим полям в т.ч. и связанных таблиц, т.е. по нескольким полям. Может имеет смысл написать заявку на доработку?

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 11 Июль 2014 - 15:55

Цитата

А что тогда означает конструкция $line['Поле']['raw']? Разве это не список возможных значений?

Нет, конечно. Откуда вам вообще в голову пришло подобное? Это абсолютно из другой оперы и ни малейшего отношения к списку значений не имеет. Я же вам написал - через вычисления абсолютно никак нельзя влиять на списки выбора в форме редактирования. Это можно разве что через достаточно сложный javascript - но это уже и не совсем вычисления. Можете сюда посмотреть для примера. Но это "на свой страх и риск", и я вам там вряд ли помогу, т.к. это не моя статья.

Цитата

Может имеет смысл написать заявку на доработку?

Если честно, сомневаюсь, что в этом будет какой-то существенный смысл.

#7 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 18 Июль 2014 - 14:14

Попробовал поковырять внешние формы на предмет какой-то гибкости, но там мало того, что данные вообще не фильтруются ни по каким полям, выводятся вообще все значения таблицы, так еще и вычисления не работают (например, при выборе контрагента не выводится его телефон). Или может все же есть способ подредактировать код формы, чтобы фильтровать поля? В конце концов, еще есть представления, где я по идее могу написать все как мне нужно. Вопрос только в том, как из представления правильно создать запись в БД. Что скажете?

Сообщение отредактировал Riddick: 18 Июль 2014 - 14:16


#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Июль 2014 - 14:28

Цитата

но там мало того, что данные вообще не фильтруются ни по каким полям, выводятся вообще все значения таблицы

Что значит "не фильтруются"? Не работает фильтр, указанный в настройках поля связи? Тогда это баг/недоработка, отправляйте заявку в техподдержку.

Цитата

так еще и вычисления не работают (например, при выборе контрагента не выводится его телефон)

Какие вычисления? Вы с JS не путаете случайно? Если же речь действительно про вычисления, то их результат не может быть виден в форме, т.к. вычисления работают уже после отправки формы, когда на экран выходит только "форма успешно отправлена" или любой другой ваш текст. Да и не совсем понял, какое отношение имеют вычисления к теме данного разговора, выше я уже писал что фильтрацию вычислением не задать.

#9 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 18 Июль 2014 - 15:28

Да, я про те самые вычисления. Так вот, если они работают после отправки формы, то как же будут фильтроваться данные по вычисляемому полю, если его значение еще не определено? Например, выбираем значение поля1, на его основе срабатывает вычисление поля2, а поле3 фильтрует свои значения по полю 2. Получается в форме эти значения не будут фильтроваться, т.к. поле2 еще не заполнено?

И вычисления вычислениями, а вопрос мой был про формы или представления. Можно ли в них реализовать фильтрацию по нескольким полям, ведь там просто php код, где я могу написать все как мне надо? Чтобы не быть голословным, опишу сразу задачу. Есть представление, в котором в виде гиперссылок выводятся рейсы на определенную дату. При переходе по ссылке мы должны попасть на другое представление, которое представляет собой форму с полями для оформления билета. Мы должны передать в это представление ID рейса и точки отправления/прибытия, далее выбрать пассажира, место и нажать кнопку "забронировать". Загвоздка в том, что поле Место выбирается из таблицы занятости мест и должно фильтроваться по полям рейс, откуда и куда, иначе там будет мешанина из номеров мест, которые непонятно к чему относятся.

Уже проделана довольно большая работа по этой системе, но тут вот такой затык и никак не придумаю, как его обойти. Буду признателен, если подскажете направление.

#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Июль 2014 - 16:07

Цитата

Да, я про те самые вычисления. Так вот, если они работают после отправки формы, то как же будут фильтроваться данные по вычисляемому полю, если его значение еще не определено? Например, выбираем значение поля1, на его основе срабатывает вычисление поля2, а поле3 фильтрует свои значения по полю 2. Получается в форме эти значения не будут фильтроваться, т.к. поле2 еще не заполнено?

Это в любом случае не оптимальное решение, т.к. требует перезагрузки страницы, т.е. пользователь выбирает поле1, затем сохраняет запись (для срабатывания вычисления), и только потом выбирает дальше. Получается двойное сохранение какое-то. И уж тем более, как я уже сказал, это никак не сработает во внешней форме, т.к. ее нельзя сохранять 2 раза. Непонятно, в чем вопрос в итоге. Просто не используйте этот вариант, его никто и не предлагает нигде.

Цитата

И вычисления вычислениями, а вопрос мой был про формы или представления. Можно ли в них реализовать фильтрацию по нескольким полям, ведь там просто php код, где я могу написать все как мне надо?

В представлении вы можете реализовать что угодно, там нет ограничений по коду. Насчет форм не могу такого сказать.

Цитата

Есть представление, в котором в виде гиперссылок выводятся рейсы на определенную дату. При переходе по ссылке мы должны попасть на другое представление, которое представляет собой форму с полями для оформления билета. Мы должны передать в это представление ID рейса и точки отправления/прибытия, далее выбрать пассажира, место и нажать кнопку "забронировать". Загвоздка в том, что поле Место выбирается из таблицы занятости мест и должно фильтроваться по полям рейс, откуда и куда, иначе там будет мешанина из номеров мест, которые непонятно к чему относятся.

Ну так формируйте список мест в соответствии с переданным параметром рейса, в чем проблема то? Выше я сказал уже, что в представлениях ограничений нет. Тем более вам в любом случае этот список самому вручную формировать придется, там нет готовых полей связи. Делаете нужный запрос к БД, получаете список незанятых мест и формируете выпадающий список (или любой другой удобный вам формат выбора). Тут все зависит уже только от ваших знаний и навыков программирования.

#11 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 18 Июль 2014 - 16:41

Хорошо, буду разрабатывать этот вариант. Подскажите только, как передавать параметры из одного отчета в другой при условии, что переход между ними осуществляется по ссылке. Т.е. необходимо заполнить поле на странице второго представления значением ID, полученным в первом.

#12 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Июль 2014 - 16:53

Стандартная уж передача между двумя скриптами, по параметрам в адресной строке, а в скрипте-получателе, соответственно обработка полученного get-массива.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных