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


Создание фильтра с помощью вычисления

фильтр вычисление создание фильтра фильтр через вычисление фильтр с помощью вычисления

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

#1 fajesu

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
  • Пол:Мужчина

Отправлено 14 Ноябрь 2014 - 10:59

Здравствуйте!

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

P.S. Поиском пользовался, ответ не нашел. Если все же ответ был дан ранее, укажите в какой теме.

С уважением, Евгений.

#2 CbCoder

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

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

Отправлено 17 Ноябрь 2014 - 12:22

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

Специальных функций для этого нет, делаете обычный запрос на добавление записи в таблицу filters. Структуру таблицы можно посмотреть через edit_sql.php, к примеру. Если будут вопросы по структуре - спрашивайте.

#3 fajesu

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
  • Пол:Мужчина

Отправлено 18 Ноябрь 2014 - 07:44

Просмотр сообщенияCbCoder (17 Ноябрь 2014 - 12:22) писал:

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

Специальных функций для этого нет, делаете обычный запрос на добавление записи в таблицу filters. Структуру таблицы можно посмотреть через edit_sql.php, к примеру. Если будут вопросы по структуре - спрашивайте.

При добавлении записи в одной таблице, необходимо создавать фильтр по полю связи в другой таблице. А в этом фильтре есть вложенные фильтры по другим полям.
При удалении той записи, необходимо удалять и фильтр (со всеми вложенными).

Может, есть вариант сделать проще, чем писать запрос к БД? Хотя, Вы говорите, специальных функций таких нет.

#4 CbCoder

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

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

Отправлено 18 Ноябрь 2014 - 09:34

Нет, более простого варианта нет. Просто таких задач ранее не было.

#5 fajesu

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
  • Пол:Мужчина

Отправлено 18 Ноябрь 2014 - 10:09

У меня вопрос по полю "cond_set". Для чего оно и как понять его содержимое?

#6 CbCoder

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

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

Отправлено 19 Ноябрь 2014 - 12:46

Просмотр сообщенияfajesu (18 Ноябрь 2014 - 10:09) писал:

У меня вопрос по полю "cond_set". Для чего оно и как понять его содержимое?

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

Сразу добавлю: поля expert и value также будут равны в вашем случае, они отличаются только в случае вложенного фильтра.

#7 fajesu

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
  • Пол:Мужчина

Отправлено 19 Ноябрь 2014 - 14:37

В том то и дело, что у меня есть вложенные фильтры.
Мне в поле "expert" необходимо писать контрукцию типа "{parent} and ..." или то же, что в поле "value"?

Сообщение отредактировал fajesu: 19 Ноябрь 2014 - 14:47


#8 CbCoder

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

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

Отправлено 20 Ноябрь 2014 - 10:17

Да. В expert вписывается "{parent} and условие текущего фильтра". В value должно быть полное условие, т.е. "(условие родительского фильтра) and условие текущего фильтра".

Хотя такая разница нужна только для автоматического обновления value при редактировании условия родительского через программу. Если это не нужно - можно и одинаковым все задать.

#9 fajesu

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
  • Пол:Мужчина

Отправлено 25 Ноябрь 2014 - 08:11

Добрый день.
Вопрос: я правильно понимаю, что условие "Сохранение в таблице" для выполнения вычисления - это "Добавление новой записи"?
Вопрос 2: как в вычислении узнать ID новой создаваемой записи?

#10 CbCoder

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

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

Отправлено 25 Ноябрь 2014 - 10:21

Цитата

Вопрос: я правильно понимаю, что условие "Сохранение в таблице" для выполнения вычисления - это "Добавление новой записи"?

Не совсем, событие "Сохранение в таблице" возникает при каждом нажатии на кнопку Сохранить, если речь не про подтаблицы. В подтаблицах новая запись сохраняется сразу, поэтому фактически событие срабатывает при добавлении новой записи.


Цитата

Вопрос 2: как в вычислении узнать ID новой создаваемой записи?

Смотря как вы добавляете эту новую запись.

#11 fajesu

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
  • Пол:Мужчина

Отправлено 26 Ноябрь 2014 - 07:17

Просмотр сообщенияCbCoder (25 Ноябрь 2014 - 10:21) писал:

В подтаблицах новая запись сохраняется сразу, поэтому фактически событие срабатывает при добавлении новой записи.
Речь идет не о подтаблицах.


Просмотр сообщенияCbCoder (25 Ноябрь 2014 - 10:21) писал:

Смотря как вы добавляете эту новую запись.
Стандартными средствами: с помощью формы, которая вызывается через скрипт "view_line2.php?line=new", в дальнейшем нажимаю кнопку "Сохранить".
Вот, в вычислении необходимо узнать ID только что созданной таким образом записи.


Просмотр сообщенияCbCoder (25 Ноябрь 2014 - 10:21) писал:

Не совсем, событие "Сохранение в таблице" возникает при каждом нажатии на кнопку Сохранить, если речь не про подтаблицы.
Тогда, как правильно обработать, чтобы тело вычисления не срабатывало при изменении (сохранении) уже существующей записи? Какое условие необходимо добавить в вычислении?

#12 CbCoder

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

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

Отправлено 26 Ноябрь 2014 - 09:51

Цитата

Вот, в вычислении необходимо узнать ID только что созданной таким образом записи.

Если запись текущая, то узнается также как и любое другое поле - через $line['имя поля'], т.е. в данном случае $line['ID'].

Цитата

Тогда, как правильно обработать, чтобы тело вычисления не срабатывало при изменении (сохранении) уже существующей записи? Какое условие необходимо добавить в вычислении?

Добавить проверку на новую запись, флаг лежит в переменной $event['is_new_line'].

#13 fajesu

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
  • Пол:Мужчина

Отправлено 26 Ноябрь 2014 - 10:13

Благодарю! Попробую.

#14 fajesu

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
  • Пол:Мужчина

Отправлено 27 Ноябрь 2014 - 13:56

Попробовал в "Adminer'e" вручную добавить запись в таблицу "f_filters".
Затем решил посмотреть в конфигурации, по адресу "edit_filter.php" фильтр есть, а вот в режиме просмотра таблицы его нет...
С чем это связано? Может куда-то еще данные должны заноситься?

#15 CbCoder

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

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

Отправлено 27 Ноябрь 2014 - 15:24

Это связанно в правами доступа к фильтру. Права лежат в файле f_acc_filters

#16 lodion

    Участник

  • Пользователи
  • PipPip
  • 18 сообщений
  • Пол:Мужчина
  • Город:Уфа
  • Интересы:Программирование, развитие...

Отправлено 13 Май 2015 - 15:01

По каким интересным местам я лажу... Скажите, пожалуйста, каково назначение поля "calculate"?
Если это вычисление, можно или вставить туда обращение к базе?.. Когда (и сколько раз, соответственно) оно срабатывает?..
Мне бы перед фильтрацией один разочек к базе бы обратиться и одно значение получить. Которое сравнивать с полем.

UPDATE:
Ладно, вопросы снимаются.
Это вычисление, оно отрабатывает один раз и это ВЕЛИКОЛЕПНО!
Потому что полученное значение можно вставить в условие фильтра.

UPDATE_2:
Рано радовался...

Простите, уважаемый CbCoder, как вставить полученное значение в фильтр?..

Сообщение отредактировал lodion: 13 Май 2015 - 15:36


#17 CbCoder

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

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

Отправлено 15 Май 2015 - 10:19

Цитата

как вставить полученное значение в фильтр?

{calculate}

#18 lodion

    Участник

  • Пользователи
  • PipPip
  • 18 сообщений
  • Пол:Мужчина
  • Город:Уфа
  • Интересы:Программирование, развитие...

Отправлено 15 Май 2015 - 12:34

Спасибо. Как я сам не допер? :rolleyes:

#19 lodion

    Участник

  • Пользователи
  • PipPip
  • 18 сообщений
  • Пол:Мужчина
  • Город:Уфа
  • Интересы:Программирование, развитие...

Отправлено 15 Май 2015 - 12:53

Маленькая правка для тех, кто придет сюда: вставлять нужно именно
'{calculate}'
Т.е. в одинарных кавычках. Иначе не срабатывает замена.
Всем удачи!

#20 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 11 Март 2016 - 14:43

Добрый день. Такой вопрос:
Есть таблица "Заявок", с полями "стоимость" и "район"
Есть таблица "недвижимость", с точно такими же полями.
Как таблице "Заявка"сделать доп. действие на выборку по данным полям из таблицы Недвижимость?

Сделал как стандартной конфигурации, но вычисление добавляет запись, а не сортирует.
echo "<script>location.href='".$config["site_root"]."/view_line.php?table=270&line=f4190=f4540'</script>";





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

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