С какого компьютера работает пользователь 1С и как это проверить
Содержание
Быстрее всего рабочее место пользователя в 1С видно в списке активных пользователей: колонка «Компьютер» показывает имя машины, с которой открыт сеанс. В Бухгалтерии 3.0 и ЗУП 3.1 список открывается из раздела Администрирование → Обслуживание, в любой конфигурации — из меню Все функции → Стандартные → Активные пользователи. Если нужно узнать, кто и откуда работал вчера или неделю назад, проверяйте журнал регистрации с отбором по пользователю.
Способ зависит от задачи. «Кто сейчас в базе» решают активные пользователи и консоль кластера. «Кто провёл документ в пятницу» — журнал регистрации. «Какой человек сидит за терминальным сеансом» — средства Windows. Все приёмы ниже работают на платформе 8.3 и не зависят от конфигурации, кроме путей к служебным формам.
Что считается рабочим местом в 1С
Платформа запоминает для каждого сеанса три вещи: пользователя информационной базы, имя компьютера и тип приложения. Имя компьютера — это сетевое имя машины, на которой запущен клиент 1С. IP-адрес и пользователь Windows в стандартные списки не попадают.
Отсюда первое ограничение. Если двадцать бухгалтеров работают через один терминальный сервер , у всех в колонке «Компьютер» будет одно и то же имя — имя сервера. Как выйти из этой ситуации, разобрано в отдельном разделе ниже.
Второе значение термина — элемент справочника «Рабочие места» в библиотеке подключаемого оборудования. По нему типовые конфигурации понимают, к какому компьютеру привязан сканер штрихкодов, фискальный регистратор или весы. Это рабочее место хранит имя компьютера и идентификатор клиента. Текущее рабочее место видно в форме подключения оборудования: в Бухгалтерии 3.0 она открывается из Администрирование → Подключаемое оборудование.
Активные пользователи: смотрим прямо в программе
Это способ для вопроса «кто сейчас в базе и с какой машины». Нужна роль с административными правами.
- В Бухгалтерии 3.0, ЗУП 3.1, УТ 11 откройте
Администрирование → Обслуживаниеи найдите ссылку «Активные пользователи» в группе журнала регистрации. - В любой конфигурации откройте главное меню (кнопка с тремя полосками в левом верхнем углу) →
Все функции(в новых версиях платформы пункт называется «Функции для технического специалиста») → веткаСтандартные→Активные пользователи. - В списке смотрите колонки «Пользователь», «Компьютер», «Приложение», «Начало работы», «Сеанс».
Если пункта «Все функции» нет в меню, включите его: в главном меню откройте Сервис → Параметры и установите флажок «Отображать команду «Все функции»».
| Конфигурация | Где открыть активных пользователей |
|---|---|
| Бухгалтерия 3.0 | Администрирование → Обслуживание |
| ЗУП 3.1 | Администрирование → Обслуживание |
| УТ 11 | НСИ и администрирование → Администрирование → Обслуживание |
| Любая, в Конфигураторе | Администрирование → Активные пользователи |
Колонка «Приложение» помогает отделить живых людей от служебных подключений:
- 👤 «Тонкий клиент», «Толстый клиент», «Веб-клиент» — работает человек;
- 🛠️ «Конфигуратор» — кто-то открыл базу в режиме разработки;
- ⚙️ «Фоновое задание» — регламентные операции, имя компьютера будет именем сервера 1С;
- 🔌 «COM-соединение» — внешняя программа или обмен.
Запомните номер сеанса из списка. По нему в журнале регистрации ставится отбор, и сразу видно, что человек делал с момента входа именно с этой машины.
Журнал регистрации: кто и откуда работал раньше
Активные пользователи показывают только текущую минуту. Если нужно установить, с какого компьютера был проведён или удалён документ, открывайте журнал регистрации.
В типовых конфигурациях он находится рядом с активными пользователями: Администрирование → Обслуживание → Журнал регистрации. В Конфигураторе — Администрирование → Журнал регистрации.
Как найти рабочее место по событию
- Нажмите «Установить отбор» (в Конфигураторе — «Отбор») и задайте период.
- Укажите пользователя или, наоборот, компьютер, если подозреваете конкретную машину.
- Для поиска входов выберите события «Сеанс. Начало» и «Сеанс. Завершение».
- Для поиска изменений данных отберите по метаданным: например, документ «Реализация (акт, накладная)».
- Откройте нужную строку. В карточке события есть поля «Компьютер», «Приложение», «Сеанс», «Соединение», «Данные».
По номеру сеанса удобно склеить картину целиком. Нашли подозрительное удаление — запомните номер сеанса и поставьте отбор по нему. Увидите вход, все действия и выход с одной и той же машины.
Почему в журнале может быть пусто
Журнал пишет только то, что разрешено настройкой. В Конфигураторе откройте Администрирование → Настройка журнала регистрации. Если стоит «Не регистрировать», истории нет. Уровень «Регистрировать ошибки» тоже не покажет обычные входы и изменения: для расследований нужен уровень «Регистрировать все события».
Физически журнал хранится в каталоге 1Cv8Log: у файловой базы — внутри папки базы, у клиент-серверной — в каталоге кластера на сервере 1С. Устаревшие записи могут удаляться по настройке сокращения журнала, поэтому старые события иногда уже недоступны.
Консоль администрирования серверов 1С и утилита rac
В клиент-серверном варианте список сеансов виден без входа в саму базу. Понадобятся права администратора кластера.
Через оснастку
- Запустите «Администрирование серверов 1С Предприятия». Если оснастка не открывается после установки новой версии платформы, перерегистрируйте
radmin.dllнужной версии командойregsvr32от имени администратора. - Раскройте
Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер → Информационные базы → нужная база → Сеансы. - В таблице смотрите колонки «Пользователь», «Компьютер», «Приложение», «Начало сеанса», «Номер сеанса».
Ветка «Соединения» рядом показывает те же данные на уровне соединений. Через неё удобно ловить консоль и служебные подключения, у которых нет сеанса пользователя.
Через командную строку
На сервере без графики (или на 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С запишите время начала работы нужного пользователя.
- На терминальном сервере выполните
quserилиquery session: увидите пользователей Windows, номера сеансов и время входа. - В Диспетчере задач на вкладке «Пользователи» включите колонку «Имя клиента» (правый щелчок по заголовку таблицы). Там видно имя компьютера, с которого подключились по RDP.
- Сопоставьте время входа и процесс
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С?
netstat, ss) и сеансы общих папок для файловой базы.Видно ли рабочее место в файловой базе без сервера 1С?
rac там нет.Почему пользователь есть в активных, хотя компьютер выключен?
Можно ли запретить вход в 1С с определённых компьютеров?
ИмяКомпьютера() в обработчике при начале работы через расширение.