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


Комментарии


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

#1 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 14 Август 2013 - 12:31

Доброго времени суток!
Возник такой вопрос) У контрагента есть подтаблица, куда менеджеры вписывают свои комментарии. Можно ли сделать так:
13 августа в 11.00 например создал коммент, а когда наступает следующий день-14 августа, он этот коммент уже не может редактировать?

#2 CbCoder

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

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

Отправлено 14 Август 2013 - 13:53

Правило доступа на условие "Время добавления = {текущая дата}".

#3 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 14 Август 2013 - 21:26

Все получилось,спасибо!)

#4 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 15 Август 2013 - 07:47

Еще такой вопрос возник..Опять таки таблица контрагента и подтаблица с комментами. В таблице прописан менеджер по контрагенту.
Как сделать, чтобы комменты мог писать только тот, кто прописан в карточке контрагента?..

#5 CbCoder

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

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

Отправлено 15 Август 2013 - 09:33

Боюсь, права на добавление записи в подтаблицу вы не сможете отрегулировать правилами.

#6 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 15 Август 2013 - 09:38

А если сделать так. Поле "Менеджер" в подтаблице заполняется текущим значением. И если это поле не равно значению поля менеджер в главной таблице-удалять запись?
Так можно?
if ($line['Менеджер']=$line['Название']['Менеджер'])
удалить добавленную запись
Не знаю как удаление прописать)
И можно ли так сравнивать поля с типом "Пользователь"?

#7 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 15 Август 2013 - 10:45

delete_query("Контрагенты", "`id`=8");
Это удаление с указанием конкретного значения,а как мне прописать?

#8 CbCoder

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

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

Отправлено 15 Август 2013 - 10:49

Знаете ведь все сами уже:

delete_query("Контрагенты", "`id`=$ID");


#9 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 15 Август 2013 - 11:03

if ($line['Менеджер']=$line['Название']['Менеджер'])
delete_query("Комментарии", "`id`=$ID");
Все,так получилось)) Спасибо)просто до этого чуть-чуть (и это слабо сказано) протупила..и удалила все комменты) Поэтому уточняю тут)

#10 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 15 Август 2013 - 14:00

Таблица контрагенты, подтаблица комментарии.
В таблице комментариев есть поле "Сотрудник", которое заполняется полем "Менеджер" из контрагентов (поле типа связь).
http://take.ms/hmGah1

Как я предполагаю-новую запись создаю в подтаблице-это поле заполняется автоматически сразу. Что я вижу: http://take.ms/kh0lo то есть поле пустое.
Соответственно у меня не работает и вычисление, которое должно удалять те записи, где поле Сотрудник не равно полю Выписал (поле сотрудник-связь с полем менеджер контрагента, а выписал-текущий пользователь)
Вычисление:
if ($line['Выписал']!==$line['Сотрудник']['ID'])
delete_query("Комментарии", "`id`=$ID");

Сообщение отредактировал Dinara: 15 Август 2013 - 14:01


#11 CbCoder

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

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

Отправлено 15 Август 2013 - 14:19

Во-первых, поле "пользователь" с полем связи, а точнее с ID из него, не сравнивают, это данные разных типов. Поле "Сотрудник" тогда уж надо было делать полем "пользователь".

Во-вторых, зачем вообще создавать это поле? Если можно сравнивать напрямую с Менеджером из Контрагентов, т.к. поле связи в подтаблице для этого уже есть:

if ($line['Выписал']!==$line['Компания']['Менеджер'])

'Компания' - это то самое уже существующее поле связи с Контрагентом в Комментариях. Создавать еще одно поле связи с той же самой записью никакого смысла нет.

#12 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 16 Август 2013 - 08:53

