Администрирование · 13 мин
Как узнать текущее рабочее место в 1С
Как узнать текущее рабочее место пользователя 1С: через консоль кластера, журнал регистрации, встроенные функции и код. Пошаговые инструкции для файловой и клиент-серверной базы.
Под «текущим рабочим местом» в 1С обычно понимают компьютер, с которого пользователь подключился к информационной базе, либо параметры самого сеанса: имя машины, имя пользователя ОС, тип клиента и время начала работы. Эта информация нужна при разборе инцидентов с блокировками, проверке, кто держит открытым сеанс, аудите доступа и настройке регламентных заданий, привязанных к конкретной машине.
Способ определения рабочего места зависит от режима работы базы. В файловом варианте сведения ограничены: видны активные сеансы и пользователи, но детали подключения скромнее. В клиент-серверном варианте вся информация собирается в консоли кластера серверов 1С, где по каждому сеансу виден компьютер, приложение и время старта. Дополнительно данные можно получить программно — встроенный язык 1С предоставляет функции для работы с сеансами и соединениями.
Ниже разобраны практические способы: от простого просмотра активных пользователей до получения имени компьютера текущего сеанса кодом. Отдельно рассмотрены сценарии для терминальных подключений, где имя рабочего места определяется не так очевидно.
Что именно нужно узнать: уточняем задачу
Прежде чем выбирать инструмент, определите, какая информация требуется. Задачи бывают трёх типов. Первая — узнать, с какого компьютера работает конкретный пользователь прямо сейчас. Вторая — получить список всех активных рабочих мест, подключённых к базе. Третья — определить имя компьютера внутри прикладного кода, например чтобы привязать печать чеков к конкретной кассе или записать рабочее место в журнал операций.
Для первых двух задач достаточно штатных средств администрирования — консоли кластера или списка активных пользователей. Для третьей потребуется встроенный язык: функции ИмяКомпьютера() и ПользователиОС(), либо работа с объектом СеансИнформационнойБазы. Подходы не взаимозаменяемы: консоль показывает картину «снаружи», а код — параметры «изнутри» сеанса.
Важно понимать различие между рабочим местом и сеансом. Один пользователь с одного компьютера может открыть несколько сеансов (толстый клиент, тонкий клиент, фоновые задания). В списках сеансов каждое подключение отображается отдельной строкой, и это норма, а не признак ошибки.
Просмотр активных пользователей в режиме Предприятия
Самый быстрый способ увидеть, кто и откуда работает в базе, не требующий прав администратора сервера, — встроенный список активных пользователей. В типовых конфигурациях на базе Библиотеки стандартных подсистем он находится в разделе «Администрирование» → «Обслуживание» → «Активные пользователи». В старых конфигурациях аналогичная функция доступна через меню «Администрирование» → «Активные пользователи».
Список показывает имя пользователя, компьютер, время начала сеанса, режим работы (тонкий, толстый, веб-клиент) и номер сеанса. Для файловой базы колонка «Компьютер» заполняется именем машины пользователя, что и является ответом на вопрос о рабочем месте. Отсюда же можно при необходимости отправить пользователю сообщение или завершить его сеанс — при наличии соответствующих прав.
Ограничение способа: в файловом режиме список активных пользователей иногда отображается с задержкой, а сведения о компьютере могут быть неполными, если подключение идёт через веб-сервер. Для точной диагностики в клиент-серверном варианте лучше использовать консоль кластера.
- 1Откройте раздел «Администрирование» → «Обслуживание» → «Активные пользователи»
- 2Найдите нужного пользователя в списке, при необходимости используйте поиск
- 3Посмотрите колонку «Компьютер» — это имя рабочего места
- 4Проверьте колонки «Начало работы» и «Клиент» для полной картины
- 5При нескольких сеансах одного пользователя сопоставьте их по времени начала
Консоль кластера серверов 1С
В клиент-серверном режиме самый полный источник данных о рабочих местах — консоль администрирования серверов 1С:Предприятия. Откройте её на сервере или на машине администратора, разверните нужный кластер, затем информационную базу и выберите ветку «Сеансы». В таблице по каждому сеансу отображаются пользователь, имя компьютера, приложение (тип клиента), время начала и длительность простоя.
Колонка «Компьютер» здесь показывает машину, с которой инициировано подключение. Для тонкого и толстого клиента это реальное рабочее место сотрудника. Для сеансов веб-клиента и фоновых заданий в этой колонке будет имя сервера 1С или веб-сервера — это ожидаемое поведение, а не ошибка данных.
Дополнительно полезна ветка «Соединения»: она показывает сетевые подключения к рабочим процессам кластера. По соединению можно увидеть, какой процесс обслуживает сеанс, что помогает при диагностике зависших подключений. Сеанс и соединение связаны, но не тождественны: соединение может существовать без активного сеанса.
Как узнать рабочее место программно
Когда данные о рабочем месте нужны внутри прикладной логики — например, для записи в документ, кто и откуда его создал, — используется встроенный язык. Базовая функция ИмяКомпьютера() возвращает сетевое имя машины, на которой выполняется код. Учитывайте контекст выполнения: в клиент-серверном режиме код, выполняемый на сервере, вернёт имя сервера, а не рабочей станции пользователя. Имя реального клиентского компьютера надёжно получается только в клиентском контексте.
Для получения списка всех сеансов с их рабочими местами служит метод ПолучитьСеансыИнформационнойБазы(). Он возвращает массив объектов, у каждого из которых есть свойства: Пользователь, ИмяКомпьютера, НачалоСеанса, ИмяПриложения, НомерСеанса. Текущий сеанс определяется через ПолучитьТекущийСеансИнформационнойБазы().
// Имя компьютера текущего рабочего места (клиентский контекст)
РабочееМесто = ИмяКомпьютера();
// Все активные сеансы с рабочими местами
Сеансы = ПолучитьСеансыИнформационнойБазы();
Для Каждого Сеанс Из Сеансы Цикл
Сообщить(Сеанс.Пользователь.Имя + " | " + Сеанс.ИмяКомпьютера + " | " + Сеанс.ИмяПриложения);
КонецЦикла;Обратите внимание: метод ПолучитьСеансыИнформационнойБазы() требует административных прав и в файловом режиме работает с ограничениями. В типовых конфигурациях вместо прямых вызовов рекомендуется использовать функции общего модуля Пользователи или РаботаВМоделиСервиса, если они присутствуют — это упрощает поддержку кода при обновлениях.
Журнал регистрации: история подключений
Если нужно узнать не текущее, а прошлое рабочее место — например, выяснить, откуда пользователь входил вчера, — используется журнал регистрации. Откройте его через меню «Администрирование» → «Обслуживание» → «Журнал регистрации» (в типовых) или через конфигуратор. Установите отбор по событию «Сеанс. Аутентификация» или «Сеанс. Начало» и по нужному пользователю.
В деталях события указываются компьютер, тип подключения и время. Это позволяет восстановить картину подключений за любой период, пока журнал не был сокращён. Для расследования инцидентов безопасности журнал регистрации — основной источник, так как список сеансов показывает только текущий момент.
Учтите, что журнал регистрации при интенсивной работе растёт быстро. Если ваша задача — регулярный аудит рабочих мест, настройте периодическое сокращение журнала с архивацией, чтобы не потерять историю и не переполнить диск.
Особенности терминальных и веб-подключений
При работе через терминальный сервер (RDP) ситуация меняется: все пользователи запускают клиент 1С на одной машине, поэтому в колонке «Компьютер» будет имя терминального сервера для всех сеансов. Различить реальные рабочие места сотрудников средствами 1С в этом случае нельзя — потребуются инструменты самого терминального сервера: диспетчер задач, диспетчер служб удалённых рабочих столов или команда query session / qwinsta, показывающие сессии RDP с именами клиентских машин.
Для веб-клиента и публикаций через веб-сервер в сеансах отображается имя сервера, обслуживающего соединение. IP-адрес конечного пользователя можно найти в журналах веб-сервера (IIS или Apache) и сопоставить по времени с событием в журнале регистрации 1С.
Если в прикладном коде критично знать реальное рабочее место в терминальном режиме, распространённая практика — использовать переменные окружения клиентской сессии (например, CLIENTNAME в RDP) через чтение переменных окружения ОС. Такое решение требует аккуратности: переменные доступны только на клиенте и только если сессия терминальная.
Как выбрать способ
Частые ошибки и ограничения
Самая распространённая ошибка — вызов ИмяКомпьютера() в серверном контексте и ожидание имени машины пользователя. В клиент-серверной архитектуре серверный код исполняется на сервере 1С, поэтому функция вернёт имя сервера. Если данные нужны на сервере, передайте имя компьютера с клиента параметром или сохраните его при начале сеанса в параметрах сеанса.
Вторая ошибка — путать номер сеанса и номер соединения. Это разные идентификаторы: сеанс описывает логическое подключение пользователя, соединение — сетевой канал к рабочему процессу. При программной завершении «зависших» подключений используйте именно сеансы, иначе можно оборвать чужое соединение.
Третья типичная проблема — попытка получить список сеансов без административных прав. Обычный пользователь программно увидит только свой текущий сеанс; полный список доступен при наличии права «Администрирование». Наконец, в файловых базах, открытых через общий сетевой ресурс, сведения о компьютере могут быть неточными — это ограничение самого файлового режима.
Проверка результата
После определения рабочего места убедитесь, что данные корректны. Сопоставьте имя компьютера с фактической машиной пользователя: в Windows его можно посмотреть в свойствах системы или командой hostname. Если имя в сеансе 1С совпадает — данные достоверны.
Для программного способа проверьте контекст выполнения: временно выведите результат ИмяКомпьютера() на клиенте и на сервере и сравните. Различие подтвердит, что код исполняется там, где ожидается. При работе с ПолучитьСеансыИнформационнойБазы() сверьте количество возвращённых сеансов с консолью кластера — числа должны совпадать.
Как проверить результат
Совпадает с реальным именем машины пользователя (hostname)
Показывает имя сервера 1С или веб-сервера у обычного клиента
Числа совпадают
Программно виден только один сеанс — не хватает прав
События входа содержат компьютер и время
Событий нет — журнал сокращён или отбор настроен неверно
FAQ
Как узнать, с какого компьютера пользователь работал вчера?
Откройте журнал регистрации, установите отбор по пользователю и событиям «Сеанс. Начало» или «Сеанс. Аутентификация» за нужную дату. В деталях каждого события указан компьютер и время подключения.
Почему ИмяКомпьютера() возвращает имя сервера, а не моего ПК?
Код выполняется в серверном контексте (на сервере 1С), поэтому функция возвращает имя той машины, где исполняется. Вызовите функцию в клиентской процедуре и передайте значение на сервер параметром.
Все сеансы показывают один и тот же компьютер — это ошибка?
Нет. Так бывает при работе через терминальный сервер или веб-сервер: все подключения физически инициируются одной машиной. Реальные рабочие места смотрите средствами терминального сервера (qwinsta) или в журналах веб-сервера.
Может ли обычный пользователь увидеть список всех рабочих мест?
Через «Активных пользователей» — да, если у него есть доступ к этой функции в конфигурации. Программно полный список сеансов через ПолучитьСеансыИнформационнойБазы() доступен только с правом «Администрирование».
Как определить рабочее место фонового задания?
Фоновые задания исполняются на сервере 1С, поэтому их «рабочее место» — это сервер. В консоли кластера такие сеансы видны с типом приложения «Фоновое задание», в колонке «Компьютер» будет имя сервера.
Как привязать в коде операцию к конкретному рабочему месту?
При начале работы сеанса сохраните ИмяКомпьютера(), полученное на клиенте, в параметры сеанса или в регистр сведений. Далее в прикладной логике сравнивайте текущее значение с сохранённым и разрешайте или запрещайте операцию.
Что важно запомнить
Текущее рабочее место смотрят в «Активных пользователях» или консоли кластера (ветка «Сеансы»), историю — в журнале регистрации, программно — через ИмяКомпьютера() в клиентском контексте. В терминальном режиме средств 1С недостаточно: нужны инструменты терминального сервера.