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


Вопрос по "Расширенная система доступа"


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

#1 Tim

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

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

Отправлено 07 Февраль 2013 - 08:43

Добрый день уважаемые программисты.

Затрудняюсь делать кое - что. Очень нужен Ваш совет.

1. В таблице сотрудниках есть поле ФИЛЬТР, в фильтре имеется список проектов.
2. Есть таблица TABLE.

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

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

Заранее спасибо!

Сообщение отредактировал Tim: 07 Февраль 2013 - 09:39


#2 CbCoder

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

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

Отправлено 07 Февраль 2013 - 10:32

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

#3 Tim

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

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

Отправлено 07 Февраль 2013 - 15:28

Просмотр сообщенияCbCoder (07 Февраль 2013 - 10:32) писал:

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

Вопрос типа такой:

В фильтре таблицы TABLE нужно написать следующее...


if ( $line['Сотрудники']['Фильтр'(Список проектов)] == ['Проект']){
// показать поля где проекты равны

} else {
// показать все поля

}

#4 CbCoder

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

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

Отправлено 07 Февраль 2013 - 18:33

В фильтрах программы Клиентская база нет возможности прописывать какие-либо вычисления.

#5 Tim

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

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

Отправлено 08 Февраль 2013 - 07:22

Просмотр сообщенияCbCoder (07 Февраль 2013 - 18:33) писал:

В фильтрах программы Клиентская база нет возможности прописывать какие-либо вычисления.

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

#6 Гость_Roman_*

  • Гости

Отправлено 08 Февраль 2013 - 08:29

Возможно, Вам нужен сложный фильтр вида
`Проект` IN (SELECT `поле_фильтра_проекта` FROM `таблица_сотрудников` WHERE `пользователь`={текущий})


#7 Tim

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

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

Отправлено 08 Февраль 2013 - 08:39

Просмотр сообщенияRoman (08 Февраль 2013 - 08:29) писал:

Возможно, Вам нужен сложный фильтр вида
`Проект` IN (SELECT `поле_фильтра_проекта` FROM `таблица_сотрудников` WHERE `пользователь`={текущий})

У меня ошибку выводит

http://s3.uploads.ru/3WDrz.png

#8 Гость_Roman_*

  • Гости

Отправлено 08 Февраль 2013 - 08:46

Ну, во-первых в условиях "FROM" и "WHERE" нужно писать реальные значения, например, FROM `cb_data62` WHERE `f1234`='{текущий}'. Если же такой фильтр всё же не получается сохранить, запишите его значение прямо в БД, используя, например, phpmyadmin.

#9 Tim

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

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

Отправлено 08 Февраль 2013 - 09:15

Просмотр сообщенияRoman (08 Февраль 2013 - 08:46) писал:

Ну, во-первых в условиях "FROM" и "WHERE" нужно писать реальные значения, например, FROM `cb_data62` WHERE `f1234`='{текущий}'. Если же такой фильтр всё же не получается сохранить, запишите его значение прямо в БД, используя, например, phpmyadmin.

http://s3.uploads.ru/mzd7e.png

Все также

Сообщение отредактировал Tim: 08 Февраль 2013 - 09:24


#10 Гость_Roman_*

  • Гости

Отправлено 08 Февраль 2013 - 09:46

Вставляйте данное условие напрямую в БД. Механизм защиты не даёт сохранить ошибочно созданные фильтры. В данном случае такой сложный фильтр тоже определяется как ошибочный.

#11 Tim

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

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

Отправлено 08 Февраль 2013 - 12:46

Просмотр сообщенияRoman (08 Февраль 2013 - 09:46) писал:

Вставляйте данное условие напрямую в БД. Механизм защиты не даёт сохранить ошибочно созданные фильтры. В данном случае такой сложный фильтр тоже определяется как ошибочный.


Еще один момент
Если условие у меня такое `Проект` in (SELECT f1301 from cb_data46) не выдает ошибку
а если так `Проект` in (SELECT f1301 from cb_data46 WHERE `Пользователь` = {текущий} ) уже выдает ошибку. Странно в чем может быть проблема?

#12 Гость_Roman_*

  • Гости

Отправлено 08 Февраль 2013 - 12:50

`Пользователь` - замените на реальное имя поля, {текущий} - замените на '{current}'.

#13 Tim

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

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

Отправлено 08 Февраль 2013 - 13:05

Просмотр сообщенияRoman (08 Февраль 2013 - 12:50) писал:

`Пользователь` - замените на реальное имя поля, {текущий} - замените на '{current}'.

Спасибо получилась, а как сделать если (SELECT f1301 from cb_data46 WHERE `f5121` ='{current}') - пусто (0) то фильтр не работал или показал все проекты?

#14 Гость_Roman_*

  • Гости

Отправлено 08 Февраль 2013 - 13:12

Добавить условие " OR '0' IN (SELECT .... )".

#15 Tim

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

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

Отправлено 08 Февраль 2013 - 13:30

Просмотр сообщенияTim (08 Февраль 2013 - 13:05) писал:

Спасибо получилась, а как сделать если (SELECT f1301 from cb_data46 WHERE `f5121` ='{current}') - пусто (0) то фильтр не работал или показал все проекты?

Спасибо !!!!





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

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