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


Отслеживание изменений


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

#1 nk

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

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

Отправлено 30 Сентябрь 2011 - 09:39

Прошу прощения, если такая тема уже была, но я через поиск не нашел.

Вопрос такой: как отследить изменение какой-либо записи? Необходимо чтобы выводилось напоминание, если какая-то запись в определенной таблице была изменена или добавлена. Есть мысль добавить поле, в котором будет информация, например, 0 - старая запись, 1 - новая, 2 - измененная и т.п. Так вот как определить, что запись изменялась?

#2 CbCoder

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

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

Отправлено 30 Сентябрь 2011 - 13:39

Есть же уже в напоминаниях такое условие, чем оно Вас не устраивает?

#3 nk

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

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

Отправлено 30 Сентябрь 2011 - 16:22

"Слона-то я и не приметил"

#4 nk

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

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

Отправлено 24 Май 2012 - 23:01

Просмотр сообщенияCbCoder (30 Сентябрь 2011 - 13:39) писал:

Есть же уже в напоминаниях такое условие, чем оно Вас не устраивает?

а разве в версии 1.9.5 нельзя сделать напоминание по событию "изменение записи"? нет такого варианта в мастере...

#5 Гость_Roman_*

  • Гости

Отправлено 25 Май 2012 - 07:12

В режиме эксперта можно набрать такое условие:

`u`='1'


#6 nk

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

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

Отправлено 25 Май 2012 - 09:41

Просмотр сообщенияRoman (25 Май 2012 - 07:12) писал:

В режиме эксперта можно набрать такое условие:

`u`='1'

Спасибо.

#7 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 26 Июнь 2015 - 12:05

Доброго дня.
Подскажите как сделать поле "Изменена" чтобы там показывались дата и время любого изменения записи.
Поля "Добавлена" не хватает. Спасибо.

#8 CbCoder

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

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

Отправлено 26 Июнь 2015 - 15:29

Добавляете вычисление на события изменения всех полей:

$line['Изменена'] = date('Y-m-d H:i:s');

Если нет желания отмечать на событие все поля, можно поставить событие "сохранение записи", но в этом случае вычисление не будет работать в подтаблицах.

#9 master2015

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

  • Пользователи
  • PipPipPip
  • 36 сообщений
  • Пол:Мужчина
  • Интересы:Программирование

Отправлено 02 Июль 2015 - 11:20

Добрый день! А может подскажите как сделать поле "Изменена" чтобы там показывался логин того человека, который изменил запись первый, второй, третий, 10 й раз.любого изменения записи. Типа лог изменения записи сделать. + время когда это было
Спасибо.

Сообщение отредактировал master2015: 02 Июль 2015 - 12:18


#10 CbCoder

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

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

Отправлено 02 Июль 2015 - 15:59

$line['Изменена'] .= $user['login']." ".date('Y-m-d H:i:s')."\n";


#11 master2015

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

  • Пользователи
  • PipPipPip
  • 36 сообщений
  • Пол:Мужчина
  • Интересы:Программирование

Отправлено 02 Июль 2015 - 16:21

Спасибо, большое!!

#12 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 23 Июль 2015 - 15:39

Разрешите задать ещё несколько насущных вопросов.
1. В таблице клиенты, есть дата добавления клиента "Добавлена", в таблице "Сделки"-начало сделки "Начало". Нужно вычислить сколько дней прошло с даты добавления клиента до начала сделки. Вычисляю так:

$line['ЦР'] = (strtotime($line['Сделка']['Начало']) - strtotime($line['Добавлена']))/86400;

В итоге ерунда считается, например: -16 587
Подскажите что не та делаю? Спасибо.


2. Как я понял из форума, нет возможности некоторые записи Лога вывести в таблицу. Тогда как сделать следующее:
Таблица клиенты, в ней подтаблица "История изменения" в которой должны быть отражены изменения всех полей Таблицы Клиенты. Т.е. кто поменял, когда, и какое изменение произвели.
Подтаблица "История изменения" работает только в режиме просмотре, редактировать и добавлять руками не возможно.
Как реализовать данную возможность?

3. Допустим таблица Сделки-является подтаблицей Таблицы клиенты. Необходимо, чтобы в режиме подтаблице в сделках менеждеры не могли добавлять/редактировать записи, а могли бы только в таблице. Как правильно настроить доступы таблиц/подтаблиц для данного случая?

Сообщение отредактировал bottrop: 23 Июль 2015 - 15:48


#13 CbCoder

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

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

Отправлено 23 Июль 2015 - 17:10

1. Что такое "Сделка"? Это поле связи со сделкой клиента? Судя по результату вашего вычисления, в $line['Сделка']['Начало'] - пустота.

2. Почему нельзя вывести? Есть же ссылка на лог в режиме просмотра записи.

3. Для режима подтаблицы нет отдельного варианта доступа. Используется стандартный доступ табличного режима.

#14 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 23 Июль 2015 - 21:07

Просмотр сообщенияCbCoder (23 Июль 2015 - 17:10) писал:

1. Что такое "Сделка"? Это поле связи со сделкой клиента? Судя по результату вашего вычисления, в $line['Сделка']['Начало'] - пустота.

Сделка это "Таблица Сделка" из которой нужно взять дату "Начало" и из неё вычесть дату "Добавлена" Таблицы Клиенты. Это вычисление я делаю в Таблицы Клиенты, поле "ЦР"

#15 CbCoder

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

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

Отправлено 24 Июль 2015 - 09:56

К таблицам не обращаются через переменную $line, там содержаться исключительно поля текущей записи текущей таблицы. К любым другим записям/таблицам обращаются через запросы. Исключение - поля связи, через которые можно обратится к полям связанной записи через второй уровень массива.

#16 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 24 Июль 2015 - 10:44

Можно пример похожего запроса или направьте на нужную ветку форума...поиск по "Запросы" не дал результата

#17 CbCoder

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

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

Отправлено 24 Июль 2015 - 12:25

Примеров запросов на форуме море, чуть ли в каждой второй теме. Например, через функции data_select или data_table. Можно использовать и нативный SQL-запрос "SELECT".

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

#18 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 26 Июль 2015 - 14:30

Перефразирую вопрос.
Есть Таблица 1 с полем 1 (число)
Есть Таблица 2, с полями: 1,2,3 (числовые)
Как сумму поле 1,2,3 из таблицы 2 вывести в поле 1, таблицы 1?
Вычисление в поле 1, Таблице 1, типа: $line['Поле 1'] = $line['Поле связи таблицы 2']['поле 1'] + $line['Поле связи таблицы 2']['поле 2'] + $line['Поле связи таблицы 2']['поле 3'];
не работает.

Как применить сюда примеры с data_select или data_table пока не разобрался, слишком много инфы на форуме, на эту тему. Если скините ссылку на конкретный пример, буду признателен.

#19 CbCoder

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

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

Отправлено 27 Июль 2015 - 10:21

Любая таблица состоит в первую очередь из записей, которых в общем случае может быть более одной. Поэтому, чтобы из одной таблицы обратится к полям другой таблицы, для начала надо выяснить из какой именно записи этой другой таблицы брать значения нужных полей. Как правило, это определяется либо каким-то статичным условием (например, "поле сотрудник равно директор"), либо через поля связи с данной таблицей. Тот пример вычисления, что вы привели, должен прекрасно работать, если поле связи под именем "'Поле связи таблицы 2" реально существует в таблице 1 (а не просто фраза-пример), и оно заполнено в данной конкретной строке.

Если же поля связи не существует, или оно здесь не нужно, в любом случае необходимо сформулировать условие выбора строки, по которому вы обращаетесь к таблице 2, чтобы извлечь оттуда значения полей 1-3. Только после этого имеет смысл составлять запрос. Сама функция запроса элементарна: $data = data_table("Таблица 2", условие выбора строки).





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

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