Мониторинг активности пользователя

Публикация № 920170

Администрирование - Администрирование данных 1С - Журнал регистрации

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

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

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

Основная идея

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

Получить список окон можно с помощью функции ПолучитьОкна(), доступной на клиенте. Каждое окно содержит список форм. Проверить активность формы можно с помощью функции формы ВводДоступен(). Текущий элемент формы можно получить у свойства формы ТекущийЭлемент.

Регистр сведений "Активность пользователей"

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

Тогда структура регистра  АктивностьПользователей будет выглядеть следующим образом:

Измерения:

  • Пользователь (тип "СправочникСсылка.Пользователи")
  • НомерСеанса (тип "Число")

Ресурсы:

  • Хеш (тип "Число")

Реквизиты:

  • Комментарий (тип "Строка")
  • Ссылка (тип "ЛюбаяСсылка")

Периодический (в пределах секунды), режим записи независимый.

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

Как регистрировать активность пользователя?

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

Модификация модуля управляемого приложения  

В процедуре  ПриНачалеРаботыСистемы() модуля управляемого приложения нужно сделать вызов функции из глобального  клиентского модуля. Например, так:

Процедура ПриНачалеРаботыСистемы()
	
	// СтандартныеПодсистемы
	СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы();
	// Конец СтандартныеПодсистемы
	
	// ПодключаемоеОборудование
	МенеджерОборудованияКлиент.ПриНачалеРаботыСистемы();
	// Конец ПодключаемоеОборудование
	
	// Постовалов, 01.08.2018
	ВключитьРегистрациюАктивностиПользователя();
	// ---
	
КонецПроцедуры

Общий модуль АктивностьПользователейГлобальный

Функцию ВключитьРегистрациюАктивностиПользователя() создаем в глобальном клиентском общем модуле (это означает, что у общего модуля должны стоять флажки "глобальный" и "клиент").

Процедура ВключитьРегистрациюАктивностиПользователя() Экспорт
	АктивностьПользователейСервер.РегистрацияАктивностиПользователя(0,,"#Начало работы");//1	
	ПодключитьОбработчикОжидания("ПроверитьАктивностьПользователя", 60);//2
КонецПроцедуры

Прокомментируем эту функцию.

// 1. Первой строкой этой процедуры регистрируем начало нового сеанса пользователя с помощью функции РегистрацияАктивностиПользователя() серверного общего модуля АктивностьПользователейСервер. Эта функция будет описана далее. 

//2. Во второй строке подключается обработчик ожидания, который будет вызывать функцию ПроверитьАктивностьПользователя() каждую минуту. Эта функция располагается в этом же модуле и выглядит следующим образом:

Процедура ПроверитьАктивностьПользователя() Экспорт
Окна = ПолучитьОкна();
ТекстСообщения = "";
Ссылка = Неопределено;
АктивнаяФорма = "";
Для Каждого Окно Из Окна Цикл
	ТекстСообщения = ТекстСообщения + "["+Окно.Заголовок+"] ";
	Формы = Окно.Содержимое;
	Для Каждого Ф Из Формы Цикл
		Если Ф.ВводДоступен() Тогда
			// Это активная форма
			Ссылка = ПолучитьЗначениеСвойства(ПолучитьЗначениеСвойства(Ф,"Объект"),"Ссылка");//3
			Активность="!";
			АктивнаяФорма = Ф.Заголовок;
		Иначе
			Активность="";
		КонецЕсли;	
		ТекстСообщения = ТекстСообщения 
		+ "("+Ф.Заголовок+": "+ПолучитьЗначениеСвойства(Ф.ТекущийЭлемент,"Имя")+Активность+")";
		КонецЦикла;
КонецЦикла;
ЗавершитьСеанс = АктивностьПользователейСервер.РегистрацияАктивностиПользователя(
Хэш(ТекстСообщения),Ссылка,АктивнаяФорма); //4
Если ЗавершитьСеанс Тогда // 5
	ЗавершитьРаботуСистемы(Истина);
КонецЕсли;
КонецПроцедуры

