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


Вычисление. Изменение поля таблицы 1 при изменении поля таблицы 2


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

#1 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 01 Декабрь 2015 - 13:29

Добрый день. имеется поле 1 (список). в списке много значений. среди них есть "оплачено".

также имеется поле 2 (список) . в нем только два значения: не оплачено, оплачено.

имеется поле 3 - дата.

необходимо, чтобы при изменении поля 2 автоматически менялись значения в поле 1 на "оплачено" и в поле 3 ставилась текущая дата

описанная в хэлпе формула меняет значения в поле 1 в конкретной заданной строке. а надо, чтобы значение менялось именно в той строке, в которой были произведены изменения в поле 2.

$data['Компания'] = "Восток";
$data['Дата'] = date("Y-m-d H:i:s");
update_query($data, "Контрагенты", "`id`=8"); // Обновит поля "Компания" и "Дата" в таблице "Контрагенты" для строки с id=8.

#2 CbCoder

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

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

Отправлено 02 Декабрь 2015 - 12:36

У вас пример не тот что надо. Если речь про текущую строку, то должна использоваться переменная $line. В документации она подробно описана. Запросы тут не нужны (точнее можно конечно и через них, если вместо 8 подставить переменную $ID - тогда изменение будет именно в текущей строке, но это давно устаревший и настоятельно не рекомендуемый способ).

#3 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 08 Декабрь 2015 - 09:46

спасибо, в соседней теме увидел информацию про переменную line и попробовал ее. все заработало. тема неактуальна

#4 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 11 Декабрь 2015 - 15:13

Обнаружилась следующая сложность.
у меня есть ряд вычислений.
в частности: при изменении поля1, в поле2 подставляется текущая дата.

а также есть напоминание, которое срабатывает при изменении поля1.
в тексте напоминания запрограммировано следующее сообщение: "статус: {Поле1}, было изменено {Поле2}"

и в месте, где должно быть {Поле2} (где должна в напоминании высвечиваться текущая дата) приходит пустое место.

захожу в карточку, вижу в поле2 дату, когда было изменено поле1 (т.е. это вычисление работает корректно).
но вот в напоминание поле2 подставляется то, которое было в поле2 изначально (до вычисления при изменении поля1), т.е. предыдущее, не измененное.

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

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

Сообщение отредактировал valeralezhnev: 11 Декабрь 2015 - 15:34


#5 CbCoder

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

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

Отправлено 11 Декабрь 2015 - 23:32

Отправьте заявку в техподдержку, ситуация требует разбора полетов.

#6 CbCoder

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

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

Отправлено 24 Декабрь 2015 - 10:44

Что-то я не смог у себя повторить данной проблемы. Как сделал: 1) создал тестовую таблицу, с полями Поле1 (список) и Поле2 (дата/время); 2) добавил вычисление на событие изменения Поле1: в Поле 2 заносим тек.дату; 3) добавил напоминание с текстом как у вас, на условие изменения Поле1. Результат: в напоминании отображается актуальное значение из Поле2. Может я что-то делаю не так? Проверял на 2.0.5.

#7 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 24 Декабрь 2015 - 21:43

начал обновляться до версии 2.0.5, и получил вот эту ошибку:
Fatal error: Call to undefined function mcrypt_encrypt() in /var/www/clientbase/common.php on line 946

теперь вот голову ломаю, как срм запустить

#8 CbCoder

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

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

Отправлено 25 Декабрь 2015 - 09:18

Не установлен модуль mcrypt (см. требования).

#9 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 25 Декабрь 2015 - 10:08

мои технари сказали, что все установлено.
наверное, это сообщение было вызвано таймаутом подключения. или как это называется. короче, версия в итоге через 30 минут обновилась и срм ожила сама собой.

#10 CbCoder

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

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

Отправлено 29 Декабрь 2015 - 09:14

Как результат то у вас? Смогли обновить версию? Пропала ли ошибка после обновления или нет? Вам писала наша техподдержка, вы вроде как не ответили.

#11 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 30 Декабрь 2015 - 12:33

Пока отложили этот вопрос. после нового года займусь. пока возникла другая сложность.

не срабатывает следующее вычисление:

if ($line['Организатор']=='Л. Валерий') $line['Ответственный'] ='Лежнев Валерий';

суть его в том, что при изменении поля "организатор" (тип поля - список) на значение л. валерий, должно меняться поле ответственный (тип поля - пользователь системы). НО ничего не происходит. если ответственный был Вася Пупкин, то после проставления в Организаторе "л. валерий", поле "ответственный" меняется на пустое. если было пустым до изменения организатора, то пустым и остается. а должно подставляться "Лежнев Валерий"

не работает(

#12 CbCoder

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

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

Отправлено 30 Декабрь 2015 - 12:43

В поле с типом пользователь хранится не ФИО пользователя (оно только отображается), а его id. Соответственно замените 'Лежнев Валерий' на число.

#13 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 30 Декабрь 2015 - 12:53

отлично, спасибо!

#14 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 30 Декабрь 2015 - 12:55

а можно эти id где-то быстро посмотреть? а то я их обычно беру, заходя в напоминание и выбираю "ответственный" равно "...", а потом перехожу в режим эксперта и смотрю, какой id подставился в код ))
так каждого пользователя тыкать долго.

#15 CbCoder

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

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

Отправлено 30 Декабрь 2015 - 12:57

Настройки - Пользователи, входите в профиль пользователя и смотрите в адресной строке параметр user_id. Или просто наводите мышь в списке пользователей и смотрите тот же адрес внизу страницы.

#16 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 30 Декабрь 2015 - 13:02

буду знать, спасибо

#17 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 14 Январь 2016 - 15:23

Просмотр сообщенияCbCoder (29 Декабрь 2015 - 09:14) писал:

Как результат то у вас? Смогли обновить версию? Пропала ли ошибка после обновления или нет? Вам писала наша техподдержка, вы вроде как не ответили.

обновиться смог. ошибка пропала. теперь все работает в нужном порядке - сначала срабатывает вычисление, меняется дата на текущую, и она же попадает в напоминание (уведомление на почту)

#18 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 14 Январь 2016 - 15:31

Возник следующий вопрос:
у нас существует поле таблицы - "А". в поле "А" забивается цена товара, когда клиент передается на сделку. иногда сделка отменяется и клиент передается обратно в переговоры. при этом существует вычисление, если сделка отменена, то содержание поля "А" стирается. аналогично стирается содержание ряда других полей - "Б", "В", "Г".

вопрос:
есть ли такое вычисление, которое будет обновлять поле "примечание", и подставлять туда значение полей А Б В Г (для истории) ?

т.е. было поле "примечание" с текстом: "ыфвдаофывд джфвола фывдлаоф ывдао"

а стало поле "примечание с текстом" :
"ыфвдаофывд джфвола фывдлаоф ывдао
Поле "А": {содержание поля А}
Поле "Б": {содержание поля Б}
Поле "В": {содержание поля В}
Поле "Г": {содержание поля Г}

#19 CbCoder

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

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

Отправлено 14 Январь 2016 - 17:21

Так вы в том вычислении, прежде чем стирать поля, записывайте их значения в поле примечания. В конкретно сложность то? Не знаете как присоединить значение к концу текста, не перетирая поле целиком?

#20 valeralezhnev

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

  • Пользователи
  • PipPipPip
  • 34 сообщений

Отправлено 14 Январь 2016 - 17:30

Просмотр сообщенияCbCoder (14 Январь 2016 - 17:21) писал:

Так вы в том вычислении, прежде чем стирать поля, записывайте их значения в поле примечания. В конкретно сложность то? Не знаете как присоединить значение к концу текста, не перетирая поле целиком?

именно так. знаю, как заменить поле полностью, а вот как присоединить через пробел или с новой строки - не знаю





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

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