К статье
Практический материал

Администрирование · 9 мин

Что такое версия данных в 1С и как работает версионирование объектов

Что такое версия данных в 1С, как работает механизм версионирования объектов, как включить историю изменений документов и справочников и восстановить нужную версию.

Версия данных в 1С — это сохранённый снимок состояния объекта (документа, элемента справочника) на определённый момент времени. Когда пользователь изменяет и записывает документ, система может зафиксировать, каким объект был до изменения: кто, когда и что именно поменял. Этот механизм называется версионированием объектов и входит в состав стандартных библиотек большинства типовых конфигураций.

Термин «версия» в 1С используется в нескольких разных значениях, и их важно различать. Версия конфигурации — это номер релиза программы (например, 3.1.28.45). Версия платформы — номер технологической платформы, на которой работает конфигурация. А версия данных (объекта) — это именно история изменений конкретного документа или элемента справочника. В этой статье речь идёт о третьем значении — версионировании данных.

Практическая ценность механизма проста: если бухгалтер случайно изменил контрагента в закрытом периоде, менеджер перезаписал цены в документе или кто-то удалил важные строки из заказа, версионирование позволяет увидеть, что было раньше, и восстановить прежнее состояние объекта без разворачивания резервной копии всей базы.

Как работает механизм версионирования объектов

В типовых конфигурациях на базе Библиотеки стандартных подсистем (БСП) версионирование реализовано следующим образом. При записи объекта система сравнивает новое состояние с предыдущим и, если объект изменился, сохраняет сериализованную копию старой версии в специальный служебный регистр сведений «Версии объектов». Каждая запись содержит номер версии, дату и время, автора изменения и сами данные объекта.

Хранятся версии в сжатом виде, поэтому нагрузка на базу умеренная, но при больших объёмах документооборота таблица версий может заметно вырасти. Это нужно учитывать при планировании размера базы и регламентных операций.

Важно понимать: версия сохраняется при записи объекта через штатные механизмы. Изменения, выполненные прямыми запросами к базе данных в обход платформы, в истории версий не отразятся — это одна из причин, почему прямая правка данных в СУБД категорически не рекомендуется.

Как включить версионирование в типовой конфигурации

В типовых решениях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP и других на базе БСП) настройка выполняется без программирования. Потребуются права администратора.

Порядок включения версионирования
  1. 1
    Откройте раздел «Администрирование» и найдите подраздел «Общие настройки» или «Поддержка и обслуживание» (название зависит от конфигурации).
  2. 2
    Найдите настройку «Версионирование объектов» и установите флаг «Хранить историю изменений».
  3. 3
    Перейдите в настройки версионирования и отметьте типы объектов, для которых нужно хранить историю: документы, справочники.
  4. 4
    Для каждого типа выберите режим: версионировать при записи, при проведении или не версионировать.
  5. 5
    Сохраните настройки и проверьте на тестовом документе: измените его, записав дважды, и откройте историю версий.

Режим «версионировать при проведении» подходит для документов: версия создаётся только при проведении, а не при каждом промежуточном сохранении, что сокращает объём хранимых данных. Для справочников обычно используют версионирование при записи, поскольку они не проводятся.

Как посмотреть историю изменений и восстановить версию

Чтобы увидеть историю изменений объекта, откройте сам документ или элемент справочника и в меню «Ещё» найдите команду «История изменений» или «Версии объекта». Откроется список всех сохранённых версий с указанием даты, времени и пользователя.

Выбрав версию, можно открыть её для просмотра — система покажет объект в том виде, в каком он был на тот момент. В большинстве конфигураций доступно сравнение двух версий: система подсветит, какие реквизиты и табличные части изменились. Это удобно при разборе спорных ситуаций, когда нужно понять, кто именно поменял сумму или реквизиты контрагента.

Восстановление версии выполняется командой «Перейти на версию» или аналогичной. Объект будет перезаписан данными выбранной версии, а текущее состояние при этом также сохранится в истории — откат обратим. Учтите: восстановление документа не отменяет его движения по регистрам автоматически во всех случаях — если документ был проведён, может потребоваться перепроведение.

Ограничения и особенности механизма

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

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

Третий момент — производительность. Сохранение версии добавляет небольшую задержку при записи объекта. На одиночных операциях она незаметна, но при массовых обработках и обменах данными может ощущаться. Для объектов, которые меняются пакетно через обмены, версионирование часто отключают или настраивают выборочно.

Чем версионирование отличается от журнала регистрации

Эти два механизма часто путают, но они решают разные задачи. Журнал регистрации фиксирует события: кто вошёл в систему, какой объект записал или провёл, какие ошибки возникли. Он отвечает на вопрос «кто и что сделал», но не хранит содержимое объекта.

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

Сравнение механизмов контроля изменений

Журнал регистрации

Фиксирует факт события: кто, когда, с каким объектом работал. Не хранит данные объекта и не позволяет восстановить его состояние.

Версионирование объектов

Хранит содержимое объекта на каждый момент изменения, позволяет сравнивать и восстанавливать версии. Требует настройки и занимает место в базе.

Резервное копирование

Защищает всю базу целиком от потери, но восстановление одного документа из копии трудоёмко. Не заменяет версионирование, а дополняет его.

Если версионирования нет: альтернативы

В старых или самописных конфигурациях без БСП штатного версионирования может не быть. В этом случае возможны варианты: внедрить подсистему версионирования из библиотеки стандартных подсистем (требует доработки конфигурации), разработать собственный механизм на основе подписок на события при записи, либо ограничиться анализом журнала регистрации в связке с регулярными выгрузками данных.

Самописный вариант оправдан, когда нужен нестандартный формат хранения — например, фиксация изменений только отдельных реквизитов или выгрузка истории во внешнее хранилище. Но в большинстве случаев дешевле и надёжнее подключить готовую подсистему БСП, чем поддерживать собственную разработку.

Типичные ошибки
01
Включение версионирования для всех объектов без разбора — база быстро разрастается, а полезной истории в ней меньшинство.
02
Уверенность, что версии заменяют бэкап — при повреждении базы история теряется вместе с данными.
03
Восстановление старой версии проведённого документа без анализа последствий — движения по регистрам и отчётность могут разойтись с фактическим состоянием учёта.
04
Отсутствие регламентной очистки старых версий — за годы работы служебная таблица может занять заметную часть базы.

Обслуживание: очистка устаревших версий

Хранить версии бесконечно не нужно. В конфигурациях на базе БСП предусмотрена регламентная очистка устаревших версий: можно настроить срок хранения, например, удалять версии старше года или двух лет. Настройка выполняется там же, где включается версионирование, либо через регламентные задания.

Перед массовой очисткой убедитесь, что срок хранения согласован с требованиями внутреннего контроля: для договоров и кадровых документов историю иногда требуется хранить дольше, чем для оперативных документов.

Итог

Что важно запомнить

Версия данных в 1С — это снимок объекта на момент изменения, который хранит механизм версионирования. Он позволяет видеть, кто и что изменил, сравнивать состояния и восстанавливать прежние версии. Включайте его выборочно для критичных объектов, помните об ограничениях и не подменяйте им резервное копирование.

Частые вопросы о версиях данных в 1С

Видно ли в истории версий, кто именно изменил документ?

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

Можно ли восстановить удалённый документ через версионирование?

Если документ был помечен на удаление, но не удалён физически, его можно просто снять с пометки. После физического удаления объекта его версии обычно также удаляются, поэтому полноценное восстановление возможно только из резервной копии.

Сильно ли версионирование замедляет работу базы?

При записи объекта добавляется небольшая операция сохранения версии, на одиночных документах она незаметна. Ощутимый эффект возможен при массовых обработках и обменах — для таких сценариев версионирование часто ограничивают режимом «при проведении» или отключают для отдельных типов объектов.

Чем версия данных отличается от версии конфигурации?

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

Нужно ли версионирование, если уже настроен журнал регистрации?

Да, если требуется не только знать, кто изменил объект, но и видеть, что именно изменилось, и иметь возможность откатить изменение. Журнал регистрации хранит только факт события без содержимого объекта.