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

Разработка и Конфигурация · 11 мин

Как добавить свой документ в версионирование в 1С

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

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

Чтобы свой документ начал версионироваться, недостаточно просто включить константу «Хранить историю изменений». Нужно подключить объект к подсистеме БСП через определяемый тип, при необходимости доработать форму документа и убедиться, что у пользователей есть права на просмотр истории. Ниже разобран порядок действий для конфигураций на базе БСП (УТ, ERP, БП, ЗУП и им подобные), а также вариант для самописных конфигураций без БСП.

Перед началом работы снимите копию информационной базы или выполняйте изменения на тестовой копии: правка определяемых типов и общих модулей при неаккуратном обновлении может привести к ошибкам обмена и отказу обработчиков обновления.

Что нужно проверить перед настройкой

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

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

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

Добавление документа в определяемый тип «ВерсионируемыеДанные»

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

В свойствах определяемого типа добавьте в состав ваш документ. Обычно тип составной и включает ссылки на документы и справочники. Добавьте именно ссылочный тип вашего документа — «ДокументСсылка.ИмяВашегоДокумента». Сохраните конфигурацию и обновите конфигурацию базы данных.

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

Включение версионирования для вида документов

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

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

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

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

Доработка формы документа и прав доступа

Команда «История изменений» обычно добавляется в форму документа автоматически через программный интерфейс БСП, если форма создана по стандартам библиотеки (с использованием стандартных обработчиков ПриСозданииНаСервере и подключаемых команд). Если вы создавали форму полностью вручную, кнопки истории может не быть, хотя версии при этом всё равно будут писаться.

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

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

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

Как проверить, что версионирование работает

Создайте тестовый документ вашего вида, заполните реквизиты и проведите его. Затем измените пару реквизитов, например комментарий и сумму, и снова запишите. Откройте форму документа и нажмите «История изменений» (обычно в меню «Ещё» или в командной панели).

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

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

Контрольные точки

Как проверить результат

Отчёт «История изменений» после правки документа
Норма

Появилась новая версия с автором и временем

Тревожный признак

Список пуст или версия одна

Сравнение двух версий
Норма

Изменённые реквизиты подсвечены

Тревожный признак

Расхождения не показываются при реальных изменениях

Кнопка истории в форме у обычного пользователя
Норма

Кнопка доступна, отчёт открывается

Тревожный признак

Кнопки нет или ошибка прав доступа

Если конфигурация без БСП: альтернативные варианты

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

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

Сравнение вариантов

Подсистема версионирования БСП

Полноценная история со сравнением версий; требует БСП и роста регистра «Версии объектов»

Собственная подписка ПриЗаписи

Гибко и легковесно, но сравнение версий и интерфейс нужно разрабатывать самостоятельно

Только журнал регистрации

Ничего разрабатывать не нужно, но виден лишь факт изменения без значений реквизитов

Типичные ошибки при подключении

Самая распространённая ошибка — добавить документ в определяемый тип, но забыть включить версионирование для вида документов в пользовательском режиме. Внешне всё выглядит настроенным, однако версии не пишутся, потому что способ версионирования для вида по умолчанию — «Не версионировать».

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

Типичные ошибки
01
Добавили тип, но не включили способ версионирования для вида — версии не создаются
02
Проверяют историю на старых документах — версии пишутся только после включения
03
Не настроили очистку — регистр версий растёт без ограничений
04
Дали права на историю всем — пользователи видят реквизиты, скрытые от них в самом документе

FAQ: частые вопросы

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

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

Видно ли в истории, кто отменил проведение?

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

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

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

Почему документ не появляется в списке настройки версионирования?

Почти всегда причина в том, что документ не добавлен в определяемый тип «ВерсионируемыеДанные» или конфигурация базы данных не обновлена после изменения. Проверьте состав типа и выполните обновление.

Замедлит ли версионирование проведение документов?

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

Как очистить старые версии?

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

Итог

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

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