Разработка и Конфигурация · 12 мин
Как добавить версионирование к новым объектам 1С
Как включить версионирование объектов в 1С для новых справочников и документов: настройка подсистемы БСП, хранение версий, права доступа и типичные ошибки.
Версионирование объектов в 1С позволяет автоматически сохранять снимки данных документов и справочников при каждом изменении. Если пользователь случайно перезаписал контрагента, удалил важные реквизиты или провёл документ с ошибкой, администратор может открыть историю версий, посмотреть, кто и когда что менял, и восстановить нужное состояние. Для типовых конфигураций на базе Библиотеки стандартных подсистем (БСП) механизм уже встроен — его нужно только включить и подключить новые объекты.
Задача возникает в двух типичных ситуациях: вы добавили в конфигурацию собственный справочник или документ и хотите, чтобы его изменения отслеживались так же, как типовые; либо версионирование вообще не настроено и требуется включить его с нуля. Оба сценария разбираются ниже с конкретными шагами в конфигураторе и в режиме предприятия.
Важно понимать ограничение механизма: версии хранятся в самой информационной базе, поэтому активное версионирование «толстых» документов с большими табличными частями заметно увеличивает объём базы. Подключать его стоит осознанно — только к тем объектам, где история изменений действительно нужна.
Что такое версионирование в 1С и как оно работает
Подсистема «Версионирование объектов» входит в состав БСП и присутствует в большинстве типовых решений: «Управление торговлей», «ERP», «Зарплата и управление персоналом», «Бухгалтерия предприятия» и других. Механизм срабатывает при записи объекта: перед фиксацией изменений система сериализует объект в XML-представление и сохраняет его в специальный регистр сведений «Версии объектов» вместе с номером версии, датой, автором изменения и комментарием.
Пользователь с достаточными правами видит в форме объекта кнопку «История изменений» (обычно в меню «Ещё»). Открыв её, можно сравнить любые две версии, посмотреть, какие реквизиты и строки табличных частей изменились, и при необходимости восстановить объект до выбранной версии. Восстановление выполняется обычной записью объекта, поэтому срабатывают все проверки заполнения.
Версии создаются только при изменении данных. Первичная запись нового объекта формирует первую версию, повторное открытие и закрытие формы без правок новую версию не создаёт. Это важно при проверке настройки: если вы просто перезаписали объект без изменений, новой строки в истории не появится — и это норма, а не ошибка.
Когда версионирование стоит включать, а когда нет
Не каждому объекту нужна история версий. Механизм оправдан для данных, где цена ошибки высока или где несколько пользователей редактируют одни и те же записи: карточки контрагентов и номенклатуры, договоры, банковские счета, ключевые документы вроде заказов и счетов. Там версионирование позволяет быстро ответить на вопрос «кто изменил реквизит» и откатить правку.
Не рекомендуется включать версионирование для высокооборотных документов, которые массово создаются и перепроводятся обменами и регламентными заданиями: каждая версия — это запись в базе, и на больших объёмах регистр версий растёт быстро. Также бессмысленно версионировать технические справочники, которые обновляются только загрузкой из внешних систем, — история будет дублировать журнал обмена.
Сравнение вариантов
Подходит для типовых конфигураций и доработанных решений на БСП. Настройка без программирования, готовый интерфейс истории. Ограничение: требует встроенной подсистемы.
Для самописных конфигураций без БСП. Полный контроль over составом хранимых данных, но нужна разработка и сопровождение кода.
Фиксирует факт изменения и автора, но не хранит содержимое объекта. Подходит, когда важен только аудит действий, а восстановление данных не требуется.
Шаг 1. Включите функциональную опцию версионирования
В типовой конфигурации сначала проверьте, что подсистема активна в режиме предприятия. Путь зависит от конфигурации, но обычно это раздел «Администрирование» → «Общие настройки» → флажок «Версионирование объектов» (в некоторых решениях — «История изменений»). Если флажок снят, команда «История изменений» не появится ни у одного объекта, даже если всё остальное настроено правильно.
Рядом с флажком обычно находится ссылка на настройку хранения версий: срок хранения и разрешение очистки. По умолчанию версии часто хранятся бессрочно, что на активно используемой базе со временем приводит к разрастанию регистра. Разумная практика — ограничить срок хранения (например, год) и включить регламентную очистку устаревших версий.
Если конфигурация самописная и подсистема БСП внедряется с нуля, потребуется перенести из библиотеки подсистему «Версионирование объектов» целиком: общие модули, регистр сведений «Версии объектов», определяемые типы, роли и подписки на события. Проще всего это сделать через сравнение и объединение с конфигурацией БСП, отметив только нужную подсистему и её зависимости.
Шаг 2. Добавьте новый объект в состав версионируемых
Ключевой шаг для собственного справочника или документа — включить его в определяемый тип «ВерсионируемыеДанные». Откройте конфигуратор, найдите в ветке «Определяемые типы» элемент «ВерсионируемыеДанные» и добавьте в его состав тип вашего объекта: например, «СправочникОбъект.Проекты» или «ДокументОбъект.ЗаявкаНаРемонт». Без этого подписка на событие записи не будет обрабатывать ваш объект, и версии создаваться не станут.
Обновите конфигурацию базы данных и проверьте права. Пользователи, которые должны видеть историю, нуждаются в роли «ПросмотрИсторииИзменений» (в разных версиях БСП название может отличаться, например «ПросмотрИсторииИзмененийДанных»), а для восстановления из версии — права на изменение самого объекта. Администратору дополнительно нужны права на настройку хранения версий.
- 1В режиме предприятия включите «Версионирование объектов» в настройках администрирования
- 2В конфигураторе добавьте тип объекта в определяемый тип «ВерсионируемыеДанные»
- 3Проверьте состав реквизитов через модуль ВерсионированиеОбъектовПереопределяемый при необходимости исключений
- 4Обновите конфигурацию базы данных
- 5Назначьте пользователям роль просмотра истории изменений
- 6Создайте тестовый объект, измените его и откройте «История изменений»
Шаг 3. Настройте состав хранимых данных
По умолчанию в версию попадают все реквизиты и табличные части объекта. Если в объекте есть служебные поля, которые меняются при каждой записи и не представляют ценности (технические счётчики, хеши, даты синхронизации), их стоит исключить — иначе история будет захламлена версиями без содержательных изменений. Для этого в общем модуле «ВерсионированиеОбъектовПереопределяемый» предусмотрена процедура настройки, где можно задать для типа объекта список игнорируемых реквизитов.
Для документов обратите внимание на движения по регистрам: стандартный механизм версионирует только данные самого документа, а не его проводки и записи регистров. Если нужна история именно движений, версионирование её не даст — используйте журнал регистрации, отчёты по регистрам или отдельную разработку. Это частое место неверных ожиданий.
Шаг 4. Проверьте работу механизма
После настройки выполните контрольную проверку в пользовательском режиме. Создайте новый элемент версионируемого справочника или тестовый документ, заполните реквизиты и запишите. Затем измените пару значимых полей и снова запишите. Откройте меню «Ещё» → «История изменений»: должно отобразиться минимум две версии с указанием времени и автора.
Далее проверьте сравнение версий: выделите две строки истории и выполните команду сравнения. Отчёт должен показать различия по изменённым реквизитам. Завершающий этап — восстановление: выберите первую версию и выполните «Перейти на версию». Объект должен открыться со старыми значениями, а после записи в истории появится новая версия, созданная в результате отката.
Как проверить результат
Команда видна и открывает список версий
Команды нет — объект не входит в определяемый тип или отключена функциональная опция
В истории появилась строка с автором и временем
Версия не создаётся — проверьте подписку на событие и права
Отчёт показывает различия по реквизитам
Отчёт пуст или ошибка — проверьте настройки исключённых реквизитов
Объект открывается со старыми значениями и записывается
Ошибка записи — проверьте обязательные реквизиты и права на изменение
Типичные ошибки и ограничения
Самая распространённая ошибка — забыть добавить тип объекта в определяемый тип «ВерсионируемыеДанные» и искать причину в правах или настройках предприятия. Вторая по частоте — проверять создание версии простой перезаписью без изменений: механизм корректно игнорирует такую запись, и версия не появляется, что ошибочно принимают за сбой.
Отдельный класс проблем — производительность и объём базы. Если включить версионирование на документах, которые обмены перепроводят тысячами в час, регистр версий вырастет очень быстро, а очистка может быть не настроена. Признаки проблемы: замедление записи документов, рост размера базы, длительное выполнение регламентных заданий. Решение — сузить список версионируемых объектов и настроить срок хранения версий.
Ещё одно ограничение касается обмена данными. При загрузке объекта через планы обмена версии могут создаваться на каждую синхронизацию, даже если данные фактически не менялись, — в зависимости от настроек подписок. В распределённых системах это стоит проверять отдельно и при необходимости отключать версионирование при загрузке через параметры сеанса или переопределяемые модули.
Восстановление данных из версии и границы безопасности
Восстановление из версии — безопасная операция в том смысле, что она не затирает историю: переход на старую версию сам создаёт новую запись в истории, поэтому «откатить откат» всегда возможно. Тем не менее для проведённых документов будьте осторожны: восстановление старой версии документа может потребовать перепроведения, а это влияет на остатки и взаиморасчёты, если документ уже учтён в последующих операциях.
Перед массовым восстановлением или изменением настроек версионирования на рабочей базе сделайте резервную копию или выгрузку в файл. Эксперименты с определяемыми типами и переопределяемыми модулями безопаснее проводить на копии базы: ошибка в составе типов может привести к тому, что подписка на событие перестанет отрабатывать для других объектов.
Часто задаваемые вопросы
Почему в форме объекта нет команды «История изменений»?
Чаще всего причина одна из трёх: отключена функциональная опция версионирования в настройках администрирования, тип объекта не включён в определяемый тип «ВерсионируемыеДанные» или у пользователя нет роли просмотра истории изменений. Проверяйте в этом порядке — от настройки предприятия к конфигуратору и правам.
Создаётся ли версия при первой записи нового объекта?
Да, первичная запись формирует первую версию. А вот повторная запись без фактических изменений данных новую версию не создаёт — механизм сравнивает содержимое и игнорирует пустые правки.
Можно ли версионировать только часть реквизитов объекта?
Нельзя хранить версию «частично», но можно исключить отдельные реквизиты из сравнения и хранения через переопределяемый модуль подсистемы. Это полезно для служебных полей, которые меняются при каждой записи и засоряют историю.
Хранятся ли в версии движения документа по регистрам?
Нет. Версия содержит только данные самого объекта: реквизиты шапки и табличные части. Проводки и записи регистров в версию не попадают, и восстановление документа из версии не откатывает его движения автоматически — документ нужно перепровести.
Как ограничить рост регистра версий?
В настройках версионирования задайте срок хранения версий и убедитесь, что регламентное задание очистки устаревших версий активно. Дополнительно пересмотрите список версионируемых объектов: исключите документы с массовой автоматической записью, где история не нужна.
Можно ли включить версионирование в самописной конфигурации без БСП?
Да, но потребуется разработка: собственный регистр для хранения снимков, подписка на событие «ПриЗаписи» нужных объектов и интерфейс просмотра и сравнения версий. Альтернатива — внедрить подсистему версионирования из БСП через сравнение и объединение конфигураций.
Что важно запомнить
Версионирование новых объектов 1С на базе БСП настраивается в три шага: включить функциональную опцию, добавить тип объекта в определяемый тип «ВерсионируемыеДанные» и выдать пользователям роль просмотра истории. Проверяйте результат реальным изменением объекта, настройте срок хранения версий и не включайте механизм для массовых документов обмена без необходимости.