Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 9
1

Сеанс входа/выхода

07.10.2019, 14:25. Показов 3477. Ответов 21
Метки нет (Все метки)

Добрый день, я совсем новичок и прошу помощи. Пишу обработку по анализированию времени нахождения пользователей в системе.
Я выцепляю нужную мне информацию из журнала регистрации и вывожу ее в таблицу значений.
У меня уже получилось сделать фильтр по которому я вывожу информацию по конкретному пользователю в конкретный период времени. Собственно осталось рассчитать время нахождения пользователя в системе. Как я понял есть способ вычислить время по сеансам входа и выхода из системы. Собственно у меня вопрос как выцепить нужные мне сеансы первый и последний, если пользователь в течении дня может входить и выходить из системы столько раз сколько ему заблагорассудиться?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2019, 14:25
Ответы с готовыми решениями:

RDP сеанс без выхода текущего пользователя
Добрый день, нужно решить вопрос. RDP без логаута текущего пользователя. Обычный удалённый рабочий...

Автоматическое подключение VPN до входа в сеанс
Всем знатокам добрый день.:) Может тут найдется пару светлых умов которые помогут мне решить...

Список входа -> выхода
Добрый вечер. Вот такая задачка: Словарь в задании - список пар значений с одинаковым типом...

Звуки входа и выхода в win 8
Как настроить звуковые сопровождения? в частности звук приветствия?

21
198 / 158 / 45
Регистрация: 23.08.2014
Сообщений: 804
07.10.2019, 14:49 2
Ну у каждого сеанса как я понимаю есть свои уникальный код. Я бы смотрел по ним, например сгруппировал по по ID и считал сколько минут он был в базе, а потом просуммировать что у вас получится
1
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 9
07.10.2019, 15:27  [ТС] 3
dggrom, не совсем понял Вас, где найти этот ID сеанса?
0
198 / 158 / 45
Регистрация: 23.08.2014
Сообщений: 804
07.10.2019, 16:13 4
Вот тут
Миниатюры
Сеанс входа/выхода  
1
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 9
07.10.2019, 16:35  [ТС] 5
dggrom, Но ведь делая запрос, я выбираю интервал дат допустим на месяц, там же будут пересекаться id сеансов, как быть тогда?
0
198 / 158 / 45
Регистрация: 23.08.2014
Сообщений: 804
07.10.2019, 16:37 6
Dubmprog, упорядочить их по времени и анализировать по порядку.
1
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 9
07.10.2019, 16:44  [ТС] 7
dggrom, а как это в коде будет примерно выражаться Вы можете подсказать?
0
198 / 158 / 45
Регистрация: 23.08.2014
Сообщений: 804
07.10.2019, 17:15 8
Dubmprog, дай свой код я посмотрю
1
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 9
08.10.2019, 11:12  [ТС] 9
dggrom, Вот код который сейчас есть

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Процедура ВыполнитьНажатие(Элемент)
    
   МассивСобытий = Новый Массив;
   МассивСобытий.Добавить("_$Session$_.Start");
   МассивСобытий.Добавить("_$Session$_.Finish");
    
   Если ЗначениеЗаполнено (Пользователь) Тогда
   Фильтр = Новый Структура("Пользователь, ДатаНачала,ДатаОкончания, Событие");
   Фильтр.Вставить("Пользователь",ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Пользователь.ИдентификаторПользователяИБ));
   Фильтр.Вставить("ДатаНачала",НачалоДня(Датас));
   Фильтр.Вставить("ДатаОкончания",КонецДня(Датапо));
   Фильтр.Событие = МассивСобытий;
   Иначе
   Фильтр = Новый Структура("Пользователь, ДатаНачала,ДатаОкончания, Событие");
   Фильтр.Вставить("ДатаНачала",НачалоДня(Датас));
   Фильтр.Вставить("ДатаОкончания",КонецДня(Датапо));
   Фильтр.Событие = МассивСобытий;
   КонецЕсли;
 
   
   
   ТаблицаЗначений = Новый ТаблицаЗначений;  
   ТаблицаЗначений.Очистить();
   
   ВыгрузитьЖурналРегистрации(ТаблицаЗначений,Фильтр, "Дата, Событие, ИмяПользователя, Сеанс, Датанач, Датакон");
     
    
   
КонецПроцедуры
Добавлено через 3 минуты
Мне надо немного изменить форму и ловить 2 даты. Начало сессии первого сеанса и завершение сессии последнего сеанса за день, тогда я смогу из даты завершения вычесть дату начала и получить то, что мне нужно, но вот как это сделать я пока дойти совершенно не могу.
0
198 / 158 / 45
Регистрация: 23.08.2014
Сообщений: 804
08.10.2019, 13:25 10
Dubmprog, как я понимаю вам в переменную ТаблицаЗначений возвращается результат из журнала регистрации.

Для начало вам нужно выгрузить колонку с Сеансами, датой и сгруппировать ее (Насколько помню 1с на каждый день сеанс уникален). Дальше перебирать этот массив и искать в вашей структуре Вход и Выход. Потом вычитать одну дату из другой что бы найти время который пользователь провел за данным сеансом.
1
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 9
08.10.2019, 15:25  [ТС] 11
dggrom, да, Вы все правильно поняли ТаблицаЗначений заполняется из Журнала регистраций.

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

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

Добавлено через 1 час 29 минут
Результат процедуры выглядит как перечисление событий по датам, поэтому я не совсем понимаю как сгруппировать даты одного сеанса и сделать так, что бы у меня один сеанс выводился одной строкой с номером сеанса, именем пользователя, датой начала сеанса, датой завершения сеанса и результатом вычисления времени нахождения в системе.
0
Модератор
Эксперт 1С
3145 / 2821 / 534
Регистрация: 10.03.2011
Сообщений: 10,888
Записей в блоге: 1
14.10.2019, 23:11 12
Лучший ответ Сообщение было отмечено Dubmprog как решение

Решение

Dubmprog, Отчет
ВремяРаботыПользователей.zip
1
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 9
15.10.2019, 08:45  [ТС] 13
Dethmontt, вау! Спасибо огромное!
0
dggrom
15.10.2019, 08:49
  #14

Не по теме:

Настоящие герои не носят плащей....

0
759 / 568 / 149
Регистрация: 22.04.2013
Сообщений: 4,106
Записей в блоге: 1
15.10.2019, 11:04 15
01.01.2999 0:00:00 15.10.2019 7:08:15
15.10.2019 8:59:27
01.01.2999 0:00:00 15.10.2019 7:08:09
15.10.2019 9:53:11
15.10.2019 9:22:17
15.10.2019 7:58:48
15.10.2019 10:27:48
01.01.2999 0:00:00 15.10.2019 7:08:14
15.10.2019 8:22:20
15.10.2019 8:05:05
15.10.2019 8:14:31
01.01.2999 0:00:00 15.10.2019 7:08:14


Dethmontt, что значит 2999 год? один из этих персонажей я. и меня не было на работе в 7.08.14 - это подо мной запускалось что-то регламентное?
1
Модератор
Эксперт 1С
3145 / 2821 / 534
Регистрация: 10.03.2011
Сообщений: 10,888
Записей в блоге: 1
15.10.2019, 23:11 16
Цитата Сообщение от Yulunga Посмотреть сообщение
что значит 2999 год?
Если ЭВЕНТ = Завершение сеанса, то в дате начала 2999 год

Добавлено через 13 минут
В журнале регистрации тяжело посчитать время входа и выхода, самый правильный пусть - это последовательность "начало сеанса" с номером сеанса и "завершение сеанса" с тем же номером - по другому никак... Сеанс может повторяться сколько угодно раз в любой промежуток времени...
(а циклы я не люблю, накидал отчет на коленке)
1
759 / 568 / 149
Регистрация: 22.04.2013
Сообщений: 4,106
Записей в блоге: 1
16.10.2019, 06:28 17
Dethmontt, а, понил. это всех выкинули для перезагрузки сервера, а были какие-то зависшие сеансы, в том числе мой.
спасибо.
п.с. да понятно, что там кривенько
из интересного что заметил - если в конифигуратер входишь, то номер сеанса большой (20 то ли 40 000 +), но это неточно
1
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 9
16.10.2019, 11:14  [ТС] 18
Я немного доделал Ваш отчет, вывел время сколько пользователь находился в системе в заданный период времени. Я реализовал это с помощью пользовательского поля через РАЗНОСТЬДАТ. Потом мне потребовалось еще немного доработать, мне нужно просуммировать все кол-во часов за заданный период, то-есть весь столбец просто сложить. Собственно не могу дойти до того, как это реализовать. Все время ругается, что поле не найдено когда я пытаюсь посчитать пользовательское поле.
0
Модератор
Эксперт 1С
3145 / 2821 / 534
Регистрация: 10.03.2011
Сообщений: 10,888
Записей в блоге: 1
17.10.2019, 00:17 19
Dubmprog, там сложное выражение нужно будет посчитать типа
1C
1
ВычислитьВыражениеСГруппировкойМассив()
Добавлено через 4 минуты
Dubmprog, все-таки правильная реализация будет через поиск последовательностей - Начало - Завершение...
т.е. нашли ВСЕ начало входа, потом ищем к каждому ближайшее завершение
1
Модератор
Эксперт 1С
3145 / 2821 / 534
Регистрация: 10.03.2011
Сообщений: 10,888
Записей в блоге: 1
17.10.2019, 01:54 20
Лучший ответ Сообщение было отмечено Dubmprog как решение

Решение

Я пересмотрел отчет...
Теперь четко должен работать, один минус будет тормозить на больших базах... т.к. приходится нетипизированную ТЗ перегонять в типизированную и еще уникальный ключ добавлять
ВремяРаботыПользователей_v2.zip
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2019, 01:54

Delphi настройка входа\выхода
Доброго времени суток. У меня такой вот вопрос: вроде бы давно работаю в Delphi, но до сих пор не...

Мониторинг входа/выхода пользователей
Нужно написать скрипт,который записывал бы время,дату и имя компьютера в txt файл,сразу же после...

Реализация входа выхода пользователя
Уважаемые веб дела мастера, помагите пажалуста. Начнем с самого начала. Я пишу сайт тело и...

Время входа/выхода в систему
Подскажите пожалуйста, где виндовс ХР сохраняет время последнего входа и выхода из системы (т.е. во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru