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


Вычисление по изменению сотрудника


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

#1 Dinara

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

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

Отправлено 06 Март 2014 - 11:09

КАк-то криво похоже прописываю, ибо это вычисление изменило менеджеров ВСЕХ счетов((
Суть: в карточке контрагента меняем сотрудника-меняется сотрудник контрагента в подтаблице "Созданные счета". http://take.ms/dmSdO
Вычисление на всякий:
$update_data['f10041'] = $line['Сотрудник'];
data_update(611,EVENTS_ENABLE,$update_data);
Далее нужно, чтобы поменялось поле менеджер в счете (только в тех счетах, которые указаны в подтаблице)
if ($line['Номер счета']!=0)
{
$line['Номер счета']['Менеджер']=$line['Сотрудник по КК'];
}
Вот при выполнении именно этого вычисления меняются менеджеры у ВСЕХ счетов на того, кто стоит в поле "Сотрудник по КК"..(

#2 Dinara

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

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

Отправлено 06 Март 2014 - 11:26

я так понимаю-нужно еще какое-то условие для сопоставления записей..

#3 CbCoder

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

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

Отправлено 06 Март 2014 - 11:27

data_update(611,EVENTS_ENABLE,$update_data);

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

Если необходимо изменить только счета, привязанные к конкретному контрагенту, добавьте условие "Поле связи с контрагентом = id контрагента"

#4 Dinara

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

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

Отправлено 06 Март 2014 - 11:35

Но ведь меняется только если второе условие включить?первое проходит нормально(точно ли в первом ошибка?
Что-то совсем не могу понять как связь прописать(

#5 Dinara

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

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

Отправлено 06 Март 2014 - 11:37

"id=$ID"
вот это не прокатило(

#6 Dinara

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

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

Отправлено 06 Март 2014 - 11:38

$sqlQuery = "UPDATE ".DATA_TABLE."74 SET f850='".$line['Компания']."' WHERE f807='".$line['id']."'";
$res = mysql_query($sqlQuery);
я бы такое добавила и не парилась,но тут не поставить флаг EVENTS_ENABLE

#7 CbCoder

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

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

Отправлено 06 Март 2014 - 12:17

А что собственно мешает добавить то же самое условие в data_update ?

data_update(611, EVENTS_ENABLE, $update_data, "f111='",$line['id'],"'");


#8 Dinara

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

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

Отправлено 07 Март 2014 - 10:19

Ничего))теперь работает))
Только такой вопрос возник..КАк сделать так,чтобы это вычисление срабатывало только на 2 раз,так скажем?То есть при втором изменении поля?
Поясню-первоначально есть создатель счета, т.е заполняем значение "Текущий". http://take.ms/n8Aa3 И только если потом изменится значение поля в подтаблице-сюда подставится другой сотрудник. http://take.ms/wW9d9
То есть чтобы это вычисление на изменение поля срабатывало на 2 раз:
if (($line['Сотрудник по КК']!=521) and ($line['Сотрудник по КК']!=861) and ($line['Сотрудник по КК']!=841) and ($line['Сотрудник по КК']!=191))
{
$line['Номер счета']['Менеджер']=$line['Сотрудник по КК'];
}

Сообщение отредактировал Dinara: 07 Март 2014 - 10:22


#9 Dinara

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

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

Отправлено 07 Март 2014 - 10:39

Сделала по другому, но хотелось бы узнать-есть ли такая возможность?)

#10 CbCoder

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

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

Отправлено 10 Март 2014 - 14:00

Можно создать поле-счетчик, которое будет меняться на +1 после любого срабатывания вычисления, соответственно проверять его затем. Это как один из вариантов.





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

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