В современной разработке на платформе 1С:Предприятие 8.3 специалисты часто сталкиваются с дилеммой: использовать проверенный годами механизм версионирования из Библиотеки стандартных подсистем (БСП) или перейти на встроенную платформенную «Историю данных». В рамках этой статьи мы подробно разберем технические нюансы, сравним производительность обоих решений и выясним, в каких ситуациях стоит отдать предпочтение конкретному механизму.
Разберем, как именно сохраняются изменения в обоих случаях. Понимание этого процесса критически важно для администраторов баз данных и разработчиков, отвечающих за производительность системы.
Механизм БСП базируется на использовании прикладных объектов метаданных. Все версии хранятся в регистре сведений ВерсииОбъектов. Данные сохраняются в виде сжатых XML-строк (сериализация FastInfoSet). Это приводит к следующим особенностям:
ВерсииОбъектов начинает расти в геометрической прогрессии.Теперь проанализируем платформенную «Историю данных» (Data History), которая появилась в версии 8.3.11. Этот механизм работает на уровне СУБД через скрытые системные таблицы.
Несмотря на техническое превосходство платформенного механизма, рассмотрим ситуации, когда БСП остается приоритетным выбором:
Работа в типовых конфигурациях (ERP, УТ, КА, БП). В типовых решениях механизм версионирования тесно интегрирован с пользовательским интерфейсом. Пользователи привыкли к стандартной кнопке «История изменений» и удобным формам сравнения версий. Переход на чисто платформенный механизм в таких конфигурациях потребует серьезной переработки кода и может нарушить логику будущих обновлений.
Гибкость настройки. БСП позволяет программно управлять процессом создания версии. Например, мы можем прописать условие, чтобы версия не создавалась, если изменились только служебные реквизиты, не имеющие значения для бизнес-логики. В платформенном механизме такая фильтрация ограничена настройками метаданных.
Вынос данных во внешние хранилища. В последних версиях БСП (начиная с 3.1.7) появилась возможность перевода хранения версий из основной базы во внешние тома или даже интеграция с платформенным механизмом в качестве «бэкенда».
Проанализируем ситуацию, когда мы разрабатываем конфигурацию «с нуля» или имеем дело с сильно доработанной системой, где производительность критична.
Выясним причину, почему программисты все чаще смотрят в сторону платформы:
ИсторияДанных.ПерейтиНаВерсию(). Это позволяет не просто посмотреть, «кто и что изменил», но и одной командой вернуть объект к предыдущему состоянию, включая все его табличные части.Рассмотрим самый современный и правильный подход, который предлагает фирма «1С». Вместо того чтобы выбирать между двумя крайностями, мы можем использовать их совместно. В актуальных версиях БСП реализована возможность использовать платформенную «Историю данных» в качестве хранилища, сохраняя при этом привычный интерфейс БСП.
Чтобы настроить такой режим, выполним следующие действия:
ИсторияДанных в значение «Использовать».В этом случае платформа будет отвечать за быстрый сбор дельт и экономичное хранение, а БСП предоставит пользователю удобный отчет со сравнением полей в человекочитаемом виде.
Подводя итог нашему анализу, сформулируем практические рекомендации:
Для типовых конфигураций: Не пытайтесь полностью отказаться от БСП. Если база сильно растет, лучше проверьте настройки очистки версий (регламентное задание ОчисткаУстаревшихВерсийОбъектов) или переведите версионирование в режим использования платформенного механизма через настройки БСП.
Для самописных баз на БСП: Если у вас уже настроено версионирование БСП и оно не вызывает проблем с производительностью, оставьте всё как есть. Если же база «тормозит» из-за разросшегося регистра ВерсииОбъектов, рассмотрите переход на платформенную историю.
Для новых разработок без БСП: Однозначно выбирайте платформенную «Историю данных». Это проще в настройке, быстрее в работе и предоставляет больше возможностей для автоматического восстановления данных.
Помните, что при использовании платформенного механизма важно следить за реструктуризацией данных. При некоторых значительных изменениях структуры объекта в конфигураторе история версий может быть очищена платформой автоматически, поэтому всегда делайте бэкапы перед обновлением метаданных.