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

08.06.22

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Как подключить документ расширения к версионированию БСП:
.cfe 36,48Kb ver:1.0.0.0
14
14 Скачать (2 SM) Купить за 2 150 руб.

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

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

Шаг 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 Бесплатно (free)

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1083    PROSTO-1C    0    

12

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

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    977    PROSTO-1C    4    

10

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

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

04.10.2024    1829    MadRave    11    

24

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

Пример отслеживания прогресса фонового выполнения дополнительной обработки с использованием программного интерфейса длительных операций БСП.

10.09.2024    1815    MadRave    1    

17

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

А что, если долгожданная реализация Паузы в 1С смутно напоминает старую, проверенную? А?!

06.09.2024    1253    n_mezentsev    10    

8

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

Добавим дополнительные свойства в новый документ средствами БСП

02.09.2024    4103    John_d    10    

52

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

Всё больше организаций выбирает для серверов под 1С операционные системы Linux. Одним из отличий систем Windows и Linux является отсутствие COM объектов, которые зачастую использовались для формирования печатных форм офисных документов (Word). Конечно, можно выполнять печать и на клиенте, но есть риск импортозамещения. В работе у меня случались проблемы с зависанием процесса Word, поэтому я не люблю его использовать.

29.07.2024    5353    PROSTO-1C    12    

52
Отзывы
2. EvgeTrofi 135 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 1913 27.05.22 09:44 Сейчас в теме
Режим совместимости 8.3.20 нужен только для строк вида Документы.ТипВсеСсылки()?
2. EvgeTrofi 135 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 1913 27.05.22 11:37 Сейчас в теме
(2) Исчерпывающе, благодарю
4. sapervodichka 6912 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 135 27.09.22 19:50 Сейчас в теме
(5) У меня не отвалилось на указанных в статье версиях. Работает по сей день.
7. sdemon72 29 28.11.22 12:41 Сейчас в теме
У меня получилось немножко красивее. Сделал пункты 1,2,3,4 (у меня, правда, справочники), как у автора.
Позаимствовал определяемые типы "ВерсионируемыеДанные" и "ВесионируемыеДанныеОбъект" и добавил туда объекты расширения.
Позаимствовал форму "НастройкиХраненияИстории", но вместо изменения кода поменял тип реквизита "ТипОбъекта" в "ДеревоОбъектовМетаданных" - добавил тип "ИдентификаторыОбъектовРасширений".
Позаимствовал модуль ОбщегоНазначения.ИдентификаторОбъектаМетаданных() и добавил туда код (немножко отличается от п.8.):
&ИзменениеИКонтроль("ИдентификаторОбъектаМетаданных")
Функция LS_ИдентификаторОбъектаМетаданных(ОписаниеОбъектаМетаданных, ВызыватьИсключение)
	
	#Вставка
	ИдентификаторРасширения = Неопределено;
	Если ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("Строка") Тогда
		ИдентификаторРасширения = Справочники.ИдентификаторыОбъектовРасширений.НайтиПоНаименованию(ОписаниеОбъектаМетаданных, Истина);
	ИначеЕсли ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("Тип") Тогда
		МетаданныеОбъекта = Метаданные.НайтиПоТипу(ОписаниеОбъектаМетаданных);
		Если МетаданныеОбъекта <> Неопределено Тогда
			ПолноеИмя = МетаданныеОбъекта.ПолноеИмя();
			ИдентификаторРасширения = Справочники.ИдентификаторыОбъектовРасширений.НайтиПоРеквизиту("ПолноеИмя",ПолноеИмя);
		КонецЕсли;
	ИначеЕсли ТипЗнч(ОписаниеОбъектаМетаданных) = Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений") Тогда
		ИдентификаторРасширения = ОписаниеОбъектаМетаданных;
	КонецЕсли;
	Если ЗначениеЗаполнено(ИдентификаторРасширения) Тогда
		Возврат ИдентификаторРасширения;
	КонецЕсли;
	#КонецВставки

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

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


В результате не надо переносить команду и подписку на событие, и в форме настроек версионирования не дублируются группы объектов метаданных
8. sdemon72 29 28.11.22 12:43 Сейчас в теме
Единственная неприятность - в какой-то момент на всех формах объектов расширения пропала кнопка "История изменеий". Раньше точно была, и не пойму, когда пропала. Пытаюсь разобраться....
9. sdemon72 29 28.11.22 21:26 Сейчас в теме
Разобрался. На платформе 8.3.21.1622 кнопки выводились, а при обновлении на 8.3.22.1709 исчезли. Значит пункты 5 и 6 выполняем в соответствии с инструкциями автора.
Автору респект!
user1376243; EvgeTrofi; +2 Ответить
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. Находим в основной конфигурации подписку на событие «Записать версию документа» и тоже копируем в расширение. В качестве источника указываем наш документ.


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

Большое спасибо за подробную инструкцию! Однозначно в копилку!
EvgeTrofi; +1 Ответить
14. ItStroyIndustiya 21.06.24 09:00 Сейчас в теме
(12) что нужно менять в строке со вторыми //её?
пока не сообразил )))... вроде и без замен работает, но вот кнопка история не отображается на формах
16. crash-16 22.07.24 22:11 Сейчас в теме
(14) В строке с "её" нужно указать процедуру из п.8.

НайденныеНастройки = НастройкиВерсионирования.НайтиСтроки(
			Новый Структура("ТипОбъекта", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Тип))
		); //ёё


превращается в рамках данной статьи в

НайденныеНастройки = НастройкиВерсионирования.НайтиСтроки(
			Новый Структура("ТипОбъекта", ОбщегоНазначения.ВерсСО_ИдентификаторОбъектаМетаданных(Тип))
		); //ёё
13. EvG32 03.04.24 20:27 Сейчас в теме
никто не настраивал исключение реквизитов из отчетов версионирования? в документации

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

по логике это

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

ИмяТабличнойЧасти.ИмяРеквизита
должно исключать вывод только этого реквизита, но не работает. Либо всю ТЧ исключает, либо ничего. Не было пытов?
15. mrAxe 26.06.24 17:24 Сейчас в теме
Хорошая работа :) правда хватило 5+ пунктов для работоспособного версионирования. И благо не заимствовал определяемые типы ))
EvgeTrofi; +1 Ответить
Оставьте свое сообщение