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


Фильтр поля связи


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

#1 Александр Jet

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

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

Отправлено 17 Апрель 2018 - 15:04

Можно ли отфильтровать выпадающий список поля связи по нескольким параметрам?

Нужно чтобы выводились значения, которые:
- видны по фильтру ААА
- у которых Поле 1 = $line['Поле 123']

Вариант с созданием общей таблицы не подходит, так как получается слишком громоздкая конструкция для связи трех таблиц..

#2 CbCoder

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

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

Отправлено 18 Апрель 2018 - 09:07

Создайте еще один фильтр где добавьте эти условия и укажите его в настройках поля связи.

#3 Александр Jet

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

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

Отправлено 19 Апрель 2018 - 19:15

В таблице заявки есть два поля типа связь: Категория услуги 4461 и Услуга 4471, которые ведут в две разные таблицы. В первом поле выводятся все категории, во втором должны выйти услуги выбранной категории.

В таблице Услуги 461 я создал фильтр со следующим кодом:
`Категория услуги` = (SELECT id FROM ".DATA_TABLE."461 WHERE f10451 = $line['Категория услуги']['Наименование категории'])  //10451 поле Категория в таблице Услуги, в которой хранится категория услуги

Фильтр должен выводить в поле Услуга таблицы Заявки только те услуги, у которых поле Категория 10451 = $line['Категория услуги']['Наименование категории'].

При сохранении фильтра выходит ошибка.

#4 CbCoder

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

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

Отправлено 20 Апрель 2018 - 09:59

В условии фильтра нельзя использовать $line - это не вычисление. Только имена полей в обратном апострофе `. Но поле из связанной таблицы задать нельзя.

#5 Александр Jet

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

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

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

Сделал следующее:
`Услуга` IN (SELECT f_data541.id
			FROM f_data541
			LEFT JOIN f_data531 on f_data531.id = f_data541.f10521
			WHERE f_data541.f10521 = f_data561.f10681)

Фильтр вставляю в таблицу Услуги, по идее его нужно будет выбрать в настройках поля Услуга таблицы Заявки.

531 - таблица Категории услуг
10441 - поле Наименование категории таблицы Категории услуг

541 - таблица Услуги
10521 - поле Категория услуги таблицы Услуги (связь с таблицей 531)
10531 - поле Наименование услуги таблицы Услуги

561 - таблица Заявки
10681 - поле Категория таблицы Заявки (связь с таблицей 531)
10691 - поле Услуга таблицы Заявки (связь с таблицей 541)

#6 Александр Jet

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

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

Отправлено 19 Июль 2018 - 12:55

Просмотр сообщенияАлександр Jet (18 Июль 2018 - 14:54) писал:

Сделал следующее:

Забыл написать) код не работает, выдает ошибку при сохранении.

Правильно ли я понял, для того чтобы отфильтровать выпадающий список поля связи Услуга по полю Категория в таблице Заявки, нужно создать фильтр в таблице Услуги и выбрать его в настройках поля связи Услуга?

#7 CbCoder

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

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

Отправлено 19 Июль 2018 - 14:13

Если вам нужен динамический фильтр по полю (т.е. вначале выбрали Категорию и затем поле связи Услуга должно по нему отфильтроваться), то вам не нужно создавать стандартный фильтр, а просто выбрать в настройках фильтра поля связи "по полю Категория". Если я конечно правильно понял вашу задачу.

#8 Александр Jet

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

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

Отправлено 19 Июль 2018 - 21:13

Просмотр сообщенияCbCoder (19 Июль 2018 - 14:13) писал:

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

Только помимо стандартных настроек фильтра в поле связи, я хочу чтобы применялись дополнительные настройки, как я писал в начале темы, что-то вроде:
{стандартные настройки фильтра, задаваемые в поле связи} and `Кто добавил` = {текущий}

Если в настройках поля связи выбрать фильтр "по полю Категория" то будут видны вообще все строки Услуг с выбранной категорией. При этом будут отображаться даже те строки, к которым у пользователя доступа нет.

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

Что в этом случае писать в фильтре вместо {стандартные настройки фильтра, задаваемые в поле связи} и где этот фильтр сохранять?

#9 CbCoder

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

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

Отправлено 20 Июль 2018 - 09:48

Цитата

Если в настройках поля связи выбрать фильтр "по полю Категория" то будут видны вообще все строки Услуг с выбранной категорией. При этом будут отображаться даже те строки, к которым у пользователя доступа нет.

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

#10 Александр Jet

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

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

Отправлено 20 Июль 2018 - 13:25

Просмотр сообщенияCbCoder (20 Июль 2018 - 09:48) писал:

Если такое действительно имеет место, напишите заявку в техподдержку с ссылкой на мое сообщение.
в техподдержку писал давно по поводу этой проблемы, еще до 3.0, обещали поправить но до сих пор не работает. в любом случае запрос продублирую еще раз


Просмотр сообщенияCbCoder (20 Июль 2018 - 09:48) писал:

Даже если вы выбрали фильтр по полю (а не "по умолчанию"), кроме фильтрации по полю должна также идти и фильтрация по доступу, автоматически.
не могли бы все равно предоставить пример подобного фильтра и написать, где его сохранять. это пригодится для других вычислений (например фильтровать выпадающий список не по одному, а по двум полям)

#11 CbCoder

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

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

Отправлено 20 Июль 2018 - 17:08

Так не создать такой фильтр, в том и дело. Это на уровне движка только можно реализовать.





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

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