Как понять, какой пользователь сидит в конфигураторе? (не все так просто)

1. starik-2005 3166 19.08.21 13:01 Сейчас в теме
Добрый день!

ДАНО:
1. У нас есть большой и красивый RDP-сервак, на нем есть куча баз локальных, на нем разрабатывают.
2. У нас есть куча юзеров, которые сидят в разных базах на этом серваке и разрабатывают. Также они разрабатывают и в серверных базах, подключаясь к серверу 1С.
3. Все юзеры условно разрабатывают в куче баз от имени "Администратор".

НАЙТИ:
Какой пользователь в какую базу зашел?

Вроде бы винда и 1С - это хорошие, удобные и понятные системы. НО!
1. Нельзя понять, какая конкретно база запущена в каком процессе 1cv8.exe по строке запуска, т.к. там просто локальное имя базы (спасибо, 1С - вы как всегда очень круты!)
2. В ТЖ нет информации о пользователе терминальной сессии.

Как вы решаете эту проблему?

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

В идеале было бы неплохо получить на выходе список запущенных 1cv8.exe с реальным именем базы на сервере и с именем пользователя RDP, который этот процесс запустил. Ну и засунуть это в Zabbix или еще куда.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 81 19.08.21 13:24 Сейчас в теме
(1)1. Использовать COM.Automation. Работать при этом нужно с кластером 1С. https://v8.1c.ru/platforma/automation-client-server/
2. сервер администрирования кластера 1С. https://infostart.ru/1c/articles/810752/

или это все не то?
3. starik-2005 3166 19.08.21 13:27 Сейчас в теме
(2) это могут быть разные сервера 1с. это еще и файловые базы.

Вообще, хотелось бы обойтись командной строкой винды, если это вообще можно. Есть вообще способ узнать, к какой конкретно базе подключился конкретный процесс 1сv8.exe?

Консоль кластера не показывает юзера ОС, который подключился к базу - она показывает комп и юзера базы, а комп всегда один, юзер базы - тоже.
5. nomad_irk 81 19.08.21 13:44 Сейчас в теме
(3) С файловой можно только подключиться к базе по COM и получить список текущих соединений к БД.
Можно узнать пользователя соединения и номер этого соединения по значению "Designer" в поле "ИмяПриложения".

Все остальное можно только в К-С варианте.

Есть вообще способ узнать, к какой конкретно базе подключился конкретный процесс 1сv8.exe?

Только процесс-мониторинг(стороннее ПО для ОС) ответит на этот вопрос. 1С ничего не говорит.
8. starik-2005 3166 19.08.21 13:48 Сейчас в теме
(5)
Все остальное можно только в К-С варианте.
Что конкретно? Как понять, что К-С варианте запущен конфигуратор для базы Х и от юзера ОС У (под базой имею ввиду ее имя в кластере, а не у юзера в спсике баз)?
10. nomad_irk 81 19.08.21 13:51 Сейчас в теме
(8)1С про юзера ОС ничего не знает. В терминах юзеров 1С - можно узнать.

Обратится к кластеру 1С, получить список баз, либо обратиться напрямую к нужной базе и получить список соединений к этой базе.
11. starik-2005 3166 19.08.21 13:53 Сейчас в теме
(10) про юзера ОС я и так знаю - это юзер, под которым запущен 1cv8.exe с ключом DESIGNER. Остается простой вопрос - как понять, к какой базе этот 1cv8.exe подключен.

Можно без общих слов? Конкретный код.
15. nomad_irk 81 19.08.21 13:55 Сейчас в теме
(11)если пользователей ОС куча, а пользователь 1С - один, то никак не узнаете.
16. starik-2005 3166 19.08.21 13:59 Сейчас в теме
(15) ваше мнение понятно, оно услышано, спасибо.
17. nomad_irk 81 19.08.21 14:06 Сейчас в теме
(11)
Можно без общих слов? Конкретный код.

