Как просмотреть архив журнала регистрации в 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

Способ 1. Штатный просмотр через интерфейс 1С:Предприятия и Монитор

Платформа 1С 7.7 содержит встроенный механизм прозрачной работы с упакованными архивами логов. Проанализируем, как устроен этот процесс:

  1. Откроем режим 1С:Предприятие или утилиту Монитор пользователей (пункт меню Администрирование — Монитор пользователей в Конфигураторе).
  2. Перейдем к журналу регистрации через меню Сервис — Журнал регистрации.
  3. В диалоге фильтрации и настройки интервала укажем период, соответствующий датам заархивированных событий.
  4. Нажмем кнопку подтверждения выбора. Платформа автоматически обнаружит подходящий ZIP-архив в каталоге SYSLOG, распакует его содержимое во временную папку и выведет список событий на экран.

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

Причины зависаний штатного механизма

При попытке открыть архив значительного размера (более 50–100 МБ в распакованном виде) штатный интерфейс 1С 7.7 часто зависает на длительное время или аварийно закрывается. Выясним причину такого поведения:

  1. Однопоточная модель: распаковка и построчный парсинг текстового файла 1cv7.mlg выполняются в основном потоке интерфейса, полностью блокируя отклик программы.
  2. Ограничения по памяти: 32-битный процесс 1С 7.7 быстро исчерпывает адресное пространство при загрузке огромного массива строк в стандартную таблицу.
  3. Сбои разметки: некорректно завершенные строки лога при аварийном падении сеансов могут вызывать ошибки парсера 1С.

Способ 2. Использование внешних компонент (1CPP и FormEx)

Для ускоренного чтения объемных архивов без зависания интерфейса применяется класс ПоставщикДанныхЖурналРегистрации из библиотеки 1CPP в связке с компонентой FormEx. Этот подход реализует виртуальное табличное поле, считывающее данные порциями.

Разберем по шагам, как запустить и настроить готовую обработку для чтения лога:

  1. Убедимся, что к базе подключены внешние компоненты 1cpp.dll и formex.dll. Загрузка обычно выполняется в процедуре ПриНачалеРаботыСистемы глобального модуля:

Если ЗагрузитьВнешнююКомпоненту("1cpp.dll") = 0 Тогда
    Предупреждение("Не удалось загрузить 1cpp.dll");
КонецЕсли;

Если ЗагрузитьВнешнююКомпоненту("formex.dll") = 0 Тогда
    Предупреждение("Не удалось загрузить formex.dll");
КонецЕсли;
  1. Используем внешнюю обработку на базе тестового примера (например, ТестТабличногоПоляПоставщикДанныхЛог.ert).
  2. Устранение типовых ошибок: если при открытии формы возникает падение или ошибка отсутствия объекта СервисРасшФормы/методов привязок, необходимо отключить код управления размерами элементов. В модуле формы закомментируем или удалим вызовы методов привязки в процедуре ПриИзмененииРазмераОкна() и событиях FormEx:

Процедура ПриИзмененииРазмераОкна(ТипСобытия, Ширина, Высота)
    // Закомментируем вызовы нестандартных классов привязок при их отсутствии
    // КлассПривязок.ИзменитьРазмер(Ширина, Высота);
КонецПроцедуры

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

Способ 3. Прямая работа с файлом 1cv7.mlg и построчный разбор

Распаковав ZIP-архив стандартным архиватором, мы получаем файл 1cv7.mlg, представляющий собой текстовый документ в кодировке Windows-1251 (ANSI) с разделителем ; (точка с запятой).

Строка файла имеет следующий формат:

ГГГГММДД;ЧЧ:ММ:СС;Пользователь;Режим;Категория;Событие;Код;Описание;Идентификатор;Представление

Рассмотрим, как потоково прочитать и отфильтровать распакованный файл встроенными средствами 1С с помощью объекта Текст, исключая нехватку оперативной памяти:


Процедура ПрочитатьАрхивныйЛог(ПутьКФайлу)
    ТекстЛога = СоздатьОбъект("Текст");
    ТекстЛога.Открыть(ПутьКФайлу);
    
    КоличествоСтрокФайла = ТекстЛога.КоличествоСтрок();
    Для НомерСтроки = 1 По КоличествоСтрокФайла Цикл
        Стр = ТекстЛога.ПолучитьСтроку(НомерСтроки);
        
        // Построчная обработка и фильтрация без загрузки всего файла в память
        Если Найти(Стр, "Document.РасходнаяНакладная") > 0 Тогда
            Сообщить(Стр);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Также распакованный 1cv7.mlg можно открыть в специализированных текстовых редакторах для больших файлов (EmEditor, Notepad++) либо загрузить в СУБД (MS SQL Server, PostgreSQL, SQLite) как CSV-файл для выполнения быстрых SQL-запросов и построения отчетов аудита.

← На главную