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


Фильтр - текущая организация.


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

#1 goodcolor

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

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

Отправлено 02 Август 2016 - 18:08

Есть таблица организаций.
Есть таблица сотрудников, связанных с организациями.
Есть таблица клиентов, связанных и с сотрудником и с организацией.

Задача: Настроить фильтр для таблицы клиентов таким образом, чтобы динамически можно было учитывать текущую организацию сотрудника (пользователя).
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#2 CbCoder

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

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

Отправлено 03 Август 2016 - 12:28

Используйте вложенные запросы в режиме эксперта. Других способов нет.

#3 goodcolor

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

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

Отправлено 04 Август 2016 - 17:06

Просмотр сообщенияCbCoder (03 Август 2016 - 12:28) писал:

Используйте вложенные запросы в режиме эксперта. Других способов нет.

Именно режим эксперта и подразумевался мной.
Что подразумевается под вложенными запросами? Можно ссылку на документацию, если есть?

Т.е. в режиме эксперта можно обратиться к таблице организаций через таблицу сотрудников, узнать организацию текущего пользователя (сотрудника) и сравнить с организацией клиента?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#4 Tony999

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

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

Отправлено 04 Август 2016 - 18:47

А почему в таблицу Сотрудники не добавить 2 скрытых (или открытых) поля : Организация, Клиент, менять их вычислениями, если надо и обычным фильтром получать результат?
Или я неправильно понял задачу?
Умные сайты на заказ
https://info.crm-master.info

#5 CbCoder

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

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

Отправлено 08 Август 2016 - 09:19

Цитата

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

Да, через вложенные запросы как раз. Но это уже относится не столько к КБ, сколько к документации по MySQL (здесь например). КБ лишь предоставляет возможность через режим эксперта писать произвольное выражение WHERE.

#6 goodcolor

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

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

Отправлено 12 Август 2016 - 19:52

Просмотр сообщенияTony999 (04 Август 2016 - 18:47) писал:

А почему в таблицу Сотрудники не добавить 2 скрытых (или открытых) поля : Организация, Клиент, менять их вычислениями, если надо и обычным фильтром получать результат?
Или я неправильно понял задачу?
Думаю, что неправильно, т.к. клиентов у одного сотрудника может быть >1.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#7 goodcolor

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

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

Отправлено 07 Апрель 2017 - 13:43

Снова возвращаюсь к данному вопросу.
Если из режима мастера переключиться в режим эксперта, то отображается следующая конструкция:
`ID`='1' or `ID`='2'
Т.е. если, например, я хочу отобразить записи из текущей таблицы, для которой нет записей в подтаблице, мне необходимо сделать соответствующий составной запрос к БД, и путём перебора полученного массива составить последовательность ID согласно синтаксису вышеупомянутой конструкции?

Если есть пример подобного фильтра будет очень кстати.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#8 CbCoder

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

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

Отправлено 07 Апрель 2017 - 14:25

`ID` in (SELECT id FROM ваша_таблица WHERE условие_отбора)

Как то так, если ничего не путаю.

#9 goodcolor

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

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

Отправлено 06 Сентябрь 2017 - 12:53

Не работает.
Делаю следующее в режиме эксперта:
`ID` in (SELECT `id` FROM ".DATA_TABLE."42 WHERE `f1088` = 3)
f1088 - поле связи

В момент сохранения возникает следующее предупреждение: "Ошибка в значении фильтра. Проверьте корректность задания условий."

И автоматически правится код на следующий:
`ID` in (SELECT `ID` FROM ".DATA_TABLE."42 WHERE `Название поля связи` = 3)

В чём проблема?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#10 goodcolor

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

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

Отправлено 06 Сентябрь 2017 - 13:00

Я понимаю, что текущий пример можно решить стандартными возможностями программы, но это всего лишь тест работы фильтра в режиме эксперта перед решением задачи, которую стандартными средствами не решить.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#11 Tony999

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

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

Отправлено 06 Сентябрь 2017 - 13:04

Вы по осторожнее с фильтрами...
У меня было, что база вообще не открывалась после того, как с фильтрами "поиграл"...
ТП КБ помогла.
Умные сайты на заказ
https://info.crm-master.info

#12 goodcolor

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

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

Отправлено 06 Сентябрь 2017 - 13:17

Да, мы осторожно, сперва на "кошках" тренируемся)

Проблема решилась прямым запросом в БД:
id in (SELECT id FROM cb_data42 WHERE f1088 = 3)

Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#13 Tony999

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

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

Отправлено 06 Сентябрь 2017 - 13:53

Ну да, скопировал в новую базу, и на неактивированной "кошке" можно тренироваться:-)
Умные сайты на заказ
https://info.crm-master.info

#14 goodcolor

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

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

Отправлено 06 Сентябрь 2017 - 14:12

Аналогичная проблема, но теперь с указанием переменной $user['id'] в запросе.
f1088 = (SELECT f711 FROM cb_data46 WHERE f2481 = {$user['id']})

Как её правильно использовать в такой ситуации?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#15 goodcolor

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

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

Отправлено 06 Сентябрь 2017 - 15:06

Проблема решена заменой переменной $user['id'] на {current}.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#16 CbCoder

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

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

Отправлено 07 Сентябрь 2017 - 14:33

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

#17 goodcolor

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

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

Отправлено 07 Сентябрь 2017 - 16:08

Просмотр сообщенияCbCoder (07 Сентябрь 2017 - 14:33) писал:

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

Вот приходится методом тыка искать решение. Такие моменты просто необходимо указывать в документации и желательно выделять из общего повествования. Специально обращался к разделу "Фильтры" на сайте, но там никакой конкретики, ни предостережений ни ссылок на справочник констант и переменных нет к сожалению.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов





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

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