← На главную
При разработке нетиповых и самописных конфигураций на платформе 1С:Предприятие 8.3 часто возникает задача отслеживания истории изменений документов. Фиксация правок позволяет не только оперативно посмотреть, как выглядел документ на определенном этапе согласования или проведения, но и помогает выявлять непреднамеренные ошибки пользователей или злоупотребления. Рассмотрим подробно основные технические варианты реализации версионирования объектов и проанализируем плюсы и минусы каждого подхода.
Вариант 1. Использование штатного платформенного механизма «История данных»
Начиная с версии платформы 1С:Предприятие 8.3.11, разработчикам доступен встроенный механизм отслеживания истории изменений объектов базы данных. Это наиболее современный и наименее нагружающий систему вариант.
Рассмотрим ключевые особенности и архитектуру платформенного версионирования:
- Асинхронная запись: Фиксация изменений происходит через внутреннюю очередь платформы в фоновом режиме. Это означает, что транзакция проведения и записи документа пользователем не блокируется, и быстродействие работы не снижается.
- Требования к конфигурации: Для полноценной работы механизма режим совместимости конфигурации в свойствах корня метаданных должен быть установлен не ниже
8.3.11 (а для работы с рядом расширенных типов объектов — не ниже 8.3.13).
- Хранение в виде дельт: Платформа сохраняет данные в служебных таблицах СУБД в виде разностей (дельта-изменений). Это существенно экономит дисковое пространство по сравнению со сжатыми полными снимками XML.
- Программный интерфейс: Чтение и анализ истории изменений выполняется через специальный объект платформы
ИсторияДанных.
Обратите внимание, что платформенный механизм не содержит автоматического регламента для очистки старых версий «из коробки». Чтобы база данных не разрасталась с течением времени, очистку устаревших версий необходимо реализовывать программно через регламентные задания.
Вариант 2. Внедрение подсистемы версионирования из БСП
Второй распространенный способ — внедрение подсистемы «Версионирование объектов» из Библиотеки Стандартных Подсистем (БСП). Данное решение проверено временем и широко используется в типовых конфигурациях (например, 1С:ERP, 1С:Управление торговлей, 1С:Бухгалтерия).
Разберем особенности функционирования версионирования БСП:
- Синхронная фиксация снимков: Подсистема БСП сохраняет полную копию документа в момент его записи в виде сжатой XML-строки (двоичных данных) в регистр сведений
ВерсииОбъектов.
- Настройка условий записи: Чтобы избежать взрывного роста объема базы данных при массовом перепроведении, не рекомендуется использовать режим «При любой записи». Оптимально настроить варианты «При проведении» или «При изменении» (что исключает повторное создание одинаковых версий при перепроведении без фактических правок).
- Управление объемом данных: При использовании БСП обязательно необходимо настроить регламентное задание по очистке версий, ограничив срок хранения (например, хранить только версии за последние 30–90 дней или только N последних версий).
Вариант 3. Собственная реализация регистра сведений (Дельта-логирование)
Если требуется легкий и полностью контролируемый механизм фиксации правок без включения подсистем БСП, можно реализовать собственный регистр сведений для аудита изменений.
Проанализируем алгоритм работы такого решения:
В конфигурации создается регистр сведений. В подписке на событие ПередЗаписью или ПриЗаписи документа выполняется сравнение текущих реквизитов объекта в памяти со значениями, сохраненными в базе данных.
В регистр записываются только реально измененные реквизиты со следующими полями:
- Ссылка: Ссылка на редактируемый документ.
- Дата: Дата и точное время внесения изменений.
- Пользователь: Пользователь 1С, выполнивший корректировку (
ИмяПользователя()).
- ИмяРеквизита: Название измененного реквизита или табличной части.
- СтароеЗначение: Состояние реквизита до редактирования.
- НовоеЗначение: Состояние реквизита после редактирования.
Такой подход занимает значительно меньше места на диске и позволяет легко строить отчеты по конкретным изменениям критически важных полей (например, сумма, контрагент, банковские реквизиты).
Комплексные меры защиты и организационный контроль
Программно-аппаратное версионирование — важный инструмент, однако для полноценного предотвращения злоупотреблений и ошибок его необходимо сочетать с организационными и техническими ограничениями:
- Установка дат запрета изменения: Регулярно закрывайте редактирование документов прошлых периодов для пользователей.
- Использование электронной подписи (ЭП): Подписание утвержденного документа ЭП гарантирует, что любое последующее изменение сделает подпись недействительной.
- Система оперативных уведомлений: Настройте отправку мгновенных алертов ответственным лицам или службе безопасности при изменении ключевых полей в уже проведенных документах.