3.9. Версионирование объектов
Подсистема «Версионирование объектов» предназначена для учета истории изменений объектов (кто, когда и что изменил). Также она позволяет получать отчеты по версиям или по конкретной версии объекта. Версионируемыми объектами могут быть справочники, документы, бизнес-процессы, планы видов характеристик и планы счетов конфигурации.
Настройка
Для использования подсистемы в конфигурации необходимо:
● если в конфигурации не используется подсистема «Настройки программы», то разместить в командном интерфейсе администратора системы регистр сведений НастройкиВерсионированияОбъектов и поместить константу ИспользоватьВерсионированиеОбъектов в основную форму редактирования констант конфигурации или в любую другую форму, предназначенную для администрирования системы;
● создать подписку ЗаписатьВерсиюДокумента на событие ПередЗаписью, обработчик ВерсионированиеОбъектовСобытия.ЗаписатьВерсиюДокумента.
Для размещения настроек подсистемы в произвольной форме следует:
● создать реквизит формы ХранитьИсториюИзменений типа Булево для управления флажком настроек, который следует разместить в элементах формы;
● в обработчике события формы ПриСозданииНаСервере вызвать процедуру ЗначениеФлажкаХранитьИсторию модуля ВерсионированиеОбъектов.
● в обработчике события формы ОбработкаОповещения вызвать процедуру ОбработкаОповещенияИзмененияФлажкаХранитьИсторию модуля ВерсионированиеОбъектовКлиент.
● при изменении реквизита формы ХранитьИсториюИзменений вызвать процедуру ПриИзмененииФлажкаХранитьИсторию модуля ВерсионированиеОбъектовКлиент.
Принять решение по поводу объектов метаданных конфигурации ссылочного типа, которые следует версионировать. Для каждого объекта метаданных, который определен для встраивания подсистемы версионирования объектов, необходимо:
● все версионируемые объекты перечислить в свойстве Тип определяемого типа ВерсионируемыеДанные (типы Ссылка – например, СправочникСсылка или ДокументСсылка);
● в свойстве Тип определяемого типа ВерсионируемыеДанныеОбъект перечислить все версионируемые объекты, кроме документов (типы Объект – например, СправочникОбъект или БизнесПроцессОбъект);
● перечислить все версионируемые документы в свойстве Источник подписок ЗаписатьВерсиюДокумента (типы ДокументОбъект);
● во всех формах (объектов и документов, для которых встраивается версионирование), в обработчике ПриСозданииНаСервере добавить фрагмент кода:
Копировать в буфер обмена
// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
● во всех модулях менеджера объектов (элементов), для которых встраивается версионирование, добавить фрагмент кода:
Копировать в буфер обмена
// СтандартныеПодсистемы.ВерсионированиеОбъектов
// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
// Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
● принять решение о необходимости скрытия из отчетов по версиям реквизитов и табличных частей, имеющих техническое назначение. Для скрытия реквизитов и табличных частей необходимо в процедуре ПриОпределенииНастроекВерсионированияОбъектов модуля менеджера объекта добавить следующий код:
Копировать в буфер обмена
Настройки.ПриПолученииСлужебныхРеквизитов = Истина;
и добавить в модуле менеджера процедуру ПриПолученииСлужебныхРеквизитов, в которой перечислить список скрываемых реквизитов и табличных частей:
Копировать в буфер обмена
// СтандартныеПодсистемы.ВерсионированиеОбъектов
// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
// Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
Настройки.ПриПолученииСлужебныхРеквизитов = Истина;
КонецПроцедуры
// Ограничивает видимость реквизитов объекта в отчете по версии.
//
// Параметры:
// Реквизиты - Массив - список имен реквизитов объекта.
Процедура ПриПолученииСлужебныхРеквизитов(Реквизиты) Экспорт
Реквизиты.Добавить("ИмяРеквизита"); // реквизит объекта
Реквизиты.Добавить("ИмяТабличнойЧасти.*"); // табличная часть объекта
КонецПроцедуры
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
Показать