Хранение действий пользователя

Хранение действий пользователя

Каким образом можно решить, или подойти к решению задачи о протоколировании действий пользователя по запуску конкретных бланков, отчетов, чтобы можно было узнать время и место, когда и где запускался данный бланк-отчет?
 
А если вопрос не о бланках, а о том чтобы знать что пользователь открывал запись на редактирование, но ничего не менял.
 
Я Петра понимаю. У нас тоже есть клиенты, у которых вокруг "одни враги и воры". Поэтому их интересует:
1. Что выписал менеджер (имеется ввиду по каким ценам)
2. Что потом изменил
3. Что распечатывал.
Т.к. в диалоге есть кнопки, то и есть возможность набрать чего хочется и затем распечатать (для клиента), затем "поправить" и распечатать для руководства, разница в карман.
Мы убрали из диалога кнопки, что в протокол попало действие. Чтобы протоколировать бланки можно сделать журнал, куда будет записывать действие (рассчитать бланк). Саму печать бланка не отследить.
 
Случай из практики. Суммы привожу в тыс руб, так как точные цифры никому не нужны, а нужна информация - что и как.

Итак:

Оприходовали товар 1 ед на 70 тр. Но очень захотелось поиметь этот товар за 10тр.

Что сделали:Продали 1 ед за 10 тр!!!

Каким образом?
Технология:

Так как в программе стоял запрет продавать в красной наценкой - сделали:
а) изменили количество в приходе с 1 ед на 10, следовательно цена ед - =7т.р.
б) продали 1 ед за 10 тр.(наценка положительная)
в) изменили количество в приходе с 10 на 1 ед.
в ИТоге - продать продали, а когда всплыло(а это уже поезд почти сверкнул габаритами последних вагонов), начали разбираться.

Вот такая история из жизни.
 
...Вот такая история из жизни.
Так это отследить можно.
А вот другой пример:
1. Вводим расходную накладную, не нажимая Ок её распечатываем.
2. Делаем скидку и сохраняем накладную в журнале (ну и печатаем).
3. Разницу "честно" кладём в карман.
Директор не в курсе, но денег нет. (Правда он (директор) узнал об этом случайно).
Вот такую ситуацию не отследить без того, чтобы не убрать кнопки из диалога.
 
Так это отследить можно.
А вот другой пример:
1. Вводим расходную накладную, не нажимая Ок её распечатываем.
2. Делаем скидку и сохраняем накладную в журнале (ну и печатаем).
3. Разницу "честно" кладём в карман.
Директор не в курсе, но денег нет. (Правда он (директор) узнал об этом случайно).
Вот такую ситуацию не отследить без того, чтобы не убрать кнопки из диалога.


Это как раз из той оперы, когда формируют запись (неважно, в каком модуле, хоть в тех же кадрах сколько случаев таких было), в диалоге печатаем нужные бланки, а потом благополучно отменяем запись. Писали уже на эту тему. В той же 1С (мне пользователи-знатоки 1С этим тычут постоянно) невозможно распечатать бланк, если запись не сохранена. Жмешь кнопку "Печать", 1С-ка тут же просит сохранить запись (причем без выхода из диалога).
 
При должном контроле воровство такого типа отчетами ловится довольно легко. На моей памяти 2 крайних случая, оба в небольших фирмах.
Первый - "паранойя", когда рабочий день менеджеров и операторов не заканчивался,
пока ежедневный отчет каждого не будет принят директором фирмы.
Второй - слепая вера в компьютер и программу, с которой хозяин фирмы (журналист-пенсионер, бизнес - несколько газетных киосков ) познакомился совсем поверхностно. Воровали как раз через повторную печать документов. "Босс", по его словам, насторожился, когда обратил внимание что подчиненные курят "Мальборо", а он себе этого позволить не может:). Обе истории более чем 10-летней давности, к Инфо-Предприятию отношения не имеют, но не в конкретной программе дело,
 
Да даже -неворуя-
головняка-пришедших с 1с от такого "удобства"

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

Впрочем, сколько лет уже обсуждаем этот вопрос...
 
Другой вариант ситуации:

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

Каким образом можно узнать, сколько времени была открыта запись? Чтобы понять - производительно или нет работает сотрудник.

Каким образом сформировать сведения о том, в какое время он закрыл запись?

Если я в настройках снял признак закрытие окон по Esc, то почему я закрываю окно редактирования записи журнала с ее помощью?

И каким образом можно при редактировании записи журнала УБАРТЬ кнопку ОТМЕНА? - есть только один вход - РЕДАКТИРОВАНИЕ (ДОБАВЛЕНИЕ), и есть только один выход ОК?

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

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

Я бы не сгущал так краски, хотя разные тюбики под руку могут попасть. А знать и (как модно говорят) "мотивировать" работников - это тоже необходимо.

Пользователь хочет элементы СРМ с возможностями, о которых я писал: видеть сколько было открыто окно редактирования записи журнала.
 
Мы видим сейчас часть вопроса: вопрос товарного движения, е есть вопрос движения услуг(которые не имеют такого выражения, как товары - не хранятся на складах).

В частности CRM - работа с клиентами: если мы представим действия пользователя в виде "Товара", ответ клиенту в виде "ПЕЧАТЬ" то тогда можно охарактеризовать ситуацию следующим образом:

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

Чем не самый обычный вариант с удалением кнопок из диалога и запрета напечатать без предварительного сохранения записи?
 
Чем не самый обычный вариант с удалением кнопок из диалога и запрета напечатать без предварительного сохранения записи?

Петр, ни хрена не понял приведенную ситуацию.
Но вывод делаю такой же: нужен запрет печати или каких-либо действий над открытой новой записью (или возможность запрета их в функциях журнала) без предварительного её этой записи.
 
Попытаюсь объяснить себе еще раз.

У меня есть товар -информация о чем либо, я этот товар могу отгрузить(вернее не я а менеджер-консультант).

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

Самые обычные действия, не так ли? да и порядок действий тоже строго одинаковый - создаем - подбираем - (нажимаем, не нажимаем ОК) - печатаем.

А дальше - нюанс: информация - это товар, который нельзя посчитать - если на складе стоит 5 ящиков водки - то это 5 ящиков(ну может какая бутылка и разбита, то пробки все на месте)))

А товар(информация) - ее просчитать нельзя - сколько раз ее отдавали(подбирали, читали).

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

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

В частности CRM - работа с клиентами: если мы представим действия пользователя в виде "Товара", ответ клиенту в виде "ПЕЧАТЬ" то тогда можно охарактеризовать ситуацию следующим образом:

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

Чем не самый обычный вариант с удалением кнопок из диалога и запрета напечатать без предварительного сохранения записи?

Если оплату от клиента без следа можно себе в карман, то оплата непременно будет время от времени отправляться именно туда, в т.ч. по сговору с клиентом. Тогда либо софт надо специальным образом строить: регистрировать реализацию при выдаче ответа независимо от печати, отрубить возможность запуска левых копий программы и т.д. и т.п, либо решать вопрос вне софта - установкой видеокамер, например. Но какая-то часть сотрудников всё равно постарается найти возможность для своего маленького бизнеса в обход бизнеса работодателя - как парикмахеры делают прически на дому "подешевле", слесари автосервиса чинят часть автомобилей у себя в гараже...
 
Еще раз рассмотрел эту ситуацию.

Это чем то напоминает то, что сперва ящики таскали в одну сторону, потом их же перенесли на старое место. Вроде при деле, а результат нет - ящики стоят на том же самом месте, вернее результат может быть - разбитые бутылки. Что пробки от них остались, это не утешение)))



Возник еще один альтернативный вариант - если запретить открывать на редактирование вторую запись журнала, если не закрыта первая.

Но это все равно не решает вопроса - сколько времени работник пользовал данную запись журнала?

Вопрос сколько времени и для чего - остается не решенным.
 
Вопрос не очень в тему, но все таки. А как можно посмотреть текущую активность пользователей?
дело в том что сижу пытаюсь обновлять программу. Вижу что пользователи в системе, по куче времени. Удаленные рабочие места - одно в ульяновске, другое в нижнем Новгороде, база во Владимире. Сам тоже сижу по удаленке.
Как можно увидеть что народ просто не закрыл свои копии программ, а не работает там в данный момент . Записи делают очень обширные - идет производство. Не хотелось бы народ обламывать с занесением. Бывает что на одну операцию уходит до 15 минут, пока со всеми справочниками сверятся.
Сообщение им послать могу, но вот ответ от них получить внутри программы никак.
Не подскажете алгоритм действий , если он такой есть , конечно?
 
У нас есть такая возможность

Есть диалог коннектов.Можно увидеть IP адрес,имя компьютеров подключенных к базе...Очень удобно.Можно еще вывести монитор запросов пользователей.
Пишите в личку
 
Генрих , у Вас видимо отключены личные сообщения. Может на e-mail? Если тут по какой то причине не сможете ответить?
 
И еще возник вопрос: Каким образом можно запретить пользователю открывать несколько записей одного и того же журнала?

Вроде нашел - если открывать запись в диалоге, то пока текущий диалог открыт, нельзя открывать другой диалог, немного не удобно, но лучше чем ничего.
 
Еще один вопрос возник:

Каким образом можно определить что пользователь хочет отказаться от изменений записи, если в запись вносились изменения?
 

Вложения

  • Сообщание.jpg
    Сообщание.jpg
    22.4 KB · Просмотры: 480
Последнее редактирование:
Для себя пришел к следующему:

Нужно
- возможность запретить нажимать ОТМЕНА. или обрабатывать эту ситуацию - Нажал - ДА - True, нажал НЕТ - False.

-возможность запрета открытия 2 окон редактирования записи в форме(в диалоге нельзя по определению, но у диалога нельзя изменить размеры не факт что он поместится на экран, в форме можно изменив размеры окна программы)


Только средствами обработчиков можно сформировать информацию:

- о том, что такая то запись журнала открывалась на редактирование, можно увидеть только время начала редактирования. Если будет возможность обрабатывать нажатие кнопки ОТМЕНА, то конфликт пользователя и хозяина будет сведен к минимуму, так как закрыть окно редактирования можно будет только по кнопке ОК, а следовательно поиски виновных не будут идти тогда, когда уже все забудут кто что делал: разрешение конфликта будет принято в момент совершения действия - нажатия кнопки ОТМЕНА(ОК).

В этом случае можно решить вопрос о протоколировании действий пользователя средствами ИП2 для каждого клиента индивидуально, так как все транзакции будут ПОДТВЕРЖДАТЬСЯ пользователем..


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

- о том, что такая то запись добавлялась в детализацию. Что эта запись не была сохранена совместно с основной записью можно найти только проверим ее наличие в журнале. Можно увидеть время наччала добавления и время сохранения в детализации основной записи.
 
Последнее редактирование:
Протоколирование средствами, которые есть в ИП2 - Обслуживание базы данных - протоколы - имеет один существенный недостаток - а именно, при изменении структуры базы данных обязанность программы вести протокол действия - снимается, хотя таблицы остаются. НО... кто бы знал, что таблицы изменились, и нужно еще раз указать, какие таблицы должны протоколироваться. Если же я восстанавливаю признаки у таблиц для протоколирования, то вся ранее накопленная информация ЗАТИРАЕТСЯ.

Если же иметь возможность перехыватывать действие ОТМЕНА, то можно сделать протокол на журналы - не зависящим от изменения структуры журнала, а следовательно история изменений журнала теряться не будет.
 
Если же иметь возможность перехыватывать действие ОТМЕНА, то можно сделать протокол на журналы - не зависящим от изменения структуры журнала, а следовательно история изменений журнала теряться не будет.


Судя по всему протоколы, которые не зависят от изменения структуры базы данных - это то, что формирует IbExpert "Менеджер протоколов действий".


Но возможность перехватывать действие пользователя, которое ведет к ОТКАТУ внесенных изменений, думаю лишним не будет.
 
Протоколирование средствами, которые есть в ИП2 - Обслуживание базы данных - протоколы - имеет один существенный недостаток - а именно, при изменении структуры базы данных обязанность программы вести протокол действия - снимается, хотя таблицы остаются. НО... кто бы знал, что таблицы изменились, и нужно еще раз указать, какие таблицы должны протоколироваться. Если же я восстанавливаю признаки у таблиц для протоколирования, то вся ранее накопленная информация ЗАТИРАЕТСЯ.

Да, есть такая проблема

Судя по всему протоколы, которые не зависят от изменения структуры базы данных - это то, что формирует IbExpert "Менеджер протоколов действий".
.

Там та же проблема есть. Только в отличие от встроенного в Инфо-Предприятие протоколирования, протоколирование IbExpert приведет к ошибкам при установке обновления (например, когда при обновлении удаляется поле, записываемое в протокол)
 
Это как раз из той оперы, когда формируют запись (неважно, в каком модуле, хоть в тех же кадрах сколько случаев таких было), в диалоге печатаем нужные бланки, а потом благополучно отменяем запись. Писали уже на эту тему. В той же 1С (мне пользователи-знатоки 1С этим тычут постоянно) невозможно распечатать бланк, если запись не сохранена. Жмешь кнопку "Печать", 1С-ка тут же просит сохранить запись (причем без выхода из диалога).

Ок, добавили, будет в следующей версии.
 
Еще один вопросик возник, читал в инете не нашел.

Текущую транзакцию можно узнать из системной переменной Firebird, а каким образом можно узнать результат работы транзакции -True OR False?
 
Еще один вопросик возник, читал в инете не нашел.

Текущую транзакцию можно узнать из системной переменной Firebird, а каким образом можно узнать результат работы транзакции -True OR False?

Если вы заносите в таблицу в триггере, то там будут только подтвержденные транзакции. Отмененные будут отменены вместе с записью в лог.
 
Не могу найти, где посмотреть протокол изменений. Подскажет кто?
 
А где увидеть дату/время входа в программу и выхода?
В ИП-1 такое было
Очень нужно и время входа-выхода и изменения документа все, а не только последнее. Может вам уже и надоело сравнение с 1С, но там такое было. Не каждый день и не по каждому документу, но иногда очень нужно увидеть всю цепочку участников. А вход-выход полезен для учета времени рабочего.
 
Очень нужно и время входа-выхода и изменения документа все, а не только последнее. Может вам уже и надоело сравнение с 1С, но там такое было. Не каждый день и не по каждому документу, но иногда очень нужно увидеть всю цепочку участников. А вход-выход полезен для учета времени рабочего.

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

В принципе это уже приличный набор функций по контролю. И очень редко, когда кому-то нужно что-то больше. Но в меню Файлы, Обслуживание базы можно включить протокол для любого журнала. В протоколе уже будут все действия с записью журнала за всё время и можно будет понять, что конкретно менялось.

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