Как правильно включить версионирование для своего документа в 1С:Бухгалтерия предприятия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

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

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

Разберем архитектуру версионирования в БСП

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

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

Рассмотрим пошагово, что необходимо сделать, чтобы всё заработало корректно.

Шаг 1. Настройка определяемых типов

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

Шаг 2. Выбор и настройка подписки на события

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

Для корректной работы в БП 3.0 нам необходимо найти специализированную подписку. Разберем, как это сделать:

  1. Откройте в конфигураторе ветку Общие -> Подписки на события.
  2. Найдите подписку с именем ЗаписатьВерсиюДокументаБП (или аналогичную, если вы работаете в другой конфигурации, например, ЗаписатьВерсиюОбъекта в УТ или ERP).
  3. Проверьте свойство Источник. Вам нужно убедиться, что ваш тип ДокументОбъект.МойНовыйДокумент включен в этот список (обычно через вышеупомянутый определяемый тип ВерсионируемыеДанныеОбъект).
  4. Убедитесь, что обработчик этой подписки (процедура в общем модуле) действительно вызывается.

Пример кода типичного обработчика, который вызывается подпиской:


Процедура ЗаписатьВерсиюДокумента(Источник, Отказ) Экспорт
    Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    ВерсионированиеОбъектов.ЗаписатьВерсиюОбъекта(Источник);
КонецПроцедуры

Шаг 3. Настройка функциональных опций и интерфейса

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

  1. Зайдите в режим 1С:Предприятие под полными правами.
  2. Перейдите в раздел Администрирование — Общие настройки — История изменений.
  3. Убедитесь, что флаг «Хранить историю изменений» установлен.
  4. Нажмите на ссылку «Настройки хранения». Найдите в списке ваш документ.
  5. Установите режим версионирования. Рассмотрим варианты:
    • «Версионировать при записи» — оптимально для большинства задач.
    • «Версионировать при проведении» — если важно отслеживать только те изменения, которые повлияли на учет.

Важно: Если в настройках стоит «Никогда», то записи в регистре появляться не будут, несмотря на все манипуляции в конфигураторе.

Шаг 4. Проверка общей команды

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

Типичные ошибки и нюансы

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

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

2. Права доступа. Если программист видит историю, а обычный пользователь — нет (или список пуст), проверьте наличие роли ЧтениеВерсийОбъектов у пользователя. Без прав на регистр ВерсииОбъектов список будет выглядеть пустым.

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

Резюме

Для успешного включения версионирования для своего документа выполните следующие действия:

  1. Добавьте ссылку документа в ВерсионируемыеДанные.
  2. Добавьте объект документа в ВерсионируемыеДанныеОбъект.
  3. Проверьте, что в подписке ЗаписатьВерсиюДокументаБП (для БП 3.0) ваш объект присутствует в источниках.
  4. Включите версионирование для конкретного документа в пользовательском интерфейсе (Администрирование).

Соблюдение этих шагов гарантирует корректную работу истории изменений и позволит избежать пустых списков в интерфейсе программы.

← На главную