Проверка активности работы

19.10.10

База данных - Журнал регистрации

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

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

Но последнее время возникли проблемы из-за того, что сотрудники стали задерживаться на работе и автоматическое восстановление последовательности мешает им работать. Конечно можно было сдвинуть время начала на более поздний срок, однако это не совсем эффективно, так как задерживаются сотрудники не всегда. Следующей идеей было проверять наличие пользователей в системе и если они имеются - откладывать начало обработки. Тоже не вариант, так как наши балбесы просто забывали выходить из 1С-ки. Выкидывать их тоже не подходит - могут работать.

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

Вот что у меня получилось (просьба не пинать ногами, сильно не заморачивался):

Функция Выделить(Стр, Разделитель = ",")
   
Поз = Найти(Стр,Разделитель);
    Если
Поз=0 Тогда
       
Рез = Стр;
       
Стр = "";
    Иначе
       
Рез = Лев(Стр,Поз-1);
       
Стр = Сред(Стр,Поз+СтрДлина(Разделитель));
    КонецЕсли;
    Возврат
Рез;
КонецФункции

Функция
ПоследнееДействие()
   
Файл = КаталогИБ()+"SYSLOG\1cv7.mlg";
   
FSO = CreateObject("Scripting.FileSystemObject");
   
F = FSO.GetFile(Файл);
   
T = FSO.OpenTextFile(Файл,1);
   
T.Skip(Макс(0,F.Size-256));
   
ПослСтрока = "";
    Пока
T.AtEndOfLine=0 Цикл
       
ПослСтрока = T.ReadLine();
    КонецЦикла;
   
T.Close();
   
T = 0;
   
F = 0;
   
FSO = 0;
   
Рез = СоздатьОбъект("СписокЗначений");
   
ДТ = Дата(Сред(ПослСтрока,7,2)+"."+Сред(ПослСтрока,5,2)+"."+Лев(ПослСтрока,4));
   
Рез.Установить("Дата",ДТ);
   
Выделить(ПослСтрока,";");
   
Время = Выделить(ПослСтрока,";");
   
Рез.Установить("Время",Время);
   
тЧ = 0; тМ = 0; тС = 0; ТекущееВремя(тЧ,тМ,тС);
   
Рез.Установить("Бездействие",Макс(0,Число(ТекущаяДата())*86400 + тЧ * 3600 + тМ * 60 + тС - Число(ДТ)*86400 - Число(Выделить(ВРемя,":"))*3600 - Число(Выделить(ВРемя,":"))*60 - Число(Время)));
   
Рез.Установить("Пользователь",Выделить(ПослСтрока,";"));
   
Рез.Установить("Среда",Выделить(ПослСтрока,";"));
   
Рез.Установить("Тип",Выделить(ПослСтрока,";"));
   
Рез.Установить("Действие",Выделить(ПослСтрока,";"));
   
Выделить(ПослСтрока,";");
   
Выделить(ПослСтрока,";");
   
Ид = СокрЛП(Выделить(ПослСтрока,";"));
    Если
Ид<>"" Тогда
       
