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

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. Добавить в источник команды  "ЗаписатьВерсиюОбъектаСправочник" типы новых справочников (если они есть).

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

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

Удачи.

Вступайте в нашу телеграмм-группу Инфостарт

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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)

Наше расширение 1С Госключ обеспечивает интеграцию любой конфигурации 1С на базе БСП с мобильным приложением «Госключ», позволяя сотрудникам подписывать кадровые документы (КЭДО) и документы материальной ответственности (МОЛ, ПБ) усиленной электронной подписью прямо со смартфона. Решение автоматизирует формирование и отправку документов на подпись, отслеживает статусы подписания и хранит подписанные файлы непосредственно в базе 1С

25000 руб.

06.03.2026    1065    1    0    

3

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

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

3254 руб.

21.11.2024    13428    48    26    

55

БСП (Библиотека стандартных подсистем) Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Каждый раз, когда разработчик 1С пишет очередной цикл для свертки массива или использует конструкцию Попытка / Исключение для проверки наличия реквизита, где-то грустит один архитектор фирмы «1С». Мы привыкли изобретать велосипеды там, где в Библиотеке стандартных подсистем (БСП) уже давно лежат готовые, оптимизированные и протестированные на тысячах баз решения. Ниже — практическая подборка из 8 методов актуальных релизов БСП (3.X), которые сделают ваш код чище, быстрее и профессиональнее. Разберем на примерах «Было / Стало».

04.06.2026    7982    Kaliostr0    16    

35

БСП (Библиотека стандартных подсистем) Универсальные функции Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Когда появляется необходимость сделать подключаемую внешнюю обработку, будь это печатная форма или отчет - нам всегда приходится прописывать сведения о внешней обработке для подключения их в соответствующий справочник. И это занимает некоторое время, что не очень удобно. Как для себя, так и для вас - я подготовил ряд примеров использования этой функции, можете выбрать один из них, чтобы в дальнейшем использовать их в шаблонах текста. Комментарии по дополнению и исправлению статьи - приветствуются.

06.02.2026    13051    manul1c    6    

25

Рефакторинг и качество кода БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

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

23.09.2025    14073    AlexeyPROSTO_1C    1    

18

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

Уже заезженная тема с выводом в Word макетов при помощи БСП, но некоторые коллеги все равно спрашивают. Поэтому размещаю тут материал, как это сделать за три простых шага. Решение, которым я успешно пользуюсь в случаях, когда не нужна универсальность подключаемых внешних печатных форм.

16.09.2025    6873    _seerco2002    0    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 14.01.24 19:03
Сообщение было скрыто модератором.
...
2. ChekarV 11 08.05.24 14:58 Сейчас в теме
Спасибо за хорошую статью. Но как побороли ошибку при сохранении настроек про то что не найдет ИдентификаторыОбъектовМетаданных для нового типа документа в расширении? Что то такое не вылетало?
Прикрепленные файлы:
5. mrAxe 26.06.24 17:14 Сейчас в теме
(2) Проблема у меня та же возникла.
Кроется она в скопированном модуле ЗаполнитьТипыОбъектовВДеревеЗначений
в строке НоваяСтрокаТаблицы.ТипОбъекта = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Тип);
Должен вернуться тип ИдентификаторыОбъектовРасширений, но этот тип не поддерживается, поэтому возвращается строка, и хоть визуально мы видим что все ок, строка сама по себе дальше вызывает ошибку. Решение нашел здесь.
https://infostart.ru/1c/tools/1665934/
Доработав то что здесь имеем лишь второй частью 7го пункта и 8ым.
tgr123; arabesca; +2 Ответить
10. Touch_Of_Soul 30 26.10.25 19:20 Сейчас в теме
(5) А как Вы решили проблему нет отображение карандашика для просмотра изменений.
3. user1374747 287 24.05.24 10:49 Сейчас в теме
Нет. Не вылетало. Не сталкивался. Не могу конкретно рекомендовать.
По тексту ошибки, возможно, надо сделать запуск с ключом /c ЗапуститьОбновлениеИнформационнойБазы.
К сожалению, не очень понял фразу "для нового типа документа в расширении".
4. noxpina79 03.06.24 11:19 Сейчас в теме
(3)Спасибо, автору! Работает
6. mrAxe 26.06.24 17:15 Сейчас в теме
(2) Проблема у меня та же возникла.
Кроется она в скопированном модуле
ЗаполнитьТипыОбъектовВДеревеЗначений
в строке
НоваяСтрокаТаблицы.ТипОбъекта = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Тип);

Должен вернуться тип ИдентификаторыОбъектовРасширений, но этот тип не поддерживается, поэтому возвращается строка, и хоть визуально мы видим что все ок, строка сама по себе дальше вызывает ошибку. Решение нашел здесь Infostart
Доработав то что здесь имеем лишь второй частью 7го пункта и 8ым.
7. Touch_Of_Soul 30 26.10.25 19:04 Сейчас в теме
(6) Сделать как тут и потом как по ссылке 7 и 8 и будет всё ок? А то тоже такая же ошибка. странно что автор не исправил статью.
9. Touch_Of_Soul 30 26.10.25 19:19 Сейчас в теме
(6) Всё сделал ошибок нет, настроил и нет карандашика посмотреть историю.
8. Touch_Of_Soul 30 26.10.25 19:12 Сейчас в теме
Карандашика нет для просмотра истории изменений
11. vorkir 06.11.25 11:05 Сейчас в теме
(8) я вот забыл в типе параметра команды свой тип выбрать.
еще говорят роль в расширении нужна хоть одна
12. Touch_Of_Soul 30 07.11.25 08:18 Сейчас в теме
(11) у меня забавно у кого не полные права карандаш появился у кого полные нет) и для них я вывел свою карандаш команду)) Глюк или нет хз))
13. d.burykin 01.12.25 21:18 Сейчас в теме
В конфигураторе:
В тип данных ВерсионируемыеДанные добавляем нужный тип данных ДокументСсылка
В подписку на событие ЗаписатьВерсиюДокумента добавляем нужный ДокументОбъект
В режиме Предприятие (после обновления БД) настраиваем запись в Настройки версионирования объектов (Регистры сведений).
Код дорабатывать не нужно.
Кому нравится - те же самые доработки делаем через расширение.
shaykhelov; Egovigor; sacred_a; +3 Ответить
Для отправки сообщения требуется регистрация/авторизация