В работе с 1С:Предприятие часто возникает ситуация, когда нужно определить, какой именно пользователь открыл ту или иную форму. Это может потребоваться для аудита действий, отладки ошибок, контроля доступа или просто для понимания, кто в данный момент работает с критически важными документами. К сожалению, стандартный интерфейс не всегда предоставляет эту информацию "из коробки" — её приходится добывать обходными путями.

В этой статье мы разберём 5 рабочих методов, как узнать, кто открыл форму в 1С 8.3 (актуально и для 8.2 с учётом особенностей платформы). От простых встроенных инструментов до программных решений с использованием Управляемых форм и Журнала регистрации. Вы сможете выбрать подходящий способ в зависимости от ваших прав доступа, версии конфигурации и целей отслеживания.

Важно: некоторые методы требуют прав администратора или доступа к конфигуратору. Если вы обычный пользователь — сосредоточьтесь на первых двух способах.

1. Встроенные инструменты 1С: журнал регистрации

Самый надёжный и универсальный способ — использовать Журнал регистрации. Он фиксирует большинство действий пользователей, включая открытие форм, но только если эта опция включена в настройках.

Чтобы проверить, кто открывал форму:

  1. Откройте Администрирование → Журналы регистрации (путь может отличаться в зависимости от конфигурации).
  2. Установите фильтр по дате и времени, когда форма была открыта.
  3. В колонке Событие ищите записи типа "Открытие формы" или "Активизация формы".
  4. В колонке Пользователь будет указан логины тех, кто взаимодействовал с формой.

⚠️ Внимание: Журнал регистрации может быть отключён или очищаться автоматически. Если данных нет — проверьте настройки хранения логов в Администрирование → Настройки программы → Журналы регистрации.

💡

Если журнал регистрации отключён, но у вас есть права администратора, включите его через конфигуратор: Администрирование → Поддержка и обслуживание → Журнал регистрации → Настроить ведение журнала.

Преимущества метода:

  • 🔹 Не требует изменений в конфигурации
  • 🔹 Работает для всех пользователей и форм
  • 🔹 Показывает историю открытий (если журнал не очищался)

Недостатки:

  • 🚫 Может быть отключён
  • 🚫 Требует прав на просмотр журналов
  • 🚫 Не показывает текущее состояние (только историю)

2. Системное сообщение "Активные пользователи"

Если вам нужно узнать, кто прямо сейчас работает с формой (а не историю открытий), воспользуйтесь системным окном Активные пользователи. Оно показывает текущие сеансы работы с базой, включая открытые формы.

Как открыть:

  1. В главном меню выберите Сервис → Активные пользователи (или Администрирование → Активные пользователи в новых версиях).
  2. В списке найдите нужного пользователя и дважды кликните по его сеансу.
  3. Откроется детальная информация, где в разделе Открытые окна или Активные формы можно увидеть, какие формы открыты в данный момент.

⚠️ Внимание: В файловом варианте (не серверном) этот метод покажет только ваш текущий сеанс. Для многопользовательского режима нужен 1С:Предприятие с клиент-серверной архитектурой.

Ограничения метода:

  • 🔹 Показывает только текущие сеансы (не историю)
  • 🔹 В файловом варианте работает ограниченно
  • 🔹 Требует прав на просмотр активных пользователей
📊 Как часто вам нужно отслеживать, кто открывает формы в 1С?
Ежедневно
Раз в неделю
Только при ошибках
Никогда не приходилось

3. Программный метод: получение имени пользователя через код

Если вы разработчик или имеете доступ к конфигуратору, можно модифицировать форму, чтобы она сама показывала, кто её открыл. Это делается через встроенный язык .

Пример кода для Управляемой формы (вставляется в обработчик события ПриОткрытии):

Процедура ПриОткрытии(Отказ)

Сообщить("Форму открыл пользователь: " + Пользователи.ТекущийПользователь().Имя);

КонецПроцедуры

Для обычных форм (в 1С 8.2):

Процедура ПриАктивизации()

Сообщить("Форму активировал: " + ПользователиИнформационнойБазы.ТекущийПользователь());

КонецПроцедуры

Чтобы информация отображалась постоянно (например, в статусной строке формы), добавьте реквизит формы типа Строка и обновите его значение при открытии:

Процедура ПриОткрытии(Отказ)

ТекущийПользователь = Пользователи.ТекущийПользователь().Имя;

КонецПроцедуры

⚠️ Внимание: Изменение конфигурации требует прав разработчика. Неправильные изменения могут нарушить работу программы. Всегда тестируйте код в тестовой базе перед внедрением в рабочую.

Плюсы программного метода:

  • 🔹 Точность — показывает именно того, кто открыл форму
  • 🔹 Можно доработать под специфические нужды (например, логировать время открытия)
  • 🔹 Работает даже если журнал регистрации отключён

Минусы:

  • 🚫 Требует доступа к конфигуратору
  • 🚫 Нужно поддерживать код при обновлениях 1С

Дублировать форму в тестовой базе|Создать резервную копию конфигурации|Проверить права на изменение|Протестировать код на разных ролях пользователей-->

4. Использование отчёта "Монитор активных пользователей"

В некоторых конфигурациях (например, 1С:ERP или 1С:Управление торговлей 11) есть специализированный отчёт Монитор активных пользователей. Он даёт расширенную информацию о действиях пользователей, включая открытые формы.

Как найти:

  1. Откройте раздел Администрирование (или Сервис).
  2. Найдите отчёт Монитор активных пользователей или Активность пользователей.
  3. Установите фильтр по времени и пользователям.
  4. В результатах будет колонка с открытыми формами или объектами.

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

Пример кода для создания простого отчёта (выполняется в конфигураторе):

Процедура СформироватьОтчет()

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Сеансы.Пользователь КАК Пользователь,

| Сеансы.Хост КАК Компьютер,

| Сеансы.Приложение КАК Приложение

|ИЗ

| РегистрСведений.СеансыРаботыПользователей КАК Сеансы

|ГДЕ

| Сеансы.Активен = ИСТИНА";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(СтрШаблон("Пользователь: %1, Компьютер: %2",

Выборка.Пользователь, Выборка.Компьютер));

КонецЦикла;

КонецПроцедуры

⚠️ Внимание: Структура регистра СеансыРаботыПользователей может отличаться в зависимости от конфигурации. Перед использованием проверьте наличие этого регистра в вашей базе.

Как узнать структуру регистра сеансов?

Откройте конфигуратор → найдите регистр сведений СеансыРаботыПользователей (или аналогичный по названию) → посмотрите его измерения и ресурсы. В некоторых конфигурациях этот регистр может называться СеансыПользователей или АктивныеСеансы.

5. Логирование через внешние инструменты (для администраторов)

Если встроенные средства не дают нужной информации, можно использовать внешние инструменты мониторинга:

Способы:

  • 🖥️ SQL-профилировщик (для клиент-серверного варианта): позволяет отследить, какие запросы выполняет пользователь, включая открытие форм.
  • 📊 1С:Линк или 1С:ДиректБанк (если интегрированы): некоторые модули логируют активность пользователей.
  • 🔧 Сторонние утилиты (например, SQL Server Profiler для MS SQL или pgAdmin для PostgreSQL).

Пример использования SQL-профилировщика:

  1. Подключитесь к серверу 1С:Предприятие через SQL Server Management Studio.
  2. Запустите профилировщик и установите фильтр по базе данных .
  3. Ищите события с текстом, содержащим название формы (например, "Документ.ЗаказПокупателя.Форма.ФормаДокумента").
  4. В колонке ApplicationName или LoginName будет указан пользователь.

⚠️ Внимание: Использование SQL-профилировщика может нагружать сервер. Не оставляйте его включённым постоянно — запускайте только на время диагностики.

Метод Требуемые права Показывает историю Показывает текущие сеансы Сложность реализации
Журнал регистрации Администратор/Просмотр журналов Низкая
Активные пользователи Администратор Низкая
Программный код Разработчик ✅ (если логировать) Средняя
Монитор активных пользователей Администратор Низкая
SQL-профилировщик Администратор БД Высокая
💡

Для большинства задач достаточно комбинации Журнала регистрации (для истории) и окна Активные пользователи (для текущих сеансов). Программные методы и SQL-профилировщик нужны только для сложных случаев.

Частые ошибки и как их избежать

При попытке узнать, кто открыл форму, пользователи и администраторы сталкиваются с типичными проблемами:

1. Пустой журнал регистрации

Если в журнале нет данных:

  • 🔹 Проверьте, включено ли ведение журнала в настройках (Администрирование → Настройки программы → Журналы регистрации).
  • 🔹 Убедитесь, что не стоит фильтр по дате, исключающий нужный период.
  • 🔹 В некоторых конфигурациях журнал очищается автоматически — проверьте настройки хранения.

2. В окне "Активные пользователи" нет данных

Возможные причины:

  • 🔹 Вы работаете в файловом варианте — он показывает только ваш сеанс.
  • 🔹 У вас недостаточно прав (требуется роль с доступом к администрированию).
  • 🔹 Пользователь закрыл форму или завершил сеанс.

3. Программный код не работает

Если добавленный код не показывает пользователя:

  • 🔹 Проверьте, что обработчик ПриОткрытии привязан к нужной форме.
  • 🔹 Убедитесь, что используется правильный синтаксис для вашей версии (1С 8.2 или 8.3).
  • 🔹 В некоторых конфигурациях метод Пользователи.ТекущийПользователь() может возвращать не имя, а идентификатор — используйте .Представление() для отображения.

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

FAQ: Ответы на частые вопросы

Можно ли узнать, кто открыл форму, если я обычный пользователь без прав администратора?

Да, но возможности ограничены:

  • 🔹 Попробуйте открыть Сервис → Активные пользователи — в некоторых конфигурациях это доступно.
  • 🔹 Если форма управляемая, иногда в её заголовке или статусной строке отображается текущий пользователь (зависит от настройки формы).
  • 🔹 Обратитесь к администратору с просьбой предоставить информацию из журнала регистрации.
Как отследить, кто открывал форму в определённое время (например, вчера в 15:00)?

Используйте Журнал регистрации:

  1. Откройте журнал (Администрирование → Журналы регистрации).
  2. Установите фильтр по дате/времени (например, с 14:50 до 15:10).
  3. В колонке Событие ищите "Открытие формы".
  4. В колонке Пользователь будет нужная информация.

Если журнал очищается часто, настройте его хранение на более долгий срок.

Можно ли автоматически блокировать форму для определённых пользователей?

Да, это делается через:

  • 🔹 Роли и права доступа: ограничьте права на форму для конкретных ролей в Конфигураторе → Роли.
  • 🔹 Программную проверку: в обработчике ПриОткрытии формы добавьте код:
Процедура ПриОткрытии(Отказ)

Если Пользователи.ТекущийПользователь().Имя = "ИвановИИ" Тогда

Сообщить("Доступ запрещён!");

Отказ = Истина;

КонецЕсли;

КонецПроцедуры

⚠️ Блокировка через код требует прав на изменение конфигурации.

Как узнать, с какого компьютера была открыта форма?

Информация о компьютере пользователя доступна:

  • 🔹 В Журнале регистрации (колонка Компьютер или Хост).
  • 🔹 Через SQL-профилировщик (поле HostName).
  • 🔹 Программно, с помощью функции:
Сообщить("Компьютер: " + ПолноеИмяКомпьютера());

В окне Активные пользователи также есть колонка с именем компьютера.

Почему в журнале регистрации нет записи об открытии формы?

Возможные причины:

  • 🔹 Журнал отключён: проверьте настройки в Администрирование → Настройки программы.
  • 🔹 Фильтр по событиям: возможно, событие "Открытие формы" исключено из записи.
  • 🔹 Автоочистка: журнал может хранить данные только за последний день/неделю.
  • 🔹 Особенности конфигурации: некоторые формы (например, служебные) не логируются.

Решение: настройте журнал на запись всех событий и увеличьте срок хранения.