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


настройка фильтра (режим эксперта)


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

#1 aleks.goodcolor

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

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

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

Добрый день. пытаюсь создать фильтр в режиме эксперта. но отказывается работать.
Я ввожу:

`замена2`!='{current}' and `Менеджер`!='{current}'

замена2 - поле типа "текст"
Менеджер - поле типа "пользователь"

Скажите возможно ли получить поле фио у текущего пользователя, чтобы использовать его вместо {current} `замена2`!='{current}'?

Сообщение отредактировал aleks.goodcolor: 07 Июль 2014 - 10:50


#2 CbCoder

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

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

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

Ну и зачем вы приравниваете к полю с типом "текст" id текущего пользователя ('{current}')? Это естественно не будет работать, эта переменная актуальна только для полей с типом "пользователь" (именно поэтому она и лежит в выпадающем списке в режиме мастера только в полях данного типа). Режим эксперта не предназначен для "обмана" мастера условий, он предназначен для создания более сложных условий, чем те что можно сконструировать мастером. Ваш случай явно не из данного ряда.

Цитата

Скажите возможно ли получить поле фио у текущего пользователя, чтобы использовать его вместо {current} `замена2`!='{current}'?

Теоретически возможно через вложенный sql-запрос, но это "стрельба из пушек по воробьям", т.е. нерационально (в частности сильно ухудшит производительность фильтра). Гораздо правильнее пользоваться полями с типом "пользователь", т.е. в данном случае сменить тип у поля "замена2".

#3 aleks.goodcolor

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

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

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

Суть в том что у меня уже есть поле замена типа пользователь отлично работает с фильтрами, но оно мне не подходит, потому что оно формируется из другой таблицы "Наши сотрудники". Вчера мы обсуждали , чтобы можно было передать значение из фио в поле замена, оно должно быть типа текст. Возможно если использовать $line['id_kg'] = $line['ФИО']['Пользователь']; в вычислениях то получится обойти это ограничение?

Сообщение отредактировал aleks.goodcolor: 07 Июль 2014 - 12:40


#4 CbCoder

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

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

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

Так вам зачем именно ФИО то нужно? В чем смысл текстового ФИО? Поле с типом пользователь будет отображаться абсолютно также, но зато будет работать с текущим пользователем в фильтрах. В этом и суть типа "пользователь", именно для таких случаев. Ничем больше оно отличаться от текстового поля "ФИО" не будет.

#5 aleks.goodcolor

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

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

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

Тогда посмотрите пожалуйста. этот код корректен:

if ($line['незачет'] === 'да')
{
$res = data_select(46, "`status`=0 AND `f3720`='нет'");
while ($row = sql_fetch_assoc($res)) // цикл чтения строк из массива сверху, каждая строка читается в $row
{
   $mas[] = $row; // а тут помещаем очередной считанный $row в массив $mas как новый элемент этого массива
}
$rand_key = array_rand($mas, 1); // функция array_rand возвращает КЛЮЧ массива, а не элемент (см. описание функции)
$rand_row = $mas[$rand_key]; // поэтому чтобы получить элемент массива, нужно подставить полученный ключ
$line['замена'] = $rand_row['f1400'];
}

f1400 - поле пользователь

Сообщение отредактировал aleks.goodcolor: 07 Июль 2014 - 13:08


#6 CbCoder

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

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

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

Так это, как я понимаю, просто копия вчерашнего вычисления, только вместо ФИО вы копируете пользователя, как я и рекомендовал. Разумеется, тогда он будет корректным, если вы поменяли только номер копируемого поля и при этом тип у поля "замена" установлен как "пользователь".

#7 aleks.goodcolor

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

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

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

Огромное спасибо за ваши объяснения.

#8 aleks.goodcolor

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

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

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

Столкнулся с такой ситуацией. Мне необходимо настроить фильтр по нескольким условиям. Имеется таблица где есть 3 поля "Менеджер" "Замена" и "Штраф". Мне необходимо отсортировать таблицу так : если штраф = тек. пользователь то показывать, если замена = тек. пользователь и штраф = NULL то показывать, если Менеджер = тек. пользователь, а замена и штраф = NULL. В остальных случаях не показывать. Подскажите пожалуйста как можно реализовать данный фильтр, нужно экспертный режим использовать?

#9 CbCoder

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

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

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

Честно говоря не очень понял, переформулируйте все ваши условия с комбинацией через И и ИЛИ, например:

Менеджер=текущий И (Статус=Новый ИЛИ Статус=В работе)

Соответственно, затем загоняете эти условия в мастер, переключаетесь в эксперт и ставите там скобки в нужных местах (в мастере пока нельзя скобки расставлять)





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

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