Что-то не получается((
Мысль такая-есть поле "Группа доступа сотрудника" в контрагентах и "Текущая группа доступа" в подтаблице (комментарии). Текущая группа доступа-заполняется текущим значением.
И вот, если эта текущая группа доступа не равна группе доступа сотрудника-удалять запись.

if (($line['Текущая группа доступа']==867) and (($line['Компания']['Группа доступа сотрудника']==867) or ($line['Компания']['Группа доступа сотрудника']==801) or ($line['Компания']['Группа доступа сотрудника']==2)))
{
insert_query("Комментарии", "`id`=$ID");
}
else
{
delete_query("Комментарии", "`id`=$ID");
}

Условие выполнения-при сохранении в таблице
1. По условию если ГД=867 и в таблице контрагента группы равны прописанным-добавлять значение. Но, пользователь с ГД 867 не может добавить коммент.
2. Под админом пытаюсь добавить запись-удаляется..хотя условие то только для группы 867

Попыталась по другому
if (($line['Текущая группа доступа']==867) and ($line['Компания']['Группа доступа сотрудника']!==801))
delete_query("Комментарии", "`id`=$ID");
Все равно не то,что нужно..
Пользователь под группой 867 добавляет запись, группа доступа сотрудника не равна 801-удаляет, если равна-тоже удаляет..


Если прописать не id группы,а название-тогда вообще никакой реакции системы похоже нет)
if (($line['Текущая группа доступа']=="Руководитель ОП") and ($line['Компания']['Группа доступа сотрудника']!=="Менеджеры ОП (Фомин)"))
delete_query("Комментарии", "`id`=$ID");

Сообщение отредактировал Dinara: 16 Август 2013 - 09:51


#13 CbCoder

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

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

Отправлено 16 Август 2013 - 10:22

Зачем вам вообще все эти группы, я не понял? Чем предыдущий вариант со сравнением сотрудника не устроил?

#14 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 16 Август 2013 - 10:24

Нашла свою ошибку в коде,похоже)
Да вот пришлось..Оказалось, что тут все намного глубже должно быть,нежели я думала вначале)

#15 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 16 Август 2013 - 10:31

Как только прописать корректно теперь..Руководитель ОП-номер группы 867 может добавлять записи туда, где группа доступа в карточке контрагента равны 801,867,2..а в других случаях руководитель оп не может добавлять комменты,они будут удаляться..
if (($line['Текущая группа доступа']=='867') and (($line['Компания']['Группа доступа сотрудника']=='867') or ($line['Компания']['Группа доступа сотрудника']=='801') or ($line['Компания']['Группа доступа сотрудника']=='2')))
{
insert_query("Комментарии", "`id`=$ID");
}
else
{
delete_query("Комментарии", "`id`=$ID");
}
Такой код поле "Комментарии" вообще не дает к заполнению..
А если пользователь с вообще другой группой будет заполнять-удаляются комменты.(

Сообщение отредактировал Dinara: 16 Август 2013 - 10:34


#16 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 16 Август 2013 - 10:56

Что-то я вообще не понимаю,почему такой то код не работает
if (($line['Менеджер']!==$line['Название']['Менеджер']) and ($line['Текущая группа доступа']=='801'))
delete_query("Комментарии", "`id`=$ID");
То есть если менеджер в комментах не равен менеджеру в контарагентах и группа этого менеджера равно 801,то удалять.
Ок,еси менеджер не равен-удаляет, но если менеджер равен и группа доступа 801-все равно удаляет!..

#17 CbCoder

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

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

Отправлено 16 Август 2013 - 10:56

insert_query("Комментарии", "`id`=$ID");

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

У вас условие только на удаление должно быть, для каких групп запрещено добавление - у тех удалять запись.

#18 CbCoder

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

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

Отправлено 16 Август 2013 - 10:58

!==

Не используйте никогда эту конструкцию, она для эксклюзивных случаев. Обычное "не равно" - это "!=", без второго "=".

#19 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 16 Август 2013 - 11:14

if (($line['Менеджер']!=$line['Название']['Менеджер']) and ($line['Текущая группа доступа']=='801'))
delete_query("Комментарии", "`id`=$ID");
Даже если убрать второе = все равно код не срабатывает. Менеджер равен менеджеру, группа доступа равно 801,а удаляет. А должно удалять только в том случае, если менеджер не равен менеджеру и группа доступа равно 801.. (тут тоже удаляет)

#20 CbCoder

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

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

Отправлено 16 Август 2013 - 11:35

А это за поле вообще?

$line['Название']

Насколько помню, у вас там поле связи Комментариев с Контрагентами - это "Компания", я же выше про него писал:

if ($line['Выписал']!==$line['Компания']['Менеджер'])

Откуда поле "Название" то взялось? Его вроде вообще нет в Комментариях. Естественно, что в таком случае оно всегда будет не равно Менеджеру





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

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