С какого компьютера работает пользователь 1С и как это проверить

· 9 мин

Содержание

Быстрее всего рабочее место пользователя в 1С видно в списке активных пользователей: колонка «Компьютер» показывает имя машины, с которой открыт сеанс. В Бухгалтерии 3.0 и ЗУП 3.1 список открывается из раздела Администрирование → Обслуживание, в любой конфигурации — из меню Все функции → Стандартные → Активные пользователи. Если нужно узнать, кто и откуда работал вчера или неделю назад, проверяйте журнал регистрации с отбором по пользователю.

Способ зависит от задачи. «Кто сейчас в базе» решают активные пользователи и консоль кластера. «Кто провёл документ в пятницу» — журнал регистрации. «Какой человек сидит за терминальным сеансом» — средства Windows. Все приёмы ниже работают на платформе 8.3 и не зависят от конфигурации, кроме путей к служебным формам.

Что считается рабочим местом в 1С

Платформа запоминает для каждого сеанса три вещи: пользователя информационной базы, имя компьютера и тип приложения. Имя компьютера — это сетевое имя машины, на которой запущен клиент 1С. IP-адрес и пользователь Windows в стандартные списки не попадают.

Отсюда первое ограничение. Если двадцать бухгалтеров работают через один терминальный сервер , у всех в колонке «Компьютер» будет одно и то же имя — имя сервера. Как выйти из этой ситуации, разобрано в отдельном разделе ниже.

Второе значение термина — элемент справочника «Рабочие места» в библиотеке подключаемого оборудования. По нему типовые конфигурации понимают, к какому компьютеру привязан сканер штрихкодов, фискальный регистратор или весы. Это рабочее место хранит имя компьютера и идентификатор клиента. Текущее рабочее место видно в форме подключения оборудования: в Бухгалтерии 3.0 она открывается из Администрирование → Подключаемое оборудование.

Активные пользователи: смотрим прямо в программе

Это способ для вопроса «кто сейчас в базе и с какой машины». Нужна роль с административными правами.

  1. В Бухгалтерии 3.0, ЗУП 3.1, УТ 11 откройте Администрирование → Обслуживание и найдите ссылку «Активные пользователи» в группе журнала регистрации.
  2. В любой конфигурации откройте главное меню (кнопка с тремя полосками в левом верхнем углу) → Все функции (в новых версиях платформы пункт называется «Функции для технического специалиста») → ветка Стандартные → Активные пользователи.
  3. В списке смотрите колонки «Пользователь», «Компьютер», «Приложение», «Начало работы», «Сеанс».

Если пункта «Все функции» нет в меню, включите его: в главном меню откройте Сервис → Параметры и установите флажок «Отображать команду «Все функции»».

КонфигурацияГде открыть активных пользователей
Бухгалтерия 3.0Администрирование → Обслуживание
ЗУП 3.1Администрирование → Обслуживание
УТ 11НСИ и администрирование → Администрирование → Обслуживание
Любая, в КонфигуратореАдминистрирование → Активные пользователи

Колонка «Приложение» помогает отделить живых людей от служебных подключений:

  • 👤 «Тонкий клиент», «Толстый клиент», «Веб-клиент» — работает человек;
  • 🛠️ «Конфигуратор» — кто-то открыл базу в режиме разработки;
  • ⚙️ «Фоновое задание» — регламентные операции, имя компьютера будет именем сервера 1С;
  • 🔌 «COM-соединение» — внешняя программа или обмен.

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

Журнал регистрации: кто и откуда работал раньше

Активные пользователи показывают только текущую минуту. Если нужно установить, с какого компьютера был проведён или удалён документ, открывайте журнал регистрации.

В типовых конфигурациях он находится рядом с активными пользователями: Администрирование → Обслуживание → Журнал регистрации. В Конфигураторе — Администрирование → Журнал регистрации.

Как найти рабочее место по событию

  1. Нажмите «Установить отбор» (в Конфигураторе — «Отбор») и задайте период.
  2. Укажите пользователя или, наоборот, компьютер, если подозреваете конкретную машину.
  3. Для поиска входов выберите события «Сеанс. Начало» и «Сеанс. Завершение».
  4. Для поиска изменений данных отберите по метаданным: например, документ «Реализация (акт, накладная)».
  5. Откройте нужную строку. В карточке события есть поля «Компьютер», «Приложение», «Сеанс», «Соединение», «Данные».

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

Почему в журнале может быть пусто

Журнал пишет только то, что разрешено настройкой. В Конфигураторе откройте Администрирование → Настройка журнала регистрации. Если стоит «Не регистрировать», истории нет. Уровень «Регистрировать ошибки» тоже не покажет обычные входы и изменения: для расследований нужен уровень «Регистрировать все события».

