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

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

1. Стандартный журнал регистрации: что он показывает и где искать

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

  • 🔧 Настройте уровень детализации журнала в Администрирование → Журналы регистрации → Настройки. Выберите уровень "Минимум + открытие форм" или "Максимум".
  • 📊 Проверьте, включено ли ведение журнала для конкретной базы: Администрирование → Поддержка и обслуживание → Журналы регистрации.
  • ⏳ Учтите, что журнал хранит данные ограниченное время (по умолчанию — 30 дней). Для длительного хранения настройте архивацию.

Чтобы найти, кто открывал документ:

  1. Откройте журнал регистрации (Все функции → Стандартные → Журнал регистрации).
  2. Установите фильтр по типу события: "Открытие формы" или "Чтение данных".
  3. В поле "Объект" укажите имя документа (например, Документ.РеализацияТоваровУслуг).
  4. Отсортируйте по дате и пользователю.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:ERP) журнал может не фиксировать открытие документов в списочных формах — только при открытии карточки документа.
📊 Как часто вам нужно отслеживать, кто открывал документы в 1С?
Ежедневно
Несколько раз в неделю
Редко, по запросу
Никогда не приходилось

2. Расширения конфигурации: добавление отслеживания открытий

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

Алгоритм создания расширения:

  1. Откройте конфигуратор и создайте новое расширение (Конфигурация → Расширения → Добавить).
  2. В расширении добавьте обработчик события "ПриОткрытии" для формы документа:
    &НаКлиенте
    

    Процедура ДокументОбъектПриОткрытии(Отказ, СтандартнаяОбработка)

    ЗаписатьВЖурналОткрытий(ЭтотОбъект.Ссылка, ТекущийПользователь());

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

  3. Создайте регистр сведений (например, ЖурналОткрытийДокументов) с ресурсами:
    • 📅 ДатаОткрытия (тип: Дата)
    • 👤 Пользователь (тип: СправочникСсылка.Пользователи)
    • 📄 Документ (тип: Ссылка)
  4. Реализуйте процедуру ЗаписатьВЖурналОткрытий, которая будет добавлять записи в регистр.
  5. Преимущества метода:

    • 🔄 Не нарушает поддержку типовой конфигурации.
    • 📈 Позволяет гибко настраивать период хранения данных.
    • 🔍 Можно добавить отслеживание дополнительных параметров (например, IP-адрес или время сеанса).
    ⚠️ Внимание: Расширения могут конфликтовать с обновлениями конфигурации. Перед установкой обновлений проверяйте совместимость в Конфигураторе.

    Создать новое расширение|Добавить обработчик ПриОткрытии|Создать регистр сведений|Написать процедуру записи в журнал|Протестировать на копии базы-->

    3. SQL-запросы к базе данных: прямой доступ к данным

    Для опытных пользователей и администраторов доступен метод прямого запроса к SQL-базе. Он подходит, если:

    • 🖥️ Вы используете клиент-серверный вариант 1С (PostgreSQL, MS SQL, IBM DB2).
    • 🔐 У вас есть права на выполнение запросов к базе.
    • 📊 Нужен разовый анализ без изменения конфигурации.

    Пример запроса для MS SQL Server, чтобы найти, кто открывал документы РеализацияТоваровУслуг за последний месяц:

    SELECT
    

    u.Descr AS Пользователь,

    d.Reference AS СсылкаНаДокумент,

    l.Moment AS ДатаОткрытия

    FROM

    _DocumentLog l

    JOIN

    _Users u ON l.UserID = u._ID_RRef

    JOIN

    _Document80 d ON l._ObjectID_RRef = d._ID_RRef

    WHERE

    d._Type = (SELECT _ID_RRef FROM _DocumentTypes WHERE Descr = 'РеализацияТоваровУслуг')

    AND l.Moment >= DATEADD(month, -1, GETDATE())

    ORDER BY

    l.Moment DESC

    Особенности метода:

    • 🔧 Требует знания структуры базы данных 1С (таблицы _DocumentLog, _Users и др.).
    • 🛡️ Не рекомендуется для регулярного использования — лучше автоматизировать через внешнюю обработку.
    • 📉 В файловом варианте 1С этот метод неприменим.
    Тип базы Таблица с логами Поле "Пользователь" Поле "Документ"
    MS SQL _DocumentLog UserID _ObjectID_RRef
    PostgreSQL v8log userref objref
    IBM DB2 V8LOG USERREF OBJREF
    💡

    Перед выполнением SQL-запросов к базе 1С сделайте резервную копию! Ошибка в запросе может нарушить целостность данных.

    4. Внешние обработки и отчёты: готовые решения

    Если нет времени или навыков для создания расширений, можно воспользоваться готовыми внешними обработками. Некоторые из них:

    • 📊 "Журнал просмотра документов" (доступен на Инфостарт и 1С-Сообщество) — показывает историю открытий с фильтрацией по пользователям и типам документов.
    • 🔍 "Аудит действий пользователей" — расширенный инструмент с возможностью экспорта в Excel.
    • 📈 "Мониторинг активности" — отслеживает не только открытия, но и время работы с документом.

Как подключить внешнюю обработку:

  1. Скачайте файл обработки (.epf или .erf).
  2. В 1С откройте Файл → Открыть → Выбрать файл обработки.
  3. Запустите обработку и настройте параметры (период, пользователи, типы документов).

Пример интерфейса обработки "Журнал просмотра документов":

Пример отчёта из обработки

Отчёт содержит колонки: "Дата/время", "Пользователь", "Тип документа", "Номер документа", "Длительность просмотра (сек)".

Дополнительно можно группировать данные по отделам или ролям пользователей.

⚠️ Внимание: Внешние обработки могут содержать вредоносный код. Скачивайте их только с проверенных источников (Инфостарт, 1С:ИТС, официальные партнёры 1С).

5. Логи операционной системы: альтернативный способ

В редких случаях, когда доступ к 1С ограничен, можно попробовать проанализировать логи операционной системы (для клиент-серверного варианта). Например, в Windows можно посмотреть:

  • 📁 Логи Event Viewer (Журналы Windows → Приложение) — искать события от 1Cv8 или ragent.
  • 🖥️ Логи SQL Server (если используется MS SQL) — в них могут оставаться следы подключений пользователей.
  • 🌐 Логи веб-сервера (для веб-клиента 1С) — в IIS или Apache.

Пример запроса к логам Windows Event Viewer через PowerShell:

Get-WinEvent -FilterHashtable @{

LogName = 'Application'

ProviderName = '1Cv8'

StartTime = (Get-Date).AddDays(-7)

} | Where-Object { $_.Message -like 'Открытие формы' } | Select-Object TimeCreated, Message

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

  • 🔍 Логи ОС не содержат детализации по конкретным документам — только факты подключения к базе.
  • 🕒 Требуется доступ к серверу, где развёрнута 1С.
  • 📉 В файловом варианте 1С этот метод бесполезен.
💡

Логи ОС — это последний резервный вариант. Они не заменят специализированные инструменты 1С, но могут помочь в отсутствие других данных.

6. Обходные пути для файлового варианта 1С

В файловом варианте 1С (когда база хранится в файле .1CD) возможности отслеживания сильно ограничены. Стандартный журнал регистрации здесь работает, но не фиксирует открытия документов. Решения:

  • 🔄 Переход на клиент-серверный вариант — радикальное, но надёжное решение. Позволяет использовать все методы, описанные выше.
  • 📁 Резервные копии: если документ был изменён, можно сравнить резервные копии базы (например, через 1С:Ревизор) и выяснить, кто внёс изменения.
  • 🔧 Внешние утилиты: например, "1С:Логгер" — программа для мониторинга действий в файловой базе (требует установки на все рабочие станции).

Для временного решения можно использовать триггеры на события документов:

  1. Создайте обработчик ПриЗаписи для документа, который будет записывать данные об открытии в отдельный регистр.
  2. Используйте механизм подписок на события (доступен в 1С 8.3.6+), чтобы не модифицировать конфигурацию.
⚠️ Внимание: В файловом варианте 1С нет гарантированного способа отследить только открытие документа без его изменения. Все обходные пути имеют ограничения.

Сравнение методов: какой выбрать

Метод Тип базы Требуемые права Сложность Ограничения
Журнал регистрации Любой Администратор Не всегда фиксирует открытия
Расширение конфигурации Любой Конфигуратор ⭐⭐⭐ Требует навыков программирования
SQL-запросы Клиент-сервер Доступ к СУБД ⭐⭐⭐⭐ Риск повреждения данных
Внешние обработки Любой Пользователь ⭐⭐ Зависимость от стороннего ПО
Логи ОС Клиент-сервер Администратор сервера ⭐⭐⭐⭐ Минимальная детализация

Выбор метода зависит от:

  • 📌 Версии 1С (8.2 или 8.3).
  • 📌 Типа базы (файловая или клиент-серверная).
  • 📌 Уровня доступа (есть ли права на конфигуратор или SQL).
  • 📌 Цели отслеживания (разовый анализ или постоянный мониторинг).
💡

Для большинства задач оптимально сочетание журнала регистрации (настроенного на максимум детализации) и внешней обработки для анализа данных.

FAQ: Частые вопросы по отслеживанию открытий документов

Можно ли узнать, кто открывал документ в 1С:Бухгалтерия 8.3, если журнал регистрации отключён?

Если журнал регистрации не вёл записи, то стандартными средствами — нет. Альтернативы:

  • Проверьте историю изменений документа (если он редактировался).
  • Используйте SQL-запрос к таблице _DocumentLog (для клиент-серверного варианта).
  • Настройте расширение для будущего отслеживания.
Как отследить открытие документа в мобильном приложении 1С?

Мобильное приложение 1С не ведёт отдельный журнал открытий. Решения:

  • Настройте синхронизацию с сервером и анализируйте логи на серверной части.
  • Используйте расширение, которое будет отправлять данные об открытиях на сервер.

Ограничение: в офлайн-режиме данные об открытиях не сохраняются.

Можно ли увидеть, кто открывал документ в 1С:УТ 11, если он не был изменён?

В 1С:Управление торговлей 11 стандартный журнал регистрации фиксирует открытия документов только если:

  • Уровень детализации установлен на "Максимум".
  • Документ открывался в карточке (не в списке).

Если эти условия не выполнены, используйте расширение или SQL-запрос.

Как экспортировать историю открытий документов в Excel?

Способы экспорта:

  1. Через внешнюю обработку (например, "Журнал просмотра документов" с функцией экспорта).
  2. Из журнала регистрации: выделите нужные строки → Ещё → Выгрузить в Excel.
  3. Через SQL-запрос: выполните запрос в MS SQL Management Studio и экспортируйте результаты.
Есть ли разница в отслеживании для 1С 8.2 и 8.3?

Да, ключевые различия:

Функционал 1С 8.2 1С 8.3
Расширения конфигурации ❌ Нет ✅ Да (с 8.3.10+)
Подписки на события ❌ Нет ✅ Да (с 8.3.6+)
Детализация журнала регистрации Ограничена Гибкая настройка

В 8.2 для отслеживания открытий чаще приходится использовать SQL-запросы или модификацию конфигурации.