В работе с 1С:Предприятие часто возникает ситуация, когда нужно определить, какой именно пользователь открыл ту или иную форму. Это может потребоваться для аудита действий, отладки ошибок, контроля доступа или просто для понимания, кто в данный момент работает с критически важными документами. К сожалению, стандартный интерфейс 1С не всегда предоставляет эту информацию "из коробки" — её приходится добывать обходными путями.
В этой статье мы разберём 5 рабочих методов, как узнать, кто открыл форму в 1С 8.3 (актуально и для 8.2 с учётом особенностей платформы). От простых встроенных инструментов до программных решений с использованием Управляемых форм и Журнала регистрации. Вы сможете выбрать подходящий способ в зависимости от ваших прав доступа, версии конфигурации и целей отслеживания.
Важно: некоторые методы требуют прав администратора или доступа к конфигуратору. Если вы обычный пользователь — сосредоточьтесь на первых двух способах.
1. Встроенные инструменты 1С: журнал регистрации
Самый надёжный и универсальный способ — использовать Журнал регистрации. Он фиксирует большинство действий пользователей, включая открытие форм, но только если эта опция включена в настройках.
Чтобы проверить, кто открывал форму:
- Откройте
Администрирование → Журналы регистрации(путь может отличаться в зависимости от конфигурации). - Установите фильтр по дате и времени, когда форма была открыта.
- В колонке
Событиеищите записи типа"Открытие формы"или"Активизация формы". - В колонке
Пользовательбудет указан логины тех, кто взаимодействовал с формой.
⚠️ Внимание: Журнал регистрации может быть отключён или очищаться автоматически. Если данных нет — проверьте настройки хранения логов в Администрирование → Настройки программы → Журналы регистрации.
Если журнал регистрации отключён, но у вас есть права администратора, включите его через конфигуратор: Администрирование → Поддержка и обслуживание → Журнал регистрации → Настроить ведение журнала.
Преимущества метода:
- 🔹 Не требует изменений в конфигурации
- 🔹 Работает для всех пользователей и форм
- 🔹 Показывает историю открытий (если журнал не очищался)
Недостатки:
- 🚫 Может быть отключён
- 🚫 Требует прав на просмотр журналов
- 🚫 Не показывает текущее состояние (только историю)
2. Системное сообщение "Активные пользователи"
Если вам нужно узнать, кто прямо сейчас работает с формой (а не историю открытий), воспользуйтесь системным окном Активные пользователи. Оно показывает текущие сеансы работы с базой, включая открытые формы.
Как открыть:
- В главном меню выберите
Сервис → Активные пользователи(илиАдминистрирование → Активные пользователив новых версиях). - В списке найдите нужного пользователя и дважды кликните по его сеансу.
- Откроется детальная информация, где в разделе
Открытые окнаилиАктивные формыможно увидеть, какие формы открыты в данный момент.
⚠️ Внимание: В файловом варианте 1С (не серверном) этот метод покажет только ваш текущий сеанс. Для многопользовательского режима нужен 1С:Предприятие с клиент-серверной архитектурой.
Ограничения метода:
- 🔹 Показывает только текущие сеансы (не историю)
- 🔹 В файловом варианте работает ограниченно
- 🔹 Требует прав на просмотр активных пользователей
3. Программный метод: получение имени пользователя через код
Если вы разработчик или имеете доступ к конфигуратору, можно модифицировать форму, чтобы она сама показывала, кто её открыл. Это делается через встроенный язык 1С.
Пример кода для Управляемой формы (вставляется в обработчик события ПриОткрытии):
Процедура ПриОткрытии(Отказ)
Сообщить("Форму открыл пользователь: " + Пользователи.ТекущийПользователь().Имя);
КонецПроцедуры
Для обычных форм (в 1С 8.2):
Процедура ПриАктивизации()
Сообщить("Форму активировал: " + ПользователиИнформационнойБазы.ТекущийПользователь());
КонецПроцедуры
Чтобы информация отображалась постоянно (например, в статусной строке формы), добавьте реквизит формы типа Строка и обновите его значение при открытии:
Процедура ПриОткрытии(Отказ)
ТекущийПользователь = Пользователи.ТекущийПользователь().Имя;
КонецПроцедуры
⚠️ Внимание: Изменение конфигурации требует прав разработчика. Неправильные изменения могут нарушить работу программы. Всегда тестируйте код в тестовой базе перед внедрением в рабочую.
Плюсы программного метода:
- 🔹 Точность — показывает именно того, кто открыл форму
- 🔹 Можно доработать под специфические нужды (например, логировать время открытия)
- 🔹 Работает даже если журнал регистрации отключён
Минусы:
- 🚫 Требует доступа к конфигуратору
- 🚫 Нужно поддерживать код при обновлениях 1С
Дублировать форму в тестовой базе|Создать резервную копию конфигурации|Проверить права на изменение|Протестировать код на разных ролях пользователей-->
4. Использование отчёта "Монитор активных пользователей"
В некоторых конфигурациях (например, 1С:ERP или 1С:Управление торговлей 11) есть специализированный отчёт Монитор активных пользователей. Он даёт расширенную информацию о действиях пользователей, включая открытые формы.
Как найти:
- Откройте раздел
Администрирование(илиСервис). - Найдите отчёт
Монитор активных пользователейилиАктивность пользователей. - Установите фильтр по времени и пользователям.
- В результатах будет колонка с открытыми формами или объектами.
Если такого отчёта нет в вашей конфигурации, его можно добавить через Библиотеку стандартных подсистем (БСП) или создать самостоятельно.
Пример кода для создания простого отчёта (выполняется в конфигураторе):
Процедура СформироватьОтчет()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сеансы.Пользователь КАК Пользователь,
| Сеансы.Хост КАК Компьютер,
| Сеансы.Приложение КАК Приложение
|ИЗ
| РегистрСведений.СеансыРаботыПользователей КАК Сеансы
|ГДЕ
| Сеансы.Активен = ИСТИНА";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(СтрШаблон("Пользователь: %1, Компьютер: %2",
Выборка.Пользователь, Выборка.Компьютер));
КонецЦикла;
КонецПроцедуры
⚠️ Внимание: Структура регистра СеансыРаботыПользователей может отличаться в зависимости от конфигурации. Перед использованием проверьте наличие этого регистра в вашей базе.
Как узнать структуру регистра сеансов?
Откройте конфигуратор → найдите регистр сведений СеансыРаботыПользователей (или аналогичный по названию) → посмотрите его измерения и ресурсы. В некоторых конфигурациях этот регистр может называться СеансыПользователей или АктивныеСеансы.
5. Логирование через внешние инструменты (для администраторов)
Если встроенные средства 1С не дают нужной информации, можно использовать внешние инструменты мониторинга:
Способы:
- 🖥️ SQL-профилировщик (для клиент-серверного варианта): позволяет отследить, какие запросы выполняет пользователь, включая открытие форм.
- 📊 1С:Линк или 1С:ДиректБанк (если интегрированы): некоторые модули логируют активность пользователей.
- 🔧 Сторонние утилиты (например, SQL Server Profiler для MS SQL или pgAdmin для PostgreSQL).
Пример использования SQL-профилировщика:
- Подключитесь к серверу 1С:Предприятие через SQL Server Management Studio.
- Запустите профилировщик и установите фильтр по базе данных 1С.
- Ищите события с текстом, содержащим название формы (например,
"Документ.ЗаказПокупателя.Форма.ФормаДокумента"). - В колонке
ApplicationNameилиLoginNameбудет указан пользователь.
⚠️ Внимание: Использование SQL-профилировщика может нагружать сервер. Не оставляйте его включённым постоянно — запускайте только на время диагностики.
| Метод | Требуемые права | Показывает историю | Показывает текущие сеансы | Сложность реализации |
|---|---|---|---|---|
| Журнал регистрации | Администратор/Просмотр журналов | ✅ | ❌ | Низкая |
| Активные пользователи | Администратор | ❌ | ✅ | Низкая |
| Программный код | Разработчик | ✅ (если логировать) | ✅ | Средняя |
| Монитор активных пользователей | Администратор | ✅ | ✅ | Низкая |
| SQL-профилировщик | Администратор БД | ✅ | ✅ | Высокая |
Для большинства задач достаточно комбинации Журнала регистрации (для истории) и окна Активные пользователи (для текущих сеансов). Программные методы и SQL-профилировщик нужны только для сложных случаев.
Частые ошибки и как их избежать
При попытке узнать, кто открыл форму, пользователи и администраторы сталкиваются с типичными проблемами:
1. Пустой журнал регистрации
Если в журнале нет данных:
- 🔹 Проверьте, включено ли ведение журнала в настройках (
Администрирование → Настройки программы → Журналы регистрации). - 🔹 Убедитесь, что не стоит фильтр по дате, исключающий нужный период.
- 🔹 В некоторых конфигурациях журнал очищается автоматически — проверьте настройки хранения.
2. В окне "Активные пользователи" нет данных
Возможные причины:
- 🔹 Вы работаете в файловом варианте — он показывает только ваш сеанс.
- 🔹 У вас недостаточно прав (требуется роль с доступом к администрированию).
- 🔹 Пользователь закрыл форму или завершил сеанс.
3. Программный код не работает
Если добавленный код не показывает пользователя:
- 🔹 Проверьте, что обработчик
ПриОткрытиипривязан к нужной форме. - 🔹 Убедитесь, что используется правильный синтаксис для вашей версии (1С 8.2 или 8.3).
- 🔹 В некоторых конфигурациях метод
Пользователи.ТекущийПользователь()может возвращать не имя, а идентификатор — используйте.Представление()для отображения.
Критическая ошибка: Если после изменений в конфигураторе форма перестала открываться, немедленно откатите изменения через Конфигуратор → Администрирование → Версии конфигурации или восстановите базу из резервной копии.
FAQ: Ответы на частые вопросы
Можно ли узнать, кто открыл форму, если я обычный пользователь без прав администратора?
Да, но возможности ограничены:
- 🔹 Попробуйте открыть
Сервис → Активные пользователи— в некоторых конфигурациях это доступно. - 🔹 Если форма управляемая, иногда в её заголовке или статусной строке отображается текущий пользователь (зависит от настройки формы).
- 🔹 Обратитесь к администратору с просьбой предоставить информацию из журнала регистрации.
Как отследить, кто открывал форму в определённое время (например, вчера в 15:00)?
Используйте Журнал регистрации:
- Откройте журнал (
Администрирование → Журналы регистрации). - Установите фильтр по дате/времени (например, с 14:50 до 15:10).
- В колонке
Событиеищите"Открытие формы". - В колонке
Пользовательбудет нужная информация.
Если журнал очищается часто, настройте его хранение на более долгий срок.
Можно ли автоматически блокировать форму для определённых пользователей?
Да, это делается через:
- 🔹 Роли и права доступа: ограничьте права на форму для конкретных ролей в
Конфигураторе → Роли. - 🔹 Программную проверку: в обработчике
ПриОткрытииформы добавьте код:
Процедура ПриОткрытии(Отказ)
Если Пользователи.ТекущийПользователь().Имя = "ИвановИИ" Тогда
Сообщить("Доступ запрещён!");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
⚠️ Блокировка через код требует прав на изменение конфигурации.
Как узнать, с какого компьютера была открыта форма?
Информация о компьютере пользователя доступна:
- 🔹 В Журнале регистрации (колонка
КомпьютерилиХост). - 🔹 Через SQL-профилировщик (поле
HostName). - 🔹 Программно, с помощью функции:
Сообщить("Компьютер: " + ПолноеИмяКомпьютера());
В окне Активные пользователи также есть колонка с именем компьютера.
Почему в журнале регистрации нет записи об открытии формы?
Возможные причины:
- 🔹 Журнал отключён: проверьте настройки в
Администрирование → Настройки программы. - 🔹 Фильтр по событиям: возможно, событие
"Открытие формы"исключено из записи. - 🔹 Автоочистка: журнал может хранить данные только за последний день/неделю.
- 🔹 Особенности конфигурации: некоторые формы (например, служебные) не логируются.
Решение: настройте журнал на запись всех событий и увеличьте срок хранения.