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


Работа с логами

логи

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

#1 KLV

    Участник

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

Отправлено 18 Июнь 2014 - 09:50

Добрый день! Несколько вопросов по логам:
В логах отображается название измененной записи. Это название формируется из настроек заголовка строки таблицы.
При этом, если изменить отображение заголовка строки — логи до изменения строки не меняют название записи, а новые логи формируются уже согласно измененному заголовку.
Возможно ли переформировать логи, чтобы в старых логах отображалось новое название записи?

И второй вопрос. Ежемесячно происходит архивирование логов. При этом, как я понимаю, архивные логи удаляются из БД. Как, например, оперативно поднять из архива лог записи за всё время?

Сообщение отредактировал KLV: 18 Июнь 2014 - 09:52


#2 CbCoder

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

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

Отправлено 18 Июнь 2014 - 10:51

Цитата

Возможно ли переформировать логи, чтобы в старых логах отображалось новое название записи?

Нет, логи не поддаются изменению.

Цитата

И второй вопрос. Ежемесячно происходит архивирование логов. При этом, как я понимаю, архивные логи удаляются из БД. Как, например, оперативно поднять из архива лог записи за всё время?

Удаленные из БД логи можно скачать в виде архивного файла из вкладки Архив.

#3 bottrop

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

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

Отправлено 30 Октябрь 2015 - 20:10

Вопрос по Логам:
1. Как сделать, чтобы Лог был доступен для просмотра другим пользователям?
2. Как сделать, чтобы например: в подтаблице "История клиента" выводились некоторые данные из Лога. К примеру если одно из полей меняется в основной таблицы "Клиенты", то в подтаблице "История клиента" автоматически сохдается запись, что: Пользователь "Жанна" изменил значение поля "Дата" таблицы "Клиенты" в строке Евгений с "30.10.2015" на "31.10.2015".?

#4 CbCoder

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

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

Отправлено 31 Октябрь 2015 - 16:32

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

#5 bottrop

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

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

Отправлено 31 Октябрь 2015 - 20:28

Просмотр сообщенияCbCoder (31 Октябрь 2015 - 16:32) писал:

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

Просмотр сообщенияCbCoder (31 Октябрь 2015 - 16:32) писал:

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


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

Сообщение отредактировал bottrop: 01 Ноябрь 2015 - 12:49


#6 CbCoder

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

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

Отправлено 02 Ноябрь 2015 - 09:16

Добавление записи в подтаблицу - это тоже самое, что добавление записи в таблицу, на основе которой эта подтаблица создана. А как добавлять запись в таблицу, примеров море, в том числе в документации. Ищите по слову "insert".

Вот тут например целая закрепленная наверху этого раздела тема.

#7 bottrop

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

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

Отправлено 10 Ноябрь 2015 - 14:19

Как добавить запись в Подтаблицу "История клиента" я понимаю, через insert_query

Не могу понять следующее: как сделать чтобы заполнялись не отдельные поля (дата внесения, пользователь, изменение), а именно как в логе:

07.11.2015 09:27

Пользователь "Админиcтратор" архивировал строку 1 642 в таблице "Работа с клиентом"

07.11.2015 09:27

Пользователь "Админиcтратор" изменил значение поля "Статус клиента" таблицы "Клиенты" в строке Галина с "Упущен" на "Подбор"

Вот как сделать это не догоняю, помогите разобраться.

Просмотр сообщенияCbCoder (31 Октябрь 2015 - 16:32) писал:

....., которое будет добавлять запись в подтаблицу "История клиента" со своим текстом, аналогичным тексту из Лога (а также любым другим, какой вам удобнее).


#8 CbCoder

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

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

Отправлено 10 Ноябрь 2015 - 14:48

Так формируйте строку вручную и добавляйте ее целиком, не совсем пойму в чем именно проблема. Какая разница, добавлять данные в несколько полей или в одно?

#9 bottrop

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

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

Отправлено 15 Ноябрь 2015 - 12:33

Проблема в следующем:
1. не могу понять, для каждого поля в котором хочу отслеживать изменения нужно делать своё вычисление?

Делаю так:
if ($line['Статус клиента'] !=="")
{
$data['Клиент'] = $ID;
$data['Статус клиента'] = $line['Изменение'];
insert_query($data, "История клиента");
}

2. Какое условие "If" должно быть?
3. Как выглядит вычисление, которое добавляет нужные данные "со своим текстом, аналогичным тексту из Лога (а также любым другим, какой вам удобнее)." Этот момент тоже не понятен.
3. В прикрепленном файле снимок, как хочу сделать, может не так объясняю.

Прошу помощи.

Прикрепленные изображения

  • Прикрепленное изображение: 123.jpg
  • Прикрепленное изображение: 1234.jpg


#10 CbCoder

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

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

Отправлено 16 Ноябрь 2015 - 09:27

1. Можно и одно, но это сложнее, придется вытаскивать изменения из служебного массива $event.
2. Не совсем понял вопроса.
3. А мне непонятно что именно вам непонятно. Конкретизируйте.

В общем не знаю куда вы клоните, но я бы например сделал так:

$data['Лог'] = 'Пользователь "'.$user['fio'].'" изменил значение поля "Статус клиента" таблицы "Клиенты" в строке '.$line['Клиент'].' с "'.$event['changed'][111]['old'].'" на "'.$line['Статус клиента'].'"'; // 111 - id поля Статус клиента
insert_query($data, "История клиента");

Вычисление на событие изменения поля Статус клиента. Аналогично по другим полям.

#11 bottrop

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

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

Отправлено 17 Ноябрь 2015 - 12:06

Просмотр сообщенияCbCoder (16 Ноябрь 2015 - 09:27) писал:

В общем не знаю куда вы клоните, но я бы например сделал так:

Абсолютно верно меня поняли.
Добавил ещё $data['Клиент'] = $ID; для привязки истории к клиенту и всё заработало.

Благодарю за помощь!!!

Сообщение отредактировал bottrop: 17 Ноябрь 2015 - 17:39


#12 bottrop

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

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

Отправлено 17 Ноябрь 2015 - 17:42

Еще вопрос по теме: 1. Как выводить значения из полей типа "связь" и "пользователь" в данных вычислениях:.....с "'.$event['changed'][111]['old'].'" на "'.$line['Статус клиента'].'"' ? Иначе выводит только цифры.

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

Сообщение отредактировал bottrop: 17 Ноябрь 2015 - 17:47


#13 CbCoder

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

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

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

1. Обращаться запросом к соответствующей таблице. Для пользователей это служебная таблица USERS_TABLE, для полей связи - соответствующая таблица с данными.
2. В вычислении можно проверять значение переменной $event['is_new_line']. При добавлении записи она равна 1.

#14 bottrop

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

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

Отправлено 18 Ноябрь 2015 - 18:49

1. Как выглядит такое обращение? Делаю так:

по полю пользователь:
$data['Лог'] = 'Пользователь "'.$user['fio'].'" изменил поле "Ответственный" для клиента № '.$line['№'].' '.$line['Клиент'].' с "'.$event['changed']['user_table'][8450]]['old'].'" на "'.$line['Сотрудники']['ФИО'].'"';

по полю связи:
$data['Лог'] = 'Пользователь "'.$user['fio'].'" изменил поле "Канал" для клиента № '.$line['№'].' '.$line['Клиент'].' с "'.$event['changed']['Поле связи с каналами'][Поле канал]]['old'].'" на "'.$line['Поле связи с каналами']['Канал'].'"';

В обоих случаях ошибки. Немного запутался в этих полях.

2. Сделал так,

if(count($event['is_new_line'])!=1)
{
}
вроде работает, но не знаю насколько корректно делать условие !=1 или лучше <1

Сообщение отредактировал bottrop: 18 Ноябрь 2015 - 18:54


#15 CbCoder

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

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

Отправлено 19 Ноябрь 2015 - 09:30

1. Это где вы взяли подобную конструкцию? Разве хоть где-то есть примеры подобных построений? Чересчур фантазировать не надо уж, программа это не искусственный интеллект, выполняет только то что в нее заложено, а именно те функции что в ней предусмотрены. В частности, для запросов к БД есть соответствующие функции, примеры которых есть в документации и на форуме. Можно например набрать в поиске форума слово "запрос".

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

2. А функция count здесь для чего, не понял? Количество чего там считать? Тем более что она всегда будет единицу возвращать, т.е. полностью нейтрализует проверку. К чему вы это?

не знаю насколько корректно делать условие !=1 или лучше <1
По результату абсолютно без разницы, т.к. здесь либо 0 либо 1, третьего не дано. С точки зрения читабельности лучше вообще ==0

#16 bottrop

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

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

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

Доброго дня.
Не хватает мозга, чтобы довести до ума вычисление по полям "связь" и "пользователь".

По полям пользователь из форума понял, что должен быть sql запрос. Делаю такой, но непонятно куда именно его нужно вставить.

$row = data_select_array(46, "status=0 AND f1400=",$line['Менеджер']); // f1400 - поле Пользователь в Сотрудниках
$line['Ответств.'] = $row['id'];

По полям связи, делаю так [Поле связи][Связанное поле], но выводиться только цифра, вместо связанного поля. Видимо id


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

#17 CbCoder

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

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

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

Цитата

По полям пользователь из форума понял, что должен быть sql запрос. Делаю такой, но непонятно куда именно его нужно вставить.

$row = data_select_array(46, "status=0 AND f1400=",$line['Менеджер']); // f1400 - поле Пользователь в Сотрудниках
$line['Ответств.'] = $row['id'];

А в $line['Ответств.'] у вас какой тип поля? Если это поле связи с таблицей Сотрудники, то код правильный. Но я не понял сути вопроса насчет "куда вставить". О чем идет речь, какова задача?

Цитата

По полям связи, делаю так [Поле связи][Связанное поле], но выводиться только цифра, вместо связанного поля. Видимо id

Тоже не совсем понял контекста. Опишите задачу и пример вашего кода.

#18 bottrop

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

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

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

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


Тоже не совсем понял контекста. Опишите задачу и пример вашего кода.

Ну не могу разобраться в элементарной вещи, помогите:
Этот код работает без проблем:
$data['Лог'] = 'Пользователь "'.$user['fio'].'" изменил поле "Телефон" с "'.$event['changed'][1700]['old'].'" на "'.$line['Телефон'].'"';

Как должна выглядеть эта часть кода для поля "типа связь" и поля "типа пользователь":
"...с "'.$event['changed'][1700]['old'].'" на "'.$line['Телефон'].'"';"

#19 bottrop

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

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

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

Не оставайтесь равнодушным к проблеме, помогите.

#20 CbCoder

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

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

Отправлено 25 Январь 2016 - 09:08

Извиняюсь, видимо тема как-то затерялась, обычно я всегда сразу отвечаю, за редким исключением.

Цитата

Как должна выглядеть эта часть кода для поля "типа связь" и поля "типа пользователь":
"...с "'.$event['changed'][1700]['old'].'" на "'.$line['Телефон'].'"';"

Выглядеть должна так: вначале вам необходимо обратится запросом к соответствующей таблице (связанной или пользователей), с выборкой по id, равным значению поля. Затем получить нужное поле из нее и подставить в ваше выражение.





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

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