Почему в журнале регистрации 1С 7.7 нет записи о созданном документе?

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

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

В рамках этой статьи мы подробно разберем, почему возникает подобное поведение системы, проанализируем внутренние механизмы работы платформы 1С 7.7 и рассмотрим основные технические причины, по которым записи в файле 1cv7.mlg могут отсутствовать.

1. Главная особенность платформы: Интерактивные действия vs Программный код

Основная и наиболее распространенная причина кроется в самой архитектуре платформы 1С 7.7. В отличие от современных версий платформы (таких как 1С 8.3), где практически любые манипуляции с объектной моделью логируются автоматически, в «семерке» действует строгое правило:

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

Если пользователь открывает форму документа, нажимает кнопку «ОК» или «Провести», платформа фиксирует это событие в ЖР. Однако, если документ создается, модифицируется или проводится программно, платформа делает это «молча».

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


Процедура СоздатьДокументПрограммно()
    НовыйДок = СоздатьОбъект("Документ.ПриходныйКассовый");
    НовыйДок.Новый();
    НовыйДок.Клиент = КонтрагентСсылка;
    НовыйДок.СуммаДокумента = 15000;
    НовыйДок.Записать();
    НовыйДок.Провести();
КонецПроцедуры

При выполнении этого кода документ успешно запишется и проведется в базе данных. Но в журнале регистрации не появится ни одной строки. Чтобы запись все-таки была сформирована, разработчик должен явно вызвать встроенную функцию ЗаписьЖурналаРегистрации(). Проанализируем, как должен выглядеть правильный код с логированием:


Процедура СоздатьДокументСЛогированием()
    НовыйДок = СоздатьОбъект("Документ.ПриходныйКассовый");
    НовыйДок.Новый();
    НовыйДок.Клиент = КонтрагентСсылка;
    НовыйДок.СуммаДокумента = 15000;
    НовыйДок.Записать();
    НовыйДок.Провести();
    
    // Явный вызов логирования для программных действий
    ЗаписьЖурналаРегистрации("Программное создание ПКО", "Документы", "Новый", НовыйДок.ТекущийДокумент(), 2);
КонецПроцедуры

Если разработчик внешней обработки (или кода автосоздания подчиненных документов при проведении ведущих) не предусмотрел вызов этой функции, никаких следов в ЖР не останется.

2. Намеренное отключение логирования в Конфигураторе

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

Выясним, как это происходит по шагам:

  1. Администратор запускает базу в режиме Конфигуратор.
  2. Переходит в меню настройки журнала регистрации и снимает флажки ведения логов для определенных видов документов или событий.
  3. Запускает систему в режиме «Предприятие», вносит необходимые изменения (задним числом, удаляет или создает документы).
  4. Возвращается в Конфигуратор и восстанавливает настройки ведения журнала.

В результате этих манипуляций документы будут созданы, но за указанный промежуток времени записи в файле ЖР зафиксированы не будут.

3. Ручная очистка и редактирование файла журнала регистрации (1cv7.mlg)

В платформе 1С 7.7 журнал регистрации не хранится в таблицах базы данных SQL или DBF. Он представляет собой обычный текстовый файл с именем 1cv7.mlg, который физически располагается в каталоге базы данных в папке SYSLOG.

Поскольку это простой текстовый файл, любой пользователь, имеющий непосредственный доступ к сетевой папке с базой данных на уровне операционной системы, может:

4. Прямая модификация данных на уровне СУБД (SQL или DBF)

Иногда операции с документами производятся вообще в обход платформы 1С 7.7. Опытные программисты или системные администраторы могут вносить изменения напрямую в СУБД:

Поскольку сама исполняемая среда 1С в этот момент не запущена, перехватить эти действия и записать их в файл лога физически невозможно.

5. Проблемы сетевого доступа и блокировок (файловый режим)

Рассмотрим ситуацию со стороны системного администрирования. При активной многопользовательской работе в файловом режиме (особенно при использовании сетевых ресурсов на базе Windows Server или Samba/Linux) файл 1cv7.mlg подвергается постоянным блокировкам.

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

6. Механизмы виртуализации Windows (VirtualStore)

При использовании современных операционных систем (Windows 10/11, Windows Server) без должной настройки прав доступа может сработать защитный механизм User Account Control (UAC).

Если каталог базы данных 1С 7.7 расположен в защищенных системных папках (например, внутри C:\Program Files\), операционная система перенаправляет все попытки записи в файлы логов в персональную виртуальную папку пользователя по пути:

%localappdata%\VirtualStore\Program Files\...

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

Резюме

Мы проанализировали основные причины, по которым документы могут существовать в базе 1С 7.7 без соответствующих записей в журнале регистрации. Чаще всего это связано с архитектурным поведением платформы — программной записью объектов без явного вызова функции логирования. Для исключения злоупотреблений рекомендуется жестко разграничивать права доступа к сетевой папке SYSLOG на уровне операционной системы, а также использовать специализированные внешние компоненты для ведения защищенных логов.

← На главную