Рез.Установить("Объект",ЗначениеИзСтрокиВнутр("{"""+Выделить(Ид,"/")+""",""0"",""0"","""+Выделить(Ид,"/")+""",""0"",""0"","""+Ид+"""}"));
    КонецЕсли;
   
Рез.Установить("Описание",ПослСтрока);
    Возврат
Рез;
КонецФункции

Функция возвращает список значений в котором по ключам хранится следующая информация:

Дата - дата действия (Тип: Дата)
Время - Время действия (Тип: Строка)
Бездействие - количество секунд бездействия между текущем временем и последним действием (Тип: Число)
Пользователь - Имя пользователя (Тип: Строка)
Среда - Флаг среды выполнения E - Предприятие, C - Конфигуратор, M - Монитор (Тип: Строка)
Тип - Тип действия, например Docs - действие с документами (Тип: Строка)
Действие - Выполненное действие (Тип: Строка)
Объект - Объект данных, над которым было произведено действие, если действие не связано с объектом, то это значение не возвращается (Тип: Объект базы данных)
Описание - Опсиание действия из журнала регистрации (Тип: Строка)

В общем, если кому пригодится эта маленькая функция, буду рад.

Пользуйтесь :)

См. также

Сбой, отказ 1C:Предприятия 7.7, код исключения e06d7363. APPCRASH 1cv7s.exe

Администрирование СУБД Журнал регистрации Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Прекращена работа программы "1CV7 starter program". Никто не может зайти в 1C 7.7. Апкреш. Что делать? Проверьте, возможно журнал регистрации информационной базы 1С: Предприятия 7.7 поврежден.

17.08.2020    4341    ksnik    3    

4

Анализ 1С: Предприятие 7.7 с помощью ELK стека

Журнал регистрации Инструменты администратора БД Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Рассмотрим систему на базе Elasticsearch, Logstash и Kibana (ELK Stack) для анализа логов 1С Предприятие 7.7 с целью визуализации и анализа событий 1С.

22.01.2019    11093    phsin    20    

27

USERSLOG. Система полной отчетности по использованию рабочего времени на любое количество пользователей

Журнал регистрации Учет рабочего времени Платформа 1С v7.7 Абонемент ($m)

Система полной отчетности об использовании рабочего времени пользователями. Все действия пользователей. Сколько времени и на что потрачено. Работает с БД MSSQL, любое количество клиентов

5 стартмани

24.05.2016    17531    4    Art77    2    

6

Контроль изменений реквизитов справочников и документов

Журнал регистрации Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

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

1 стартмани

17.10.2015    16030    22    kras_71    6    

2

SQL-доступ к журналу регистрации 1С:Предприятие 7.7

Журнал регистрации Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

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

11.12.2014    15965    VladC#    8    

7

Исправление испорченных 1cv7.mlg

Журнал регистрации Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Если вы пытаетесь посмотреть журнал регистраций, а у вас неожиданно 1С7.7 спрашивает пароль, хотя вы точно уверены, что пароль на журнал не ставили - поздравляю, у вас испорчен файл 1cv7.mlg

1 стартмани

07.04.2014    20488    25    dima_home    1    

3

Рассылка ошибок из журнала регистрации 1С 7.7 на электронную почту

Журнал регистрации Email рассылки Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Очень полезно узнавать об ошибках при работе 1С раньше, чем пользователи придут жаловаться на проблемы. Если они вообще придут, а не будут молча ругать "глючную 1С".

1 стартмани

26.03.2014    18894    16    vcv    2    

5

Ошибка при запуске журнала регистрации 1с 7.7

Журнал регистрации Платформа 1С v7.7 Бесплатно (free)

При запуске программы выходило сообщение «Ошибка при запуске журнала регистрации». Дело было не в бабине..

04.10.2013    34252    Alexion    2    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Арчибальд 2706 19.10.10 08:13 Сейчас в теме
В общем, если кому пригодится эта маленькая функция, буду рад
Наверное, пригодится. Можно уже радоваться ;)
2. kompas-dm 780 19.10.10 10:19 Сейчас в теме
(0) С возвращением на ИС :D
3. просто учусь 19.10.10 12:59 Сейчас в теме
Есть недостаток - если пользователь не вводит документы, а формирует отчеты, то это не отражается в журнале регистрации :(
4. zsrg 343 19.10.10 15:05 Сейчас в теме
2. Привет! Ну да, давно не заходил. Надо бы что-нибудь подкинуть в публикации из интересного :) Давно ничего не публиковал.

3. Ну тут да, согласен. Если пользователь не делает никакие манипуляции с данными, не открывает формы справочников/документов, то да, данные в журнал не пишутся. Но тут, мне кажется, без внесения изменений в конфигурацию уже не получится. Потому что надо как-то показать свою активность. Либо, если база лежит на сервере и расшарена по сети, то можно считывать время простоя сеанса работы сетевого подключения. Либо, если работа ведется через удаленный доступ, считывать время простоя в терминальном соединении.
5. Ёпрст 1063 19.10.10 19:47 Сейчас в теме
Лучше использовать ВремяПростояСистемы, чем парсить ЖР.
6. zsrg 343 20.10.10 00:41 Сейчас в теме
5. ВремяПростояСистемы конечно хорошо, но потребует установки 1С++, да к тому же я не делаю парсинг ЖР целиком, если посмотреть код, то курсор чтения помещается на конец файла - 256 байт, затем чтение построчно и берется последняя строка. По времени это, практически, ничего не занимает. И, главное, не требует установки сторонних разработок и работает с любой конфигурацией. Минус, как уже писалось, в отсутствии записей в журнале при работе с отчетами и обработками.
7. pupkinSana 108 20.10.10 10:20 Сейчас в теме
Вообще может лучше посмотреть последний доступ к файлу ЖР? через ФС.АтрибутыФайла()? а не ВремяПростояСистемы
8. pupkinSana 108 20.10.10 10:21 Сейчас в теме
А так, вообще плюс, нужно было как то узнать кто последний заходил и что делал, не знал как с конца файлик откавырять.
9. virs 20.10.10 12:02 Сейчас в теме
Нормальное решение- потому, как без ВК.
А в отчёты можно добавить ссылку на ГлПроцедурку - которой делать запись в ЖР.
10. zsrg 343 20.10.10 13:20 Сейчас в теме
7. Согласен, через атрибуты файла ЖР тоже вариант :)
11. vasko 02.11.10 07:57 Сейчас в теме
Перед архивацией базы, есть желание посмотреть, когда последний раз использовалась база, и если изменений не было - архивировать не надо.
Эта обработка, как раз помогает в этом. Спасибо, возьму на заметку.
12. nickkey 28.09.11 14:13 Сейчас в теме
Спасибо :))) дважды пригодилась :))) тотальный контроль :)
13. NOVOPRO 25.11.11 08:31 Сейчас в теме
Хорошая оработка жалко что подобного нет дял торговли. Там постоянная пробле мониторинга за клиентами у которых нет оборотов.
14. zsrg 343 25.11.11 11:05 Сейчас в теме
В смысле? Обработка работает под любой конфигурацией 1С 7.7. В том числе и под торговлей!
Если речь идет о 8-ке, то там все проще сделать, там имеются штатные возможности работы с журналом регистрации!
Оставьте свое сообщение