Часто в работе с файловыми базами 1С:Предприятие 7.7 возникают ситуации, которые на первый взгляд кажутся мистическими. Одной из таких проблем является самопроизвольное изменение состояния документов: пользователь отменяет проведение, меняет дату, сохраняет документ, но на следующий день обнаруживает, что документ «откатился» к старому состоянию. Рассмотрим, почему это происходит и как найти источник изменений.
Когда вы видите, что данные изменились без записи в Журнал регистрации, первым делом стоит перестать искать «мистику» и начать проверку стороннего программного кода. В платформе 7.7 программные изменения объектов через методы Записать() или Провести() зачастую не фиксируются в журнале, если разработчик не предусмотрел принудительное логирование.
Основные причины таких сбоев:
Файл -> Открыть, они могут запускать скрипты, которые меняют логику работы базы данных без ведома администратора.Чтобы понять, кто или что «гадит» в базе, воспользуемся следующими рекомендациями:
Файл -> Открыть. Если обработка действительно необходима для работы, добавьте её в список Дополнительных возможностей, предварительно проанализировав исходный код на наличие методов записи.Журнал регистрации платформы 7.7 не всегда фиксирует программные действия, реализуйте запись событий самостоятельно. Используйте метод ДобавитьЗаписьЖурналаРегистрации() в модулях ключевых документов. Это позволит видеть в журнале, какой именно фрагмент кода инициировал изменение данных.Для создания системы контроля внешних отчетов и обработок, можно использовать справочник для хранения путей к ним. В модуле формы элемента справочника при открытии можно записывать событие в журнал. Реализуем простую логику:
// Пример логики в модуле формы справочника внешних обработок
Процедура ПриОткрытии()
ИмяФайла = Форма.Параметр;
ДобавитьЗаписьЖурналаРегистрации(1, 1, 0, Контекст, "Запуск внешней обработки: " + ИмяФайла);
ОткрытьФормуМодально(ИмяФайла);
КонецПроцедуры
Такой подход позволит вам всегда видеть в журнале, какая именно обработка была запущена пользователем, что значительно упрощает поиск источника нежелательных изменений.
Чтобы исключить подобные инциденты в будущем, придерживайтесь следующих правил:
Записать() для справочников или документов, не относящихся к основной задаче обработки.В завершение, помните, что большинство «необъяснимых» проблем в 1С 7.7 — это результат работы кода, который был написан давно и без должного учета последствий для текущей структуры базы данных. Регулярная проверка состава используемых внешних обработок и ограничение прав пользователей помогут вам сохранить целостность ваших данных.