Физически журнал хранится в каталоге 1Cv8Log: у файловой базы — внутри папки базы, у клиент-серверной — в каталоге кластера на сервере 1С. Устаревшие записи могут удаляться по настройке сокращения журнала, поэтому старые события иногда уже недоступны.

Что вам нужно узнать?

Консоль администрирования серверов 1С и утилита rac

В клиент-серверном варианте список сеансов виден без входа в саму базу. Понадобятся права администратора кластера.

Через оснастку

  1. Запустите «Администрирование серверов 1С Предприятия». Если оснастка не открывается после установки новой версии платформы, перерегистрируйте radmin.dll нужной версии командой regsvr32 от имени администратора.
  2. Раскройте Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер → Информационные базы → нужная база → Сеансы.
  3. В таблице смотрите колонки «Пользователь», «Компьютер», «Приложение», «Начало сеанса», «Номер сеанса».

Ветка «Соединения» рядом показывает те же данные на уровне соединений. Через неё удобно ловить консоль и служебные подключения, у которых нет сеанса пользователя.

Через командную строку

На сервере без графики (или на Linux) то же самое делает утилита rac. Она работает через сервер администрирования ras, который нужно запустить заранее:

ras cluster --port=1545 localhost:1540
rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<uuid-кластера>
rac localhost:1545 session list --cluster=<uuid-кластера> --infobase=<uuid-базы>

В выводе session list ищите поля user-name, host и app-id: это пользователь, компьютер и тип приложения. Если кластер защищён паролем, добавьте параметры администратора кластера; точный синтаксис покажет rac help session.

Из консоли можно завершить сеанс. Пользователь при этом потеряет несохранённые данные. Делайте это только после предупреждения человека, а если сеанс «висит» на чужом компьютере — сначала выясните, чей он.

Системные журналы Windows и Linux

Если инструменты 1С показали имя машины, но его недостаточно (нужен IP или пользователь Windows), подключайте средства операционной системы.

Файловая база в общей папке

Каждый клиент 1С держит открытым файл 1Cv8.1CD. На файловом сервере Windows это видно в Управление компьютером → Общие папки → Открытые файлы и Сеансы: там есть учётная запись Windows и компьютер или IP клиента. То же в PowerShell:

Get-SmbOpenFile | Where-Object Path -like "*1Cv8.1CD" |
  Select-Object ClientComputerName, ClientUserName, Path

На Linux с Samba список подключений и заблокированных файлов выводит команда smbstatus.

Клиент-серверная база

Клиенты подключаются к агенту сервера 1С (порт 1540), затем к менеджеру кластера (1541) и рабочим процессам (по умолчанию диапазон 1560–1591, он задаётся в свойствах рабочего сервера). Активные соединения покажет:

  • 🪟 Windows: netstat -ano | findstr :1541 и тот же запрос по портам рабочих процессов;
  • 🐧 Linux: ss -tnp | grep rphost.

IP-адрес клиента превращается в имя командой nslookup <IP> или ping -a <IP>. Так удобно сверять: в 1С пользователь Иванова на BUH-05, а по сети соединение с 192.168.1.45 — значит, это одна и та же машина, или кто-то подписал компьютер чужим именем.

Журнал безопасности Windows

Вход по RDP фиксируется в журнале «Безопасность» событием 4624 с типом входа 10. В событии указаны имя рабочей станции и сетевой адрес источника. Подробная история RDP-сеансов есть в журнале Microsoft-Windows-TerminalServices-LocalSessionManager/Operational: событие 21 — вход, 24 — отключение, 25 — переподключение.

Терминальный сервер: как найти реальный компьютер

Это самая частая ловушка. На сервере RDS все пользователи 1С отображаются с одним «Компьютером» — именем сервера. Чтобы найти реальное рабочее место, нужно связать сеанс 1С с сеансом Windows.

  1. В активных пользователях 1С запишите время начала работы нужного пользователя.
  2. На терминальном сервере выполните quser или query session: увидите пользователей Windows, номера сеансов и время входа.
  3. В Диспетчере задач на вкладке «Пользователи» включите колонку «Имя клиента» (правый щелчок по заголовку таблицы). Там видно имя компьютера, с которого подключились по RDP.
  4. Сопоставьте время входа и процесс 1cv8c.exe или 1cv8.exe в сеансе Windows.

Надёжнее связать пользователя 1С с пользователем Windows: включите в карточке пользователя 1С аутентификацию операционной системы. Тогда в каждом терминальном сеансе однозначно видно, кто запустил программу.

Внутри RDP-сеанса Windows хранит имя клиентского компьютера в переменной окружения CLIENTNAME. Её можно прочитать кодом 1С и записать, например, в журнал регистрации при входе (пример — в следующем разделе).

Программный способ: код на встроенном языке

Для обработки, отчёта или своей записи в журнал пригодятся функции глобального контекста. ИмяКомпьютера() возвращает имя машины, на которой выполняется код: на клиенте — компьютер пользователя (или терминальный сервер), на сервере — сервер 1С.

Список всех сеансов базы с компьютерами собирается на сервере. Для вызова ПолучитьСеансыИнформационнойБазы() нужны административные права.

&НаСервереБезКонтекста
Функция СписокРабочихМест()
	Результат = Новый Массив;
	Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
		ИмяПользователя = ?(Сеанс.Пользователь = Неопределено,
			"<без пользователя>", Сеанс.Пользователь.Имя);
		Результат.Добавить(СтрШаблон("%1 | %2 | %3 | %4 | сеанс %5",
			ИмяПользователя,
			Сеанс.ИмяКомпьютера,
			ПредставлениеПриложения(Сеанс.ИмяПриложения),
			Формат(Сеанс.НачалоСеанса, "ДФ='dd.MM.yyyy HH:mm'"),
			Формат(Сеанс.НомерСеанса, "ЧГ=0")));
	КонецЦикла;
	Возврат Результат;
КонецФункции

&НаКлиенте
Процедура ПоказатьРабочиеМеста(Команда)
	Для Каждого Строка Из СписокРабочихМест() Цикл
		Сообщить(Строка);
	КонецЦикла;
КонецПроцедуры

Чтобы на терминальном сервере узнать реальный компьютер, прочитайте CLIENTNAME на клиенте. Пример работает в тонком и толстом клиенте под Windows, в веб-клиенте COM-объекты недоступны:

&НаКлиенте
Процедура ПоказатьКомпьютерКлиента(Команда)
	Оболочка = Новый COMОбъект("WScript.Shell");
	ИмяКлиента = Оболочка.ExpandEnvironmentStrings("%CLIENTNAME%");
	Если ИмяКлиента = "%CLIENTNAME%" Тогда
		ИмяКлиента = ИмяКомпьютера(); // не RDP-сеанс
	КонецЕсли;
	Сообщить("Компьютер: " + ИмяКомпьютера() + ", клиент RDP: " + ИмяКлиента);
КонецПроцедуры

Если переменная не задана, ExpandEnvironmentStrings возвращает строку без изменений — на это и рассчитана проверка. Полученное имя можно записать через ЗаписьЖурналаРегистрации() с событием вроде «Вход.КлиентRDP». Тогда в журнале появится реальное рабочее место даже на общем терминальном сервере. Такую доработку правильнее делать расширением, а не правкой типовой конфигурации.

Где чаще всего ошибаются при поиске рабочего места

  • 🖥️ Принимают имя терминального сервера за компьютер пользователя. Если у половины сеансов одинаковый «Компьютер», это почти всегда RDS или общий сервер приложений.
  • ⚙️ Ищут человека среди фоновых заданий. Сеансы с приложением «Фоновое задание» и «COM-соединение» запускает сервер или внешняя программа, а не пользователь.
  • 🌐 Доверяют колонке «Компьютер» у веб-клиента. Через публикацию на веб-сервере там может оказаться не машина пользователя. Тогда IP клиента ищите в журналах веб-сервера (IIS или Apache) за то же время.
  • 👥 Работают под общим логином. Если трое входят под «Бухгалтер», журнал покажет компьютеры, но не людей. Заведите каждому своего пользователя 1С.
  • 🧩 Не учитывают одинаковые имена машин. Виртуальные машины, развёрнутые из одного образа без переименования, получают одно сетевое имя. Сверяйте IP через netstat или ss.
  • 📭 Ищут в журнале то, что не записывалось. При уровне «Регистрировать ошибки» обычных входов и изменений там не будет.
Можно ли узнать IP-адрес пользователя средствами 1С?
В стандартных списках сеансов IP нет, только имя компьютера. IP показывают сетевые соединения на сервере (netstat, ss) и сеансы общих папок для файловой базы.
Видно ли рабочее место в файловой базе без сервера 1С?
Да. Активные пользователи и журнал регистрации работают и в файловом варианте. Консоли кластера и rac там нет.
Почему пользователь есть в активных, хотя компьютер выключен?
Сеанс мог зависнуть после обрыва сети. Платформа завершит его по таймауту; если сеанс мешает, администратор может завершить его вручную из консоли кластера.
Можно ли запретить вход в 1С с определённых компьютеров?
Штатной настройки по имени компьютера в карточке пользователя нет. Обычно ограничивают доступ средствами сети и Windows или проверкой ИмяКомпьютера() в обработчике при начале работы через расширение.
Сколько хранится история входов?
Столько, сколько позволяет настройка сокращения журнала регистрации и место на диске. Если записи удаляются раньше, чем нужно, выгружайте журнал в архив перед сокращением.