https://forum.mista.ru/topic.php?id=627825
20. starik-2005 3166 19.08.21 14:57 Сейчас в теме
(17) очень круто, но есть и еще круче: https://forum.infostart.ru/forum24/topic229020/ Но на вопрос это не отвечает.
21. nomad_irk 81 19.08.21 15:19 Сейчас в теме
(20)и не ответит, т.к. нет возможности сделать сопоставления ЮзерОС - Юзер1С(вернее есть МногоЮзеровОС - одинЮзер1С)
или PID - ID сеанса 1С.
22. starik-2005 3166 19.08.21 15:22 Сейчас в теме
(21)
и не ответит
Так я уже сказал, что Вас услышал, понял, спс.
4. FatPanzer 19.08.21 13:39 Сейчас в теме
(1)
но иногда это клиентская база и там есть специальный юзер, которому разрешено все
Только не говорите, что это боевая рабочая клиентская база крутится на вашем серваке, и вы разработку ведете прямо в боевой базе.
6. starik-2005 3166 19.08.21 13:46 Сейчас в теме
(4)
боевая рабочая клиентская база крутится на вашем серваке
Не угадал.
7. FatPanzer 19.08.21 13:47 Сейчас в теме
(6) Тогда в чем проблема завести пользюков?
9. starik-2005 3166 19.08.21 13:50 Сейчас в теме
(7) в том, что с базой работает условное количество разработчиков, никогда не узнаешь, какой список разрабов нужно туда завести. Тем более в конфигуратор два юзера одновременно для одной базы зайти не могут, поэтому заводить туда пользователей излишне. Мне нужно просто узнать, для какой базы на кластере запущен конкретный процесс 1cv8.exe.
12. nomad_irk 81 19.08.21 13:54 Сейчас в теме
(9)Если вы каким-то чудесным образом сопоставите база - пользователь - номер сеанса в базе, то тогда вы сможете решить свою задачу. 1С про PID в масштабах ОС ничего не знает
13. FatPanzer 19.08.21 13:54 Сейчас в теме
(9) Так пусть сами себя и заводят. Вопрос же организационный. Зашел под Админом, завел себе пользюка, вышел, и работаешь под собой... А то получается "пользюков нам заводить лень, пусть будет все анонимно, а вот силы и время лучше потратим на аппаратно-программные средства, которые помогут нам срывать покровы с этой таинственной анонимности"...
Ну как-то нелогично, имхо...
Я понимаю, что это в нашей традиции - специально создавать себе трудности...
14. starik-2005 3166 19.08.21 13:55 Сейчас в теме
(13) чтобы завести себя, нужно иметь доступ. Тем более часто нужно просто попасть в конфигуратор и что-то посмотреть, зачем для этого заводить пользователя?

И вот советов я не просил - у меня есть четкий кейс. не знаете - не отсвечивайте.
18. comptr 35 19.08.21 14:29 Сейчас в теме
(1)
в виндовом мониторе ресурсов на закладке ЦП есть таблица "связанные дескрипторы", где можно увидеть файлы, к которым обращается (обращался?) процесс, где, среди прочего, будут файлы журнала регистрации и блокировок файловой базы - т.е. папка с базой.
Кроме того, среди дексрипторов будут и файлы из папкок "%appdata%\Local\1C\1cv8\b8bc06f9-a67c-4315-9449-72f927b68432", которые можно связать со списоком баз пользователя.

Не знаю, как всё это получить кодом, я не настоящий сварщик.
19. starik-2005 3166 19.08.21 14:55 Сейчас в теме
(18)
, как всё это получить кодом, я не настоящий свар
Это очень непросто, но уже кое-что )))
23. ansh15 19.08.21 16:29 Сейчас в теме
В Process Explorer можно в список работающих процессов добавить колонки User name и Command Line. Будет показывать имя пользователя(Windows) запустившего процесс 1cv8.exe параметры запуска с именем базы(любой) и пользователя 1С. Эта же информация присутствует в свойствах процесса.
24. starik-2005 3166 19.08.21 16:56 Сейчас в теме
(23)
параметры запуска с именем базы
Это даже таскменеджер винды умеет, не говоря о tasklist, который даже не под админом выдает все процессы. Но проблема в том, что в строке запуска есть только название базы в списке, а как она называется на сервере - тайна, покрытая мраком.
27. comptr 35 19.08.21 18:12 Сейчас в теме
(24) кстати, а по имени базы можно найти базу в списке баз пользователя, это должно быть проще, чем выдергивать "связанные дескрипторы", но это не 100% надежно, т.к. получить одинаковые названия баз в списке можно. Платформа при это не даст запустить базу, ругаясь на дубли имён баз, но тем не менее. Только сейчас понял, что, похоже, платформа берёт данные для запуска так же - из списка баз по имени базы, вот и не любит одинаковые названия баз.
28. karamazoff 124 19.08.21 19:49 Сейчас в теме
(24)Если можем получить юзера ОС и имя базы в списке (насколько я понимаю, это список баз юзера ОС?) по процессу, то как вариант - лезем на сервере в паку users, открываем там папку этого юзера там, где-то в папке AppData находим файл ibases.v8i - и в нем находим базу по имени и смотрим все параметры подключения.
Может взлетит...
25. user1461477 19.08.21 17:07 Сейчас в теме
у юзера ОС есть кеш
кеш для каждой базы я хочу сказать
смотрим у юзеров шевеление кеша
кто последний пошевелился, того и дизайнер
26. starik-2005 3166 19.08.21 17:33 Сейчас в теме
29. starik-2005 3166 20.08.21 09:57 Сейчас в теме
В опщем и целом 1С - это в части администрирования RDP штука непростая, к пользователю враждебная. Вроде бы она знает, от какой учетки стартует, но, видимо, создаватели ее не посчитали это полезной информацией или просто не умеют (склоняюсь ко второму).
30. axsebur 5 22.09.24 16:21 Сейчас в теме
Пользователя терминала (операционной системы) можно определить по методу SlavaKron тут:

Как программно в 8.1 определить текущего ПОЛЬЗОВАТЕЛЯ ОС?
https://forum.infostart.ru/forum9/topic10769/

- на основании информации из журнала регистрации по событиям аутентификации, где присутствует текущий пользователь ОС
31. user785225 26 14.10.24 15:57 Сейчас в теме
В 2к24 в Журнал регистрации пишется
Имя события: Сеанс. Аутентификация
Имя приложения: Конфигуратор
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот