Как подключить документ расширения к версионированию БСП

08.06.22

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

Пример расширения, в котором добавлен новый документ и он же подключен к подсистеме версионирования объектов. Важно! Основную конфигурацию нужно переключить в режим совместимости 8.3.20.

Скачать исходный код

Наименование Файл Версия Размер
Как подключить документ расширения к версионированию БСП:
.cfe 36,48Kb
9
.cfe 1.0.0.0 36,48Kb 9 Скачать

Порядок действий

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

Шаг 1. В конфигураторе в меню "Конфигурация" - "Поддержка" - "Настройка поддержки" необходимо включить возможность изменения конфигурации и установить правила поддержки в положение "Объект поставщика редактируется с сохранением поддержки".

 

 

Шаг 2. Установить режим совместимости конфигурации в положение "Не использовать", если у вас платформа 8.3.20 или в положение "8.3.20", если пользуетесь более старшей версией платформы.

Шаг 3. Если прямо сейчас запустить 1С в режиме Предприятие то увидите ошибку, что конфигурация не может работать в режиме совместимости 8.3.20. По этому отключаем эту проверку. Создаём расширение и заимсвуем в него процедуру общего модуля СтандартныеПодсистемыСервер.ПередЗапускомПрограммы().

 
 СтандартныеПодсистемыСервер.ПередЗапускомПрограммы()

Теперь программа должна открываться без ошибок. 

Шаг 4. В расширении создаём новый документ и для красоты сразу прицепляем его в отдельную подсистему. 

При необходимости, указываем служебные реквизиты в модуле менеджера документа, чтобы скрыть их из отчёта версионирования.

 
 Модуль менеджера документа

В модуле формы документа в событии ПриСозданииНаСервере() должна быть инициализация.

 
 Модуль формы документа

Шаг 5. Находим в основной конфигурации общую команду «ИсторияИзменений» и копируем в расширение. Именно копируем, а не заимствуем! В типе параметров команды указываем наши документы.

Шаг 6. Находим в основной конфигурации подписку на событие «Записать версию документа» и тоже копируем в расширение. В качестве источника указываем наш документ.

Шаг 7. Заимствуем в расширение форму «НастройкиХраненияИстории» регистра сведений «НастройкиВерсионированияОбъектов». Добавляем в расширение код, который будет выполняться после процедуры ЗаполнитьТипыОбъектовВДеревеЗначений(). Здесь смысл в том, чтобы дополнить типами объектов расширения массив типов.

Обратите внимание на те строчки, где стоит комментарий //ёё
Адаптируйте под свои названия эти строчки.

 
 Модуль формы регистра сведений «НастройкиВерсионированияОбъектов»

Шаг 8. Заимствуем в расширение функцию общего модуля ОбщегоНазначения.ИдентификаторОбъектаМетаданных() и немного дорабатываем.

 
 ОбщегоНазначения.ИдентификаторОбъектаМетаданных()

Шаг 9. Запускаем программу в режиме 1С:Предприятие. Заходим в «НСИ и администрирование» - «Администрирование» - «Общие настройки» - «История изменений» - «Настроить»

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

 

 

Шаг 10. Тестируем и наслаждаемся результатом

 

 

Используемые статьи и идеи

Требования к ПО

Предложенное расширение протестировано на платформе 1С:Предприятие 8.3.20.1710
Конфигурация, на основе которой было создано расширение: 1С:ERP Управление предприятием 2 (2.5.8.171)

БСП РежимСовместимости Расширение ERP Версионирование

См. также

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

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

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

02.04.2024    3230    John_d    10    

89

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

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

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

01.03.2024    1772    dimanich70    8    

14

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

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

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

12.02.2024    810    FilippovRI    0    

15

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

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

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

07.02.2024    2671    YA_418728146    11    

45

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

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

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

19.01.2024    6572    PROSTO-1C    5    

46

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

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

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

15.01.2024    3907    0    Infostart    0    

21
Отзывы
2. EvgeTrofi 127 27.05.22 11:22 Сейчас в теме
(1) Только на платформе 8.3.20 с режимом совместимости 8.3.20 или выше можно документ созданный, в расширении записать в поле таблицы базы данных основной конфигурации.

Записи версионирования записываются в таблицу регистра сведений «Версии объектов». Там есть измерение «Объект», которое имеет тип ДокументСсылка. Но до 8.3.20 туда можно было записывать только любые документы основной конфигурации.

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

Я ответил на Ваш вопрос?
Прикрепленные файлы:
Pelageya_Prime; zykov_vitaliy; sapervodichka; +3 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1800 27.05.22 09:44 Сейчас в теме
Режим совместимости 8.3.20 нужен только для строк вида Документы.ТипВсеСсылки()?
2. EvgeTrofi 127 27.05.22 11:22 Сейчас в теме
(1) Только на платформе 8.3.20 с режимом совместимости 8.3.20 или выше можно документ созданный, в расширении записать в поле таблицы базы данных основной конфигурации.

Записи версионирования записываются в таблицу регистра сведений «Версии объектов». Там есть измерение «Объект», которое имеет тип ДокументСсылка. Но до 8.3.20 туда можно было записывать только любые документы основной конфигурации.

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

Я ответил на Ваш вопрос?
Прикрепленные файлы:
Pelageya_Prime; zykov_vitaliy; sapervodichka; +3 Ответить
3. ixijixi 1800 27.05.22 11:37 Сейчас в теме
(2) Исчерпывающе, благодарю
4. sapervodichka 6807 27.05.22 12:36 Сейчас в теме
(2) О! Я немного другое для себя понял, что начиная с 8.3.20 и планы обмена можно чисто в расширении делать, (там все также тип не проставлялся в регистре сведений основной конфы если план в расширении) спс за инфу + 1
5. vvh74 27.09.22 14:31 Сейчас в теме
(2) Сорри за некропостинг, но напрашивается вопрос: а что будет с типовой ERP/КА/УТ, если её с 17 поднять до 20? Не умрёт?
Вопрос не просто так, у меня при обновлении и поднятии режима совместимости с 8.3.14 на 8.3.16 отваливались расширения, т.к. менялось поведение встроенных функций.
6. EvgeTrofi 127 27.09.22 19:50 Сейчас в теме
(5) У меня не отвалилось на указанных в статье версиях. Работает по сей день.
7. sdemon72 25 28.11.22 12:41 Сейчас в теме
У меня получилось немножко красивее. Сделал пункты 1,2,3,4 (у меня, правда, справочники), как у автора.
Позаимствовал определяемые типы "ВерсионируемыеДанные" и "ВесионируемыеДанныеОбъект" и добавил туда объекты расширения.
Позаимствовал форму "НастройкиХраненияИстории", но вместо изменения кода поменял тип реквизита "ТипОбъекта" в "ДеревоОбъектовМетаданных" - добавил тип "ИдентификаторыОбъектовРасширений".
Позаимствовал модуль ОбщегоНазначения.ИдентификаторОбъектаМетаданных() и добавил туда код (немножко отличается от п.8.):
&ИзменениеИКонтроль("ИдентификаторОбъектаМетаданных")
Функция LS_ИдентификаторОбъектаМетаданных(ОписаниеОбъектаМетаданных, ВызыватьИсключение)
	
	#Вставка
	ИдентификаторРасширения = Неопределено;
	Если ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("Строка") Тогда
		ИдентификаторРасширения = Справочники.ИдентификаторыОбъектовРасширений.НайтиПоНаименованию(ОписаниеОбъектаМетаданных, Истина);
	ИначеЕсли ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("Тип") Тогда
		МетаданныеОбъекта = Метаданные.НайтиПоТипу(ОписаниеОбъектаМетаданных);
		Если МетаданныеОбъекта <> Неопределено Тогда
			ПолноеИмя = МетаданныеОбъекта.ПолноеИмя();
			ИдентификаторРасширения = Справочники.ИдентификаторыОбъектовРасширений.НайтиПоРеквизиту("ПолноеИмя",ПолноеИмя);
		КонецЕсли;
	ИначеЕсли ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений") Тогда
		ИдентификаторРасширения = ОписаниеОбъектаМетаданных;
	КонецЕсли;
	Если ЗначениеЗаполнено(ИдентификаторРасширения) Тогда
		Возврат ИдентификаторРасширения;
	КонецЕсли;
	#КонецВставки

	Возврат Справочники.ИдентификаторыОбъектовМетаданных.ИдентификаторОбъектаМетаданных(
	ОписаниеОбъектаМетаданных, ВызыватьИсключение);

КонецФункции
Показать


В результате не надо переносить команду и подписку на событие, и в форме настроек версионирования не дублируются группы объектов метаданных
8. sdemon72 25 28.11.22 12:43 Сейчас в теме
Единственная неприятность - в какой-то момент на всех формах объектов расширения пропала кнопка "История изменеий". Раньше точно была, и не пойму, когда пропала. Пытаюсь разобраться....
9. sdemon72 25 28.11.22 21:26 Сейчас в теме
Разобрался. На платформе 8.3.21.1622 кнопки выводились, а при обновлении на 8.3.22.1709 исчезли. Значит пункты 5 и 6 выполняем в соответствии с инструкциями автора.
Автору респект!
EvgeTrofi; +1 Ответить
10. creatermc 27 23.06.23 14:29 Сейчас в теме
(7)
Позаимствовал определяемые типы "ВерсионируемыеДанные" и "ВесионируемыеДанныеОбъект" и добавил туда объекты расширения.


up

Ни в коем случае не заимствуйте в расширение определяемые типы «ВерсионируемыеДанные». А особенно «ВерсионируемыеДанныеОбъект».
!!!
11. creatermc 27 23.06.23 14:49 Сейчас в теме
@EvgeTrofi в 7 м исходнике в двух местах

ОбщегоНазначения.ИдентификаторОбъектаМетаданных


на

ОбщегоНазначения.моя_ИдентификаторОбъектаМетаданных
user1147041; +1 Ответить
12. crash-16 31.03.24 11:36 Сейчас в теме
а разве п.8 не должен идти перед п.7 чтобы второе //её можно было заменить, а не сидеть минут 10 соображать "а что там можно заменить то")

И еще дополнение, возможно зависит от версии платформы, но мне не удалось выполнить этот пункт
Шаг 6. Находим в основной конфигурации подписку на событие «Записать версию документа» и тоже копируем в расширение. В качестве источника указываем наш документ.


Поскольку обработчик не устанавливается тот же, процедуру нужно скопировать в свой общий модуль и выбрать в качестве обработчика. Тогда все заработало!

Большое спасибо за подробную инструкцию! Однозначно в копилку!
13. EvG32 03.04.24 20:27 Сейчас в теме
никто не настраивал исключение реквизитов из отчетов версионирования? в документации

Процедура ПриПолученииСлужебныхРеквизитов(Реквизиты) Экспорт
//Реквизиты.Добавить("ИмяРеквизита"); // реквизит объекта
//Реквизиты.Добавить("ИмяТабличнойЧасти.*"); // табличная часть объекта
КонецПроцедуры

по логике это

ИмяТабличнойЧасти.*
исключает всю ТЧ из отчетов, значит

ИмяТабличнойЧасти.ИмяРеквизита
должно исключать вывод только этого реквизита, но не работает. Либо всю ТЧ исключает, либо ничего. Не было пытов?
Оставьте свое сообщение