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

20.11.23

Разработка - БСП (Библиотека стандартных подсистем)

Много материалов и видео в сети о том, как подключить объект, которого нет в списке настроек, к системе версионирования БСП. Суть сводится к изменению определяемого типа, на который все завязано. Но это предполагает изменение конфигурации. Недавно встала задача подключить объект, которого нет в определяемом типе без снятия замков. Пришлось изучить вопрос глубже. Здесь пояснения и краткая инструкция с картинками. Как подключиться, используя только расширение.

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

Решение в сети предлагается. Нужно изменить определяемый тип "ВерсионируемыеДанные". На него все завязано. Вносишь туда тип объекта и он сразу становится доступен в списке настройки. И версии вроде сохраняются. И просмотр должен быть. Если работает. то прекрасно сделано. Все завязали на один тип. Супер.

Однако клиент сказал, что конфигурация на замке и снимать его не планируется.

Я сразу хотел ответить. что не получится, т.к. определяемый тип в расширении переопределить невозможно.

Однако, клиент всегда прав. Ну что же, теоретически почти все возможно, вопрос только в цене. Раньше я не вникал в работу механизма версионирования. Зачем? Пользовался и все. Но для выяснения цены вопроса пришлось изучить предмет глубже.

 

Через пару часов медитации выяснилось следующее: 

1. Версии хранятся в регистре "ВерсииОбъектов", измерение которого "Объект" содержит типы ДокументСсылка, СправочникСсылка и т.д. Уже хорошо. Значит при проблемах с расширением данные никуда не денутся и расширять ничего не надо. 

2. Настройки хранятся в регистре "НастройкиВерсионированияОбъектов" . Ситуация аналогичная измерение включает типы "СправочникСсылка.ИдентификаторыОбъектовРасширений" и "СправочникСсылка.ИдентификаторыОбъектовМетаданных". Ничего в данных трогать не надо. Но над формой регистра придется поработать, чтобы проявить нужный объект в списке настройки.

3. В интерфейсе просмотр зависит от общей команды "ИсторияИзменений". В ней определены тип "ВерсионируемыеДанные". Тут потребуется своя команда в расширении.

4. Собственно действие записи версии осуществляется подписками "ЗаписатьВерсиюОбъекта" и "ЗаписатьВерсиюДокумента". Для первой источники включены в определяемый тип "ВерсионируемыеДанныеОбъект". Для второй явно заданы. Что немного странно. Тут тоже потребуются объекты и действия в расширении.

 

И, собственно, все. Типы, команда, подписки, форма. Как потом выяснилось, еще и общий модуль. Как то так.

Переходим к описанию необходимых манипуляций в расширении. Предположим, для определенности, что для практических целей нас интересуют только документы и справочники. Если Вас интересуют только документы или только справочники, то ненужные пункты нужно пропустить.


Манипуляции следующие:

1. При необходимости добавить в расширение новые объекты (документы или справочники). Если это объекты расширения, то пропустить.

2. Добавить в расширение новый определяемый тип "ВерсионируемыеДанныеРасширенный" и Включить в него типы ссылок (внимание - ссылок) новых документов и справочников.

 

 

3. Добавить в расширение общую команду "ИсторияИзмененийРасширенная" копированием из общей команды конфигурации "ИсторияИзменений" и установить тип параметра команды "ОпределяемыйТип.ВерсионируемыеДанныеРасширенный".

 

 

4. Добавить в расширение общий модуль "ВерсионированиеОбъектовСобытия" и добавить в него следующие процедуры:
Процедура ЗаписатьВерсиюОбъектаРасширенная(Источник, Отказ) Экспорт
    ЗаписатьВерсиюОбъекта(Источник, Отказ);
КонецПроцедуры
Процедура ЗаписатьВерсиюДокументаРасширенная(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    ЗаписатьВерсиюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения);
КонецПроцедуры

 

 

5. Добавить в расширение подписку "ЗаписатьВерсиюОбъектаДокумент", установить в источник типы новых документов объектов (внимание - объектов), установить событие "ПередЗаписью" и выбрать обработчик "ВерсионированиеОбъектовСобытия.ЗаписатьВерсиюДокументаРасширенная".

 

 

6. Добавить в расширение подписку "ЗаписатьВерсиюОбъектаСправочник", установить в источник типы новых справочников объектов (внимание - объектов), установить событие "ПередЗаписью" и выбрать обработчик "ВерсионированиеОбъектовСобытия.ЗаписатьВерсиюОбъектаРасширенная".

7. Добавить в расширение конфигурации форму "НастройкиХраненияИстории" регистра сведений "НастройкиВерсионированияОбъектов".

8. Добавить в модуль формы расширения копию процедуры "ЗаполнитьТипыОбъектовВДеревеЗначений" модуля формы из конфигурации с именем "ЗаполнитьТипыОбъектовВДеревеЗначенийРасширенныйТип".

9. Добавить аннотацию к процедуре: "&ИзменениеИКонтроль("ЗаполнитьТипыОбъектовВДеревеЗначений")".

10. Добавить в процедуре вставку после строки:
МассивТипов = Метаданные.ОбщиеКоманды.ИсторияИзменений.ТипПараметраКоманды.Типы();
#Вставка
МассивТиповРасширения = Метаданные.ОбщиеКоманды.ИсторияИзмененийРасширенная.ТипПараметраКоманды.Типы();
Для Каждого ЭлементМассива Из МассивТиповРасширения Цикл
    МассивТипов.Добавить(ЭлементМассива);
КонецЦикла;
#КонецВставки

 

 

11. Сохранить конфигурацию и расширение. Обновить базу данных. 

После этих манипуляций новые объекты должны появиться в списке настроек и можно будет задать параметры сохранения версий. При установке параметров должны создаваться версии. Просмотр и откат версий должен быть доступен. Я лично проделал это на КА 2.5.7.402 и УНФ 3.0.5.199. Тестировал все на платформе 8.3.23.1912. Полагаю, что это должно работать на всех конфигурациях, основанных на БСП.

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

1. При необходимости добавить в расширение новые объекты (документы или справочники). Если это объекты расширения, то пропустить.

2. Включить ссылку на объект в определяемый тип расширения "ВерсионируемыеДанныеРасширенный".

3. Добавить в источник команды  "ЗаписатьВерсиюОбъектаДокумент" типы новых документов (если они есть).

4. Добавить в источник команды  "ЗаписатьВерсиюОбъектаСправочник" типы новых справочников (если они есть).

И все. Далее - настраиваем в списке настроек и работаем.

Еще раз, надеюсь, что кому то пригодится или откроет что то новое. И что я не изобрел велосипед и никого не ввел в заблуждение. У меня работает.

Удачи.

подключение история изменений версии версионирование типовая конфигурация практика БСП программирование механизмы инструмент

См. также

БСП. Добавляем отчет в меню Отчеты

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим новый отчет в меню нового документа средствами БСП.

02.04.2024    3305    John_d    10    

90

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1825    dimanich70    8    

14

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    820    FilippovRI    0    

15

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

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2702    YA_418728146    11    

45

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

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

19.01.2024    6797    PROSTO-1C    5    

46

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

БСП (Библиотека стандартных подсистем) Мероприятия Бесплатно (free)

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    3926    0    Infostart    0    

21
Оставьте свое сообщение