Последняя версия DataExpress 3 beta от 9 августа 2020 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Расширения
ИзображениеИзображениеИзображение

Пример: Лог пользователей.

Полезное от пользователей DataExpress
Аватара пользователя
vovka3003
Эксперт
Сообщения: 1376
Зарегистрирован: 30 апр 2016, 21:32
Откуда: г. Белгород (Ростов, Краснодар)
Контактная информация:

Пример: Лог пользователей.

Сообщение vovka3003 » 08 авг 2016, 13:53

С новоиспеченными возможностями новых релизов (в частности - формулы в заметке и функции OLDVALUE), сделал простой пример (вопрос задавался ранее Soronorus в теме: "Журналирование действий пользователя"), демонстрирующий возможность ведения лога по любым действиям пользователей.
К сожалению рубится возможностью ввода символов до 2000 (самое старое отсекается. новое вверху), но Шеф обещал создать безразмерные поля (BLOB), и тогда история будет "резиновой" :) ...
Пароль для всех юзеров - стандартный (ыдиничка).
Вложения
USER_LOG.zip
(45.6 КБ) 245 скачиваний

iarhipov
Заглянувший
Сообщения: 1
Зарегистрирован: 09 июн 2016, 20:32

Re: Пример: Лог пользователей.

Сообщение iarhipov » 15 авг 2016, 11:04

Добрый день! Из примера видно журналирование действий пользователя по изменению одного поля формы, подскажите как быть если необходимо регистрировать изменения нескольких полей в одной форме? Сходу не разобрался,

Аватара пользователя
vovka3003
Эксперт
Сообщения: 1376
Зарегистрирован: 30 апр 2016, 21:32
Откуда: г. Белгород (Ростов, Краснодар)
Контактная информация:

Re: Пример: Лог пользователей.

Сообщение vovka3003 » 15 авг 2016, 11:15

iarhipov писал(а):Добрый день! Из примера видно журналирование действий пользователя по изменению одного поля формы

На то он и пример... :)
подскажите как быть если необходимо регистрировать изменения нескольких полей в одной форме?

Добавить эти поля в формулу лога. (Выражение заметки)

cordek
Знаток
Сообщения: 411
Зарегистрирован: 14 май 2017, 14:53
Благодарил (а): 80 раз
Поблагодарили: 10 раз

Re: Пример: Лог пользователей.

Сообщение cordek » 16 май 2017, 16:30

Хотел чтобы в логе отображался просто факт изменения записи форм пользователем.
Набросал по вашему примеру такой код

Код: Выделить всё

//[Текст1]
iif (NEWREC=1,cstr(DATE)+'_'+cstr(TIME)+' - '+USER+' зарегистрировал заявку '+[Шифр_заявки],
block(
setvar('OLD_LOG',OLDVALUE('LOG')),
cstr(DATE)+'_'+cstr(TIME)+' - '+USER+' изменил заявку'+[Шифр_заявки]+ ' / ' + getvar('OLD_LOG')
)
)


Первую запись при сохранении новой записи он делает.
Но хотелось бы, чтобы при изменении записей формы и сохранении записи дополнялись.

cordek
Знаток
Сообщения: 411
Зарегистрирован: 14 май 2017, 14:53
Благодарил (а): 80 раз
Поблагодарили: 10 раз

Re: Пример: Лог пользователей.

Сообщение cordek » 16 май 2017, 16:54

Нашел в чем проблема. Бездумное копирование примеров.
Надо в комментариях вместо [Текст1] дописать поля моей формы.
Вот так сделал и все работает.

Код: Выделить всё

// [Группа показателя3] [Дата отбора] [Позиций]
iif (NEWREC=1,cstr(DATE)+'_'+cstr(TIME)+' - '+USER+' зарегистрировал заявку '+[Шифр_заявки],
block(
setvar('OLD_LOG',OLDVALUE('LOG')),
cstr(DATE)+'_'+cstr(TIME)+' - '+USER+' изменил заявку '+[Шифр_заявки]+ ' / ' + getvar('OLD_LOG')
)
)


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

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: 13 апр 2017, 08:57
Поблагодарили: 6 раз
Контактная информация:

Re: Пример: Лог пользователей.

Сообщение YurAnt » 16 май 2017, 16:55

Вариант, приведенный в этом топике не имеет будущего т.к. ограничен размером поля в 2000 символов. Можно конечно немного поломав структуру базы увеличить размер до 32000 но это все равно будет костыльно.
Реализовать такое полноценно можно только скриптом.
Изображение

cordek
Знаток
Сообщения: 411
Зарегистрирован: 14 май 2017, 14:53
Благодарил (а): 80 раз
Поблагодарили: 10 раз

Re: Пример: Лог пользователей.

Сообщение cordek » 16 май 2017, 17:02

У меня в базе записи, которые не предполагаются к постоянному редактированию, то есть большой лог и не нужен, думаю даже 400 знаков вполне хватит.
Зада именно в отслеживании того, что кто-то решил вдруг отредактировать запись. Вот думаю может в подчиненную таблицу сделать такое поле с счетчиком изменений, а потом считать сумму в родительской форме.

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: 13 апр 2017, 08:57
Поблагодарили: 6 раз
Контактная информация:

Re: Пример: Лог пользователей.

Сообщение YurAnt » 16 май 2017, 17:11

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

Nikxdrummer
Опытный
Сообщения: 257
Зарегистрирован: 16 фев 2017, 10:56
Откуда: Новосибирск
Благодарил (а): 5 раз

Re: Пример: Лог пользователей.

Сообщение Nikxdrummer » 17 май 2017, 05:27

Буду с нетерпением ждать подобной идеи с логом, вещь очень нужная, но в силу своей не компетенции в программировании помочь с реализацией не могу(( А запихнуть в идеале его можно в монитор пользователей отдельной вкладкой)

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: 13 апр 2017, 08:57
Поблагодарили: 6 раз
Контактная информация:

Re: Пример: Лог пользователей.

Сообщение YurAnt » 17 май 2017, 07:29

Встроенного лога наверное не будет (прямо в мониторе пользователей), но есть идея создать универсальное выражение. Может дойдут руки как-нибудь...
Изображение