Почему в журнале регистрации 1С действия одного пользователя отображаются под именем другого?

Системный администратор IT и автоматизация бизнеса
← На главную

Нередко системные администраторы и специалисты 1С сталкиваются с критической аномалией аудита: в базу заходит пользователь Иванов, успешно проводит документы, в реквизитах созданных объектов правильно указывается Иванов, однако в журнале регистрации во всех строках фигурирует Петров либо значение <Неопределено>. При этом в событии аутентификации поле «Данные» содержит реальное имя («Имя: Иванов»), а в колонке «Пользователь» подставлен совершенно другой человек.

Разберем внутренние механизмы платформы, которые приводят к такому поведению, и детально проанализируем шаги по восстановлению корректной работы журнала.

Архитектурная причина сбоя сопоставления пользователей

В классическом последовательном текстовом формате журнала регистрации данные разделены на две сущности:

  1. Файл словаря описаний (1Cv8.lgf): хранит соответствие внутренних числовых идентификаторов платформы реальным объектам — именам пользователей, их UUID, компьютерам, приложениям и типам событий.
  2. Файлы событий (*.lgp): содержат хронологические записи, в которые вместо длинных строковых имен записываются только короткие числовые коды из словаря.

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

Анализ и ручное исправление словаря 1Cv8.lgf

Рассмотрим порядок детальной диагностики и восстановления словаря, если необходимо сохранить накопленную историю журнала регистрации.

  1. Остановка службы сервера: перед любыми манипуляциями с файлами журнала регистрации обязательно останавливаем службу сервера 1C:Enterprise (в файловом режиме — закрываем все клиентские сеансы).
  2. Поиск каталога журнала: переходим в директорию 1Cv8Log. Для клиент-серверной базы она расположена внутри каталога данных кластера srvinfo/reg_xxxx/<GUID_базы>/1Cv8Log/, а для файловой — непосредственно в папке информационной базы.
  3. Диагностика файла словаря: открываем файл 1Cv8.lgf в текстовом редакторе, поддерживающем работу с крупными файлами и кодировкой UTF-8. Ищем поврежденные строки в блоках описания пользователей. Корректная запись имеет строгую структуру: {13,80,152}, При наличии аппаратного сбоя внутри структуры могут появиться лишние пробелы, нулевые байты или разорванные конструкции вида: {13,80,152} ,
  4. Устранение повреждений: удаляем лишние пробельные и нечитаемые символы, восстанавливая штатный синтаксис файла. Если в словаре образовались дублирующиеся строки с одинаковыми кодами для разных пользователей, корректируем их числовые идентификаторы на уникальные неиспользуемые значения.
  5. Исправление записей в логах *.lgp: если ошибочные сеансы уже попали в файлы логов, с помощью внешних обработок анализа журнала сопоставляем дату, номер сеанса и имя из поля «Данные» события аутентификации, после чего пакетно заменяем неверный код пользователя на восстановленный правильный идентификатор.

Быстрое восстановление работоспособности журнала регистрации

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

  1. Перестроение индексных файлов: рядом с файлами событий *.lgp располагаются индексные файлы с расширением *.lgx. Останавливаем службу кластера 1С, удаляем все файлы *.lgx в каталоге 1Cv8Log и запускаем службу заново. Платформа выполнит фоновую переиндексацию журнала.
  2. Пересоздание каталога журнала: если словарь 1Cv8.lgf поврежден безвозвратно, останавливаем службу сервера и переименовываем папку 1Cv8Log в 1Cv8Log_backup. При старте следующего сеанса 1С создаст чистый каталог с новым, корректно инициализированным словарем описаний.
  3. Штатное сокращение журнала: открываем базу в режиме «Конфигуратор», переходим в пункт меню «Администрирование» — «Настройка журнала регистрации» и нажимаем кнопку «Сократить...». Указываем дату, до которой устаревшие или поврежденные записи будут удалены либо перемещены в архивный файл.

Программное обслуживание журнала регистрации средствами 1С

Для регулярного обслуживания и контроля объема журналов в типовых сценариях автоматизации применяются встроенные процедуры и функции платформы.

Рассмотрим пример очистки устаревших записей с помощью встроенного языка:


ГраницаОчистки = НачалоДня(ТекущаяДата() - 60 * 86400); // 60 дней назад
УдалитьУстаревшиеЗаписиЖурналаРегистрации(ГраницаОчистки);

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


ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ДатаОкончания", ГраницаОчистки);

ИмяФайлаАрхива = "C:\Backups\LogArchive_" + Формат(ТекущаяДата(), "ДФ=yyyyMMdd") + ".lgp";
СкопироватьЖурналРегистрации(ИмяФайлаАрхива, ПараметрыОтбора);

Рекомендации по предотвращению повреждения журнала

Проанализируем меры, исключающие возникновение подобных коллизий в дальнейшем:

  1. Переход на новый формат журнала (SQLite): начиная с платформы 8.3.5 доступен формат журнала на базе базы данных SQLite (единый файл 1Cv8.lgd). В нем транзакционная целостность защищена встроенным механизмом СУБД, что предотвращает рассинхронизацию словаря и записей даже при аварийном обесточивании сервера.
  2. Разделение логов по периодам: в настройках журнала регистрации Конфигуратора устанавливаем разделение файлов по дням или неделям. В таком случае повреждение одного фрагмента *.lgp не затрагивает другие временные интервалы.
  3. Вынесение каталога 1Cv8Log на надежный диск: с помощью символических ссылок операционной системы папку журнала регистрации рекомендуется выносить на отдельный отказоустойчивый накопитель, защищенный источником бесперебойного питания.
← На главную