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

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

Что такое версионирование в 1С и как его использовать

Что такое версионирование в 1С: история изменений объектов, хранилище конфигурации, сравнение версий. Как настроить и использовать на практике.

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

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

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

Два вида версионирования: данные и конфигурация

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

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

Как работает версионирование объектов данных

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

Просмотр истории обычно доступен из формы объекта: команда «История изменений» (или «Версии объекта») в меню «Ещё». В открывшемся списке видны номера версий, даты и авторы. Выбрав две версии, можно запустить сравнение — система покажет, какие реквизиты и строки табличных частей изменились. Восстановление версии создаёт новую запись объекта со старыми данными, а не удаляет промежуточную историю.

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

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

Хранилище конфигурации для разработчиков

Хранилище конфигурации — механизм платформы, предназначенный для коллективной разработки. Оно представляет собой отдельный файл (или серверное хранилище), в котором накапливаются версии конфигурации. Разработчик захватывает объект для изменения, редактирует его в своей базе, затем помещает обратно — при этом создаётся новая версия с его комментарием.

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

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

Сравнение и восстановление версий

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

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

Настройка хранения и влияние на базу

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

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

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

Чем версионирование отличается от журнала регистрации и резервных копий

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

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

Сравнение инструментов

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

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

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

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

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

Спасает всю базу при сбое. Неудобна для просмотра истории одного документа.

Хранилище конфигурации

Версионирует код и метаданные при разработке. К данным пользователей отношения не имеет.

Итог

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

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

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

Можно ли включить версионирование, если конфигурация не типовая?

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

Замедляет ли версионирование работу пользователей?

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

Кто видит историю изменений документа?

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

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

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

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

Хранилище — встроенный механизм платформы с захватом объектов и версиями конфигурации целиком. Git работает с текстовыми файлами и поддерживает ветки; для совместного использования с 1С применяется формат выгрузки конфигурации в файлы (EDT или выгрузка в XML). Для небольших команд достаточно хранилища, для сложных процессов разработки часто переходят на Git через 1C:EDT.

Как узнать, кто изменил конкретный реквизит в документе?

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