// 3. Чтобы понять, с каким объектом работает пользователь, хотелось бы получить ссылку на объект. Как правило (но, к сожалению, не обязательно), главный реквизит формы справочника или документа называется "Объект". Так как мы не знаем точно, является ли форма формой документа или справочника, то получение значения этого реквизита сделаем через вспомогательную функцию ПолучитьЗначениеСвойства(). С другой стороны, может оказаться, что форма имеет главный реквизит с названием "Объект", но у него нет реквизита Ссылка.

Функция ПолучитьЗначениеСвойства(Переменная, Свойство)
	Если Переменная<>Неопределено 
		И ТипЗнч(Переменная)<>Тип("Null")
		И ТипЗнч(Переменная)<>Тип("Строка")
		И ТипЗнч(Переменная)<>Тип("Число")
		И ТипЗнч(Переменная)<>Тип("Дата")
		И ТипЗнч(Переменная)<>Тип("Булево")
		И ТипЗнч(Переменная)<>Тип("ДекорацияФормы")
		Тогда
		Стр = Новый Структура(Свойство, Неопределено);
		ЗаполнитьЗначенияСвойств(Стр, Переменная);
		Возврат Стр[Свойство];
	КонецЕсли;
	Возврат Неопределено;
КонецФункции

// 4. Хэш-функцию от строки вычисляем по следующему алгоритму:

//////////////////////////////////////////////////////////////////////
 //СтрокаХэш - исходный текст
 //hash- начальное значение hash
 // М - множитель (влияет накачество хэш и производительность)
 // TABLE_SIZE - размер получаемого ключа, как Максимальная величина + 1
Функция Хэш(СтрокаХэш, hash=0, M = 31, TABLE_SIZE = 18446744073709551616)
    //TABLE_SIZE = 18446744073709551615; 64 бита
    //M = 31; Умножитель
    ДлинаСтроки = СтрДлина(СтрокаХэш);
    Для к=1 по ДлинаСтроки цикл
        hash = M * hash + КодСимвола(Сред(СтрокаХэш,к,1));
    конеццикла;
    возврат hash%TABLE_SIZE;
КонецФункции

//5. Если функция  РегистрацияАктивностиПользователя()  вернула Истина, то завершаем сеанс работы пользователя.

Общий модуль АктивностьПользователейСервер

Теперь перейдем к записи в регистр. Функция РегистрацияАктивностиПользователя располагается в серверном общем модуле АктивностьПользователейСервер.

Функция РегистрацияАктивностиПользователя(Хеш,Ссылка=Неопределено,Комментарий = "") Экспорт
	ТекДата = ТекущаяДата();
	НомерСеанса = НомерСеансаИнформационнойБазы();
	ЗавершитьСеанс = Ложь;

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	АктивностьПользователейСрезПоследних.Период,
		|	АктивностьПользователейСрезПоследних.Пользователь,
		|	АктивностьПользователейСрезПоследних.Хеш,
		|	АктивностьПользователейСрезПоследних.Комментарий,
		|	АктивностьПользователейСрезПоследних.Ссылка
		|ИЗ
		|	РегистрСведений.АктивностьПользователей.СрезПоследних(
		|			&ТекДата,
		|			Пользователь = &ТекущийПользователь
		|				И НомерСеанса = &НомерСеанса) КАК АктивностьПользователейСрезПоследних";
	
	Запрос.УстановитьПараметр("ТекДата", ТекДата);
	Запрос.УстановитьПараметр("ТекущийПользователь", ПараметрыСеанса.ТекущийПользователь);
	Запрос.УстановитьПараметр("НомерСеанса",НомерСеанса);
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
	Если Выборка.Следующий() Тогда
		Простой = 0;
		Если НачалоДня(ТекДата)=НачалоДня(Выборка.Период) Тогда
			Простой = ТекДата-Выборка.Период; // в секундах	
		КонецЕсли;
		
		// Проверяем простой
		Если Простой > 3600	Тогда
			ЗавершитьСеанс=Истина;
		КонецЕсли;
		
		Если Выборка.Хеш = Хеш Тогда
			// Активности не было...
			Возврат ЗавершитьСеанс;
		КонецЕсли;
	КонецЕсли;
	
	Рег = РегистрыСведений.ДОРН_АктивностьПользователей.СоздатьМенеджерЗаписи();
	Рег.Период = ТекДата;
	Рег.Пользователь = ПараметрыСеанса.ТекущийПользователь;
	Рег.НомерСеанса = НомерСеанса;
	Рег.Хеш = Хеш;
	Рег.Комментарий = Комментарий;
	Рег.Ссылка=Ссылка;
	Рег.Записать(Истина);
	
	Возврат ЗавершитьСеанс;
КонецФункции	

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

Насколько мониторинг замедляет работу пользователя?

По проведенным замерам времени проверка активности занимает менее 1 секунды, поэтому визуально для пользователя существенного замедления работы не происходит. 

Результаты

Активность пользователей можно анализировать или непосредственно, просматривая записи регистра (рис.1), или написать специальные отчеты. Например, я немного модифицировал стандартную обработку "Активные пользователи" (рис. 2), добавив туда колонку "Статус" и написал отчет "Распределение работы пользователей"  (рис. 3). 

Регистр сведенийРис. 1.

Активные пользователиРис. 2.

Рис. 3.

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Darklight 22 11.10.18 16:24 Сейчас в теме
Хорошее решение. Я как раз сейчас делаю аналогичное (!) по завершению сеансов, тоже включающее отслеживание окон (но у меня гораздо больше функционала заложено, поэтому пока не выкладываю, хотя об отслеживании окон уже писал тут недавно в комментариях к другой публикации тоже на тему закрытия неактивных сеансов).

У Вас подсмотрел идею о хешировании строки открытых форм (хотя уже, в общем-то, тоже об этом думал) - не знаю пока - будут ли использовать - у меня иное хранение текущего состояния, думал просто хранить идентификаторы форм списком, т.к. я делаю расширение конфигурации в режиме совместимости для платформы 1С 8.3.9 - а там ещё пока нельзя в расширение изменять структуру данных БД.

Не пойму только, почему Вы применили свою функцию хеширования, а не взяли типовой объект из 8.3 "ХешированиеДанных"?

Ну и жаль, что Вы не привели в описании алгоритм завершения работы системы - там тоже есть свои нюансы.
3. postovalov 177 12.10.18 04:32 Сейчас в теме
(1)
Не пойму только, почему Вы применили свою функцию хеширования, а не взяли типовой объект из 8.3 "ХешированиеДанных"?


Функцию хеширования я взял отсюда: https://infostart.ru/public/70030/. Встроенную функцию не проверял, но думаю, что тоже можно использовать, но заранее не могу сказать, какой вариант будет быстрее, т.к. алгоритмы хеширования разные.
2. shurik_shurik 11.10.18 17:08 Сейчас в теме
Идея интересная, но вопрос, зачем делать обращение к срезПоследних регистра, если у Вас и так есть
"создаем в глобальном клиентском общем модуле (это означает, что у общего модуля должны стоять флажки "глобальный" и "клиент")"

Не проще хранить последние данные в глобальных переменных объявленных в этом модуле ? и не дергать каждый раз базу "по пустякам" ?
4. postovalov 177 12.10.18 04:35 Сейчас в теме
(2) Глобальных переменных в управляемом приложении нет, но использование параметра сеанса должно ускорить работу программы.
5. Darklight 22 12.10.18 09:13 Сейчас в теме
(4)Вот поэтому я храню по-другому, т.к. в расширениях и параметров сеансов нет, которые, всё-равно, доступные только в серверном контексте :-( поэтому, приходится извращаться.
9. azhilichev 12.10.18 16:18 Сейчас в теме
(4)
Глобальных переменных в управляемом приложении нет, но использование параметра сеанса должно ускорить работу программы.


Глобальные клиентские переменные можно задавать в модуле управляемого приложения.
postovalov; +1 Ответить
13. postovalov 177 17.10.18 14:18 Сейчас в теме
(9) Попробовал так сделать. Переменная в модуле управляемого приложения действительно сохраняет значение, но пришлось процедуру-обработчик ожидания также перенести также в этот модуль.
6. Иваныч 23 12.10.18 10:12 Сейчас в теме
Нравится, но пока на 7.7 пользуюсь другим. А вам ставлю плюс
7. astracrypt 64 12.10.18 11:12 Сейчас в теме
У нас используют приложение для Windows. Которое измеряет расстояние курсора в метрах пройденное по экрану. Те у кого больше 20 км за месяц тому премию дают.
8. azhilichev 12.10.18 16:13 Сейчас в теме
Если Переменная<>Неопределено 
		И ТипЗнч(Переменная)<>Тип("Null")
		И ТипЗнч(Переменная)<>Тип("Строка")
		И ТипЗнч(Переменная)<>Тип("Число")
		И ТипЗнч(Переменная)<>Тип("Дата")
		И ТипЗнч(Переменная)<>Тип("Булево")
		И ТипЗнч(Переменная)<>Тип("ДекорацияФормы")
		Тогда


Зачем вы заставляете систему делать лишние действия? Так ведь лучше, правда?

ТипЗначения = ТипЗнч(Переменная)
Если Переменная <> Неопределено
   И ТипЗначения <> Тип("NULL") И ТипЗначения <> Тип("Строка")
   И ТипЗначения <> Тип("Число") И ТипЗначения <> Тип("Дата")
   И ТипЗначения <> Тип("Булево") И ТипЗначения <> Тип("ДекорацияФормы") Тогда


Чтобы гарантированно выкинуть пользователя, лучше использовать не ЗавершитьРаботуСистемы(), а ПрекратитьРаботуСистемы(). Если у вас есть модальный диалог, ЗавершитьРаботуСистемы() не отработает.
10. cssprite 27 13.10.18 15:26 Сейчас в теме
(8)
Зачем вы заставляете систему делать лишние действия? Так ведь лучше, правда?
:))

ТипЗначения = ТипЗнч(Переменная);
ЧтотоСделать = НЕ (Переменная = Неопределено
   ИЛИ ТипЗначения = Тип("NULL") ИЛИ ТипЗначения = Тип("Строка")
   ИЛИ ТипЗначения = Тип("Число") ИЛИ ТипЗначения = Тип("Дата")
   ИЛИ ТипЗначения = Тип("Булево") ИЛИ ТипЗначения = Тип("ДекорацияФормы"));
Если ЧтотоСделать  Тогда ...
12. postovalov 177 15.10.18 01:21 Сейчас в теме
(10) не уверен, что так оптимальнее, чем в (8). Насколько я помню, логическое "И" вычисляется до первого ложного значения. А вот для логического "ИЛИ" нужно вычислить все условия.
16. cssprite 27 18.10.18 22:48 Сейчас в теме
(12)
А вот для логического "ИЛИ" нужно вычислить все условия
Зачем, если первое ИСТИНА даст всему выражению ИЛИ - ИСТИНА ?
Про оптимальность прямо не скажешь, зависит от того, какие значения чаще принимает Переменная, просто для выполнения данного условия с использованием И НЕ РАВНО И НЕ РАВНО ... надо проверить все условия И, а для РАВНО ИЛИ РАВНО ... до первой ИСТИНЫ ...

Вообще извиняюсь, прямо к теме отношения не имеет, тут больше субъективное отношение - длинное И НЕ РАВНО И НЕ РАВНО ... режет глаз ))
17. postovalov 177 19.10.18 10:23 Сейчас в теме
(16) Да, вы правы, с точки зрения количества сравнений их будет ровно столько же. Единственное, что вы добавляете еще одну логическую операцию (НЕ) и вспомогательную переменную.

Вообще извиняюсь, прямо к теме отношения не имеет, тут больше субъективное отношение - длинное И НЕ РАВНО И НЕ РАВНО ... режет глаз ))


Мне, наоборот, удобнее, когда условия находятся на разных строках. Так и нагляднее, и добавлять проще. В общем на "вкус и цвет товарищей нет".
11. postovalov 177 15.10.18 01:17 Сейчас в теме
(8) Спасибо за замечание, конечно, нужно поправить. Что касается, ЗавершитьРаботуСистемы() или ПрекратитьРаботуСистемы(), то выбор зависит от того, какая поставлена цель. Если надо убрать сеансы, в которых пользователи открыли программу и не работают, то достаточно ЗавершитьРаботуСистемы(). Если же цель завершить сеанс, даже если имеется открытый (не сохраненный) документ, то да тогда нужно использовать ПрекратитьРаботуСистемы().
14. Vyatcheslav 16 17.10.18 14:29 Сейчас в теме
Интересный подход. Но концептуально странный и даже опасный, если пользователи поймут что к чему. Ведь важно не то, сколько сотрудник ДЕЛАЛ, а то, сколько он СДЕЛАЛ. Почувствуйте разницу. Неопытный сотрудник может очень бурно изображать деятельность, но выхлопа от этого будет мало. Это относится к любой работе и профессии.

Когда я был неопытным специалистом 1С и только начинал, были задачи по УПП, ради решения которых я упорно сидел по несколько дней в конфигураторе в режиме отладки, пытаясь понять поведение системы, хотя задача в теории решалась за 5 минут грамотным консультантом и без захода в конфигуратор.

У нас есть отчет по пользователям в базах 1С, который показывает, кто сколько документов в базе создал за период, сгруппированные по типам документов и с указанием количества строк в ТЧ документов. Дает представление о объеме выполненной работы. Конечно, сильно зависит от должностных обязанностей работников, слепо количественно позволяет только оценивать тех, кто чисто на первичке сидит. У кого обязанности налоговый учет, декларации, закрытие месяца, всякая другая отчетность и т.д., понятно, так не оценить, документов они вводят не много.

Мне симпатичен способ нормирования, когда на одного расчетчика 200 сотрудников + зуп отчетность, например, или на одного буха 2000-4000 основных средств и т.д., но вообще тема очень сложная, пользователь может реально зашиваться и не успевать только потому, что многие функции не автоматизированы и он не знает, что это можно автоматизировать, или функции автоматизированы, но пользователь не знает, как можно работать эффективнее и никто его не учит. Тут только может помочь желание непосредственного руководителя сделать работу пользователя эффективнее + привлечение консультантов-программистов 1С, аудит рабочих и производственных процессов.

ВЫВОД: Универсального счетчика быть не может в принципе, по которому можно объективно оценить любого пользователя, везде необходимо подходить с умом. Там, где сотр решает бизнес-цели, там проще, можно оценивать просто по принесенной выручке/прибыли/выработке и т.д. Там, где обслуживающие подразделения: бухи, юристы, финансисты-экономисты, айтишники и т.д. все намного сложнее.
15. postovalov 177 18.10.18 06:43 Сейчас в теме
(14) В статье описан метод регистрации активности пользователя, но каждый может использовать его для своих целей. Если премию выписывать, то да, это опасный подход, согласен.

Мне симпатичен способ нормирования, когда на одного расчетчика 200 сотрудников + зуп отчетность, например, или на одного буха 2000-4000 основных средств и т.д., но вообще тема очень сложная, пользователь может реально зашиваться и не успевать только потому, что многие функции не автоматизированы и он не знает, что это можно автоматизировать, или функции автоматизированы, но пользователь не знает, как можно работать эффективнее и никто его не учит. Тут только может помочь желание непосредственного руководителя сделать работу пользователя эффективнее + привлечение консультантов-программистов 1С, аудит рабочих и производственных процессов.


Как раз здесь интересно отношение "Объем выполненной работы (количество введенных документов, справочников, строк табличной части и т.п.)" к продолжительности активной работы пользователя. Если у одного пользователя этот показатель будет существенно выше, а у другого существенно ниже, то это предмет для анализа, что пользователь делает неэффективно, почему тратит больше времени на выполнение одних и тех же действий.
18. Si-ned 6 19.10.18 14:09 Сейчас в теме
Повторил весь код для УПП 1.3 для обычного приложения (код вставлял в ПриНачалеРаботыСистемы() обычного приложения). После запуска окно программы запускается, виден интерфейс, но окно заставки не исчезает и висит. Через диспетчер программу не закроешь, так как все диалоги скрываются за окном заставки 1С. Для обычного приложения не работает эта схема что-ли?
19. postovalov 177 19.10.18 16:39 Сейчас в теме
(18) Весь код разработан для управляемого приложения. На обычном не проверял. Думаю, что надо пройти по всем модулям в режиме отладчика.
20. nano1c 140 24.10.18 09:17 Сейчас в теме
(19) ПолучитьОкна() - в обычном не работает. Я делал свою функцию получающую открытые окна в обычном приложении, но через внешнюю компоненту. Вообще у меня давно сделан полный контроль отработанного времени с автоматической рассылкой т13 и т.п. (см. публикацию), но по данным с карт, на другой организации подключил это решение к данным открытий окон - тоже нормально. Сейчас делаю автоматический анализ всех действий - чтобы понять типовые бизнес-маршруты и нетиповые действия анализировать - собирался публикацию писать, но все времени не найду..
postovalov; +1 Ответить
21. xan333 48 05.12.18 10:54 Сейчас в теме
Сделал Расширение для типовых конфигураций 1С на управляемых формах в режиме совместимости 8.3.12. основанное на данной статье https://infostart.ru/public/931108/
22. sp18s 25.02.19 17:37 Сейчас в теме
Ресурсы: Хеш (тип "Число")
Не указали количество знаков хранения. Необходимо 30, по умолчанию 10.
25. postovalov 177 25.06.19 10:07 Сейчас в теме
(22) От этого поля можно вообще отказаться - см. комментарий (2) и далее.
23. letarch 19.06.19 15:16 Сейчас в теме
а использование параметра /LOGUI разве не тоже самое делает?
24. postovalov 177 25.06.19 10:05 Сейчас в теме
(23) Нет, принцип другой: /LOGUI дает журнал всех действий пользователя в отдельном файле. Предлагаемый подход: регистрация активности пользователя с заданной периодичностью в регистре сведений.
Оставьте свое сообщение

См. также

ELK. Время изумительных историй!

Журнал регистрации Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Всем привет! Сегодня хочу рассказать вам несколько полезных историй про то как нам помог Elastic search в связке с Kibana. Про сам Elastic рассказывать не буду, уже все давным давно описали и до меня. Все обычно говорят что это полезно, это классно. В то же время, очень мало кто рассказывает про практические ситуации: когда и как помог Elastic. Итак, начнем.

31.10.2019    7542    0    slozhenikin_com    27    

Версионирование регистров сведений

Журнал регистрации Практика программирования v8 Бесплатно (free)

Моя реализация механизма мониторинга изменений регистра сведений.

17.09.2019    3436    0    KonS    9    

Простейшее использование Elasticsearch для работы с журналом регистрации

Журнал регистрации v8 1cv8.cf Бесплатно (free)

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

20.06.2019    6465    2    milut    11    

Переход на 64-х разрядный сервер 1С

Журнал регистрации Администрирование данных 1С v8 Бесплатно (free)

Переход с 32-х разрядной версии сервера 1С на 64-х разрядную с сохранением данных журналов регистрации информационных баз, используемых в 32-х разрядной версии.

05.04.2019    17003    0    ids79    12    

Мониторинг активности пользователя

Журнал регистрации v8 БП3.0 Россия Абонемент ($m)

Расширение предназначено для мониторинга активности пользователей, фиксирует какие окна открывал и когда пользователь в программе. Автоматически завершает работу не активных пользователей, что позволяет экономить системные ресурсы. Есть отчет об Активности пользователей по часам с возможностью отбора по конкретному пользователю. Расширение для типовых конфигураций 1С на управляемых формах в режиме совместимости 8.3.12.

1 стартмани

26.10.2018    6098    56    xan333    7    

Все, что вы хотели знать о журнале регистрации

Журнал регистрации v8 Бесплатно (free)

Исследование файла Журнала регистраций в формате lgd.

22.09.2018    19038    0    Fox-trot    25    

Кто запустил анализ журнала регистрации?

Журнал регистрации v8 Бесплатно (free)

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

16.09.2017    18506    0    metmetmet    42    

Подробный журнал регистрации изменений

Журнал регистрации v8 Бесплатно (free)

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

24.07.2017    11819    0    user700035_6550355    16    

Сжатие журнала регистрации в формате SQLite (.lgd) с помощью программы "DB Browser for SQLite".

Журнал регистрации v8 Россия Бесплатно (free)

Если журнал регистрации базы 1С заметно увеличился, Вы не сможете оперативно искать в нем нужную информацию. Более того, работа с таким журналом может вызывать блокировку работы всех пользователей. Для предотвращения разрастания журнала необходимо устранять настройками запись ненужных событий и перемещать в архивы события с неактуальными датами. Избавиться от уже записанной ненужной информации можно с помощью программы DB Browser for SQLite указанным в этой статье способом.

04.06.2017    25716    0    DrSender    6    

Запись в журнал регистрации изменений дополнительных сведений

Журнал регистрации v8 УТ11 УУ Бесплатно (free)

Небольшая доработка программы "Управление торговлей 11" для записи информации в журнал регистрации изменений дополнительных сведений (регистр сведений) по объектам. Должна работать на всех релизах.

04.05.2017    29113    0    Mortiferus    5    

Загрузка логов журнала регистрации 1С из MS SQL в ElasticSearch

Журнал регистрации v8 Бесплатно (free)

Еще один инструмент хранения и визуализации логов журнала регистрации 1С

01.09.2016    33820    0    farukshin    9    

Ошибка формата файла журнала регистрации, database disk image is malformed

Журнал регистрации v8 1cv8.cf Бесплатно (free)

Ошибка формата файла журнала регистрации по причине: sqlite3_step failed: database disk image is malformed db: C:\Program Files\1cv8\srvinfo\reg_1541\34eda2fe-bcf4-485e-ab47-4f302319f59a\1Cv8Log\1Cv8.lgd sql: SELECT severity, date, connectID, session, transactionStatus, transactionDate, transactionID, userCode, computerCode, appCode, eventCode, comment, metadataCodes, sessionDataSplitCode, dataType, data, dataPresentation, workServerCode, primaryPortCode, secondaryPortCode FROM EventLog WHERE date<3155378867999999 AND eventCode IN (1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42) ORDER BY date DESC

27.09.2015    84079    0    mrWatson    29    

Анализ журнала регистрации для автонастройки списка выгружаемых объектов в обработке ВыгрузкаЗагрузкаДанныхXML82.epf

Журнал регистрации Практика программирования Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Сказ о том, как с помощью слегка модифицированной обработки ВыгрузкаЗагрузкаДанныхXML82.epf решить задачу "Выгрузить из базы-источника все объекты, которые заданный пользователь изменил в указанный период". Данная публикация может быть интересна тем, кто хочет узнать: а) как программно анализировать журнал регистрации и б) как программно настраивать список выгружаемых объектов в обработке ВыгрузкаЗагрузкаДанныхXML82.epf.

06.08.2015    18844    0    q_i    2    

Журнал регистрации 1С: путь к пониманию процессов клиента

Журнал регистрации v8 1cv8.cf Бесплатно (free)

Как понять процессы документооборота клиента, имея доступ к его базе и не общаясь с ним.

11.06.2015    16174    0    Kindman1980    23    

Облегчение вызовов журнала регистрации с отбором по объекту

Журнал регистрации v8 1cv8.cf Бесплатно (free)

Регулярно возникает необходимость просмотреть журнал регистрации по одному объекту. С минимальными изменениями можно автоматизировать установку отбора и вызов непосредственно из формы объекта данных

24.03.2015    12890    0    tarassov    7    

Формат файлов журнала регистрации 1С 8.1/8.2 - ELF/LOG/LGF/LGP

Журнал регистрации v8 1cv8.cf Бесплатно (free)

В статье детально описан формат текстовых файлов журнала регистрации 1С 8.1 - ELF/LOG и 1С 8.2 - LGF/LGP

09.04.2013    77862    0    Антон Ширяев    30    

Версионирование объектов в программе «Управление торговлей для Украины 3.0»

Журнал регистрации Администрирование данных 1С v8 УТ10 Украина Бесплатно (free)

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

13.02.2013    25509    0    aharechko    21    

Автоматизация укорачивания журнала регистрации

Журнал регистрации v8 1cv8.cf Бесплатно (free)

Автоматизированная периодическая очистка разросшегося журнала регистрации на сервере с сохранением удаляемых частей на другом диске.

14.11.2012    29871    0    Stamper    8    

Контроль изменения документов

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Надоело ловить за руку тех кто изменяет документы задним числом, после их распечатывания? Постоянно мучают мысли, а все ли документы в БД правильно оформлены и подписаны? Если так, читайте дальше

17.11.2011    24643    0    pzu    14    

Анализ журнала регистрации информационных баз

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

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

27.06.2011    17681    0    AndreyEvtushin    16    

Простая и быстрая хэш функция (hash) средствами 1С

Практика программирования Россия Абонемент ($m)

Вроде бы не нужна в 1С хэш функция, а всё таки иногда без неё не обойтись. В частности для индексирования строк неограниченной длины или групп строк. Готовую нашел здесь (реализация MD5), но уж очень медленно работает и оптимизировать её не получится - в 1С нет быстрой работы с битами. Вот нашел выход. Спасибо сайту за теорию http://www.strchr.com/hash_functions Оказывается своя хэш функция - это просто. Скорость для 64 битного хэш (кво в минуту): Для строки "http://infostart.ru/public/edit/" - 55000 Для этого текста(600 символов) - 3048 Пример использования с тестом скорости работы в разделе файлов. Скорость расчитывается как количество хэшей из заданного Вами текста за минуту. http://www.strchr.com/hash_functions

1 стартмани

11.05.2010    42736    25    kosilov    44    

Простенькая книга жалоб

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Простая книга жалоб на основе журнала регистрации

13.11.2009    11030    0    igor883    5    

Регистрация изменений в документах

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

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

16.10.2009    13859    0    websamson    23    

Подсистема "Контроль изменения данных" (8.1)

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Подсистема легко встраивается в любую конфигурацию, не изменяет конфигурацию и не мешает обновлению. Назначение - регистрация изменения отдельных (или всех) реквизитов справочников и документов, имеющихся в конфигурации. Например, необходимо контролировать - КТО, КОГДА, С КАКОГО КОМПЬЮТЕРА изменил сумму существующего уже документа "Расходный кассовый ордер"? А в справочнике "Контрагенты" кто и когда поменял "Основного менеджера"? И хотелось бы узнать какое значение на какое заменили - ...чтобы восстановить справедливость :) Подсистема снова БЕСПЛАТНО (то есть даром :))

05.09.2009    27504    0    KukA.5    73    

Подсистема восстановления и регистрации изменений данных (версия 1.0.4.3)

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

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

05.05.2009    15809    0    SedovSU@mail.ru    25    

Подсистема восстановления и регистрации изменений данных

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Вы случайно измененили какой то документ, или справочник или другой объект, так не думайте об этом, данная конфигурация легко восстановить любой объект конфигурации на заданую дату, если он был удален - то будет создан новый на заданую дату. Конфигруация позволяет построить объект в виде дерева, со всеми реквизитами, табличными частями, а если это документ, то и его движения, а так же покажет вам значения до текущих изменений. Все что Вам необходимо это объединить данную конфигурацию, окрыть форму регистра сведений "Журнал истории объектов", на вкладе "Настройки" , нажать по кнопке "Обновить", и напротив регистрируемых объектов поставить "галочку". Конфигурация так же позволяет архивировать журнал и ведет собственный лог, которые при необходимости можно настроить. Если Вы что случайно изменили, не бойтесь, откатите обратно!

24.04.2009    13229    0    SedovSU@mail.ru    19    

Подсистема регистрации изменений

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

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

16.04.2009    14993    0    SedovSU@mail.ru    18    

Отчет по времени начала работы пользователей в 1С по дням (по XML выгрузке журнала)

Журнал регистрации v8 1cv8.cf Россия Бесплатно (free)

Простой отчёт по файлу выгрузки XML журнала: в какое время пользователь начал использовать 1С по дням.

13.11.2008    10885    0    angeliccare    1    

Определение простоя в работе пользователя.

Журнал регистрации v8 Россия Бесплатно (free)

Данная разработка предназначена для отслеживания простоя (т.е. отсутствия движений мышью/нажатий клавиатуры) работы пользователя в течение определенного промежутка времени и выполнения одного из следующих действий: - Блокировка сеанса 1С; - Блокировка сессии Windows; - Завершение работы 1С; - Завершение работы Windows.

26.09.2008    34653    0    coder1cv8    42