ПодключитьСхему (БСП)

Автор: 1С
ОбщийМодуль.ОтчетыСервер
1С БСП

Подключить схему. Устанавливает отчету переданную схему и на основании нее, инициализирует компоновщик настроек.

// Устанавливает отчету переданную схему и на основании нее, инициализирует компоновщик настроек.
// Если контекстом является форма отчета (настроек), то обновляет основной реквизит формы - Отчет.
// В результате, контекст объекта и формы отчета синхронизируются.
// Вызывается например, из обработчика ПередЗагрузкойНастроекВКомпоновщик объекта универсального отчета
// для установки схемы, программно сформированной на основании другого объекта метаданных.
//
// Параметры:
//  Отчет - ОтчетОбъект, ВнешнийОтчетОбъект - отчет, которому необходимо установить схему.
//  Контекст - ФормаКлиентскогоПриложения - форма отчета или форма настройки отчета.
//                                Передается "как есть" из одноименного параметра события 
//                                ПередЗагрузкойНастроекВКомпоновщик.
//           - Структура - параметры отчета: см. ВариантыОтчетов.ПодключитьОтчетИЗагрузитьНастройки.
//  Схема - СхемаКомпоновкиДанных - схема, которую необходимо установить отчету.
//  КлючСхемы - Строка - идентификатор новой схемы, который будет записан в дополнительные свойства 
//                       пользовательских настроек.
//
// Пример:
//  // В обработчике объекта отчета ПередЗагрузкойНастроекВКомпоновщик компоновщик настроек
//  // инициализируется на основании схемы из общих макетов:
//  Если КлючСхемы <> "1" Тогда
//  	КлючСхемы = "1";
//  	Схема = ПолучитьОбщийМакет("МояОбщаяСхемаКомпоновки");
//  	ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, Схема, КлючСхемы);
//  КонецЕсли;
//
Процедура ПодключитьСхему(Отчет, Контекст, Схема, КлючСхемы) Экспорт
	СобытиеФормы = (ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения"));
	
	Отчет.СхемаКомпоновкиДанных = Схема;
	Если СобытиеФормы Тогда
		НастройкиОтчета = Контекст.НастройкиОтчета;
		АдресСхемы = НастройкиОтчета.АдресСхемы;
		НастройкиОтчета.Вставить("СхемаМодифицирована", Истина);
	Иначе
		АдресСхемыЗаполнен = (ТипЗнч(Контекст.АдресСхемы) = Тип("Строка") И ЭтоАдресВременногоХранилища(Контекст.АдресСхемы));
		Если Не АдресСхемыЗаполнен Тогда
			ИдентификаторФормы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Контекст, "ИдентификаторФормы");
			Если ТипЗнч(ИдентификаторФормы) = Тип("УникальныйИдентификатор") Тогда
				АдресСхемыЗаполнен = Истина;
				Контекст.АдресСхемы = ПоместитьВоВременноеХранилище(Схема, ИдентификаторФормы);
			КонецЕсли;
		КонецЕсли;
		Если АдресСхемыЗаполнен Тогда
			АдресСхемы = Контекст.АдресСхемы;
		Иначе
			АдресСхемы = ПоместитьВоВременноеХранилище(Схема);
		КонецЕсли;
		Контекст.СхемаМодифицирована = Истина;
	КонецЕсли;
	ПоместитьВоВременноеХранилище(Схема, АдресСхемы);
	
	ВариантОтчета = ?(СобытиеФормы, НастройкиОтчета.ВариантСсылка, Неопределено);
	ИнициализироватьКомпоновщикНастроек(Отчет.КомпоновщикНастроек, АдресСхемы, Отчет, ВариантОтчета);
	
	Если СобытиеФормы Тогда
		ЗначениеВДанныеФормы(Отчет, Контекст.Отчет);
	КонецЕсли;
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

Подключены (БСП)

Программное создание схемы СКД

ПодключитьКомпоненту (БСП)

УслугаПодключена (БСП)

ПодключитьНапоминание (БСП)

Чтение файла XML в объект XDTO по схеме *.xsd

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз