ТекстЗапросаПланыОбменаДляМонитора (БСП)

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

Текст запроса планы обмена для монитора. Возвращает текст запроса для получения данных узлов планов обмена.

// Возвращает текст запроса для получения данных узлов планов обмена.
//
// Параметры:
//   ПараметрыЗапроса - Структура - структура параметров (см. функцию ПараметрыЗапросаПланыОбменаДляМонитора):
//     * ПланыОбменаМассив                 - Массив - имена планов обмена БСП. По умолчанию все планы обмена БСП.
//     * ДополнительныеСвойстваПланаОбмена - Строка - свойства узлов, значения которых необходимо получить.
//                                                    по умолчанию пустая строка.
//     * РезультатВоВременнуюТаблицу       - Булево - Если Истина, в запросе будет описано помещение результата
//                                                    во временную таблицу ПланыОбменаКонфигурации.
//                                                    По умолчанию Ложь.
//   ИсключитьПланыОбменаАвтономнойРаботы  - Булево - Если Истина, то из текста запроса исключаются планы обмена
//                                                    автономной работы.
//
// Возвращаемое значение:
//   Строка - Результирующий текст запроса.
//
Функция ТекстЗапросаПланыОбменаДляМонитора(ПараметрыЗапроса = Неопределено, ИсключитьПланыОбменаАвтономнойРаботы = Истина) Экспорт
	
	Если ПараметрыЗапроса = Неопределено Тогда
		ПараметрыЗапроса = ПараметрыЗапросаПланыОбменаДляМонитора();
	КонецЕсли;
	
	ПланыОбменаМассив                 = ПараметрыЗапроса.ПланыОбменаМассив;
	ДополнительныеСвойстваПланаОбмена = ПараметрыЗапроса.ДополнительныеСвойстваПланаОбмена;
	РезультатВоВременнуюТаблицу       = ПараметрыЗапроса.РезультатВоВременнуюТаблицу;
	
	Если Не ЗначениеЗаполнено(ПланыОбменаМассив) Тогда
		ПланыОбменаМассив = ОбменДаннымиПовтИсп.ПланыОбменаБСП();
	КонецЕсли;
	
	ПланыОбменаМетода = ФильтрПлановОбменаПоПризнакуРазделенияДанных(ПланыОбменаМассив);
	
	Если ОбменДаннымиПовтИсп.АвтономнаяРаботаПоддерживается()
		И ИсключитьПланыОбменаАвтономнойРаботы Тогда
		
		// Для плана обмена автономной работы используется отдельный монитор.
		ПланыОбменаМетода = ФильтрПлановОбменаПоПризнакуАвтономнойРаботы(ПланыОбменаМетода);
		
	КонецЕсли;
	
	ДополнительныеСвойстваПланаОбменаСтрокой = ?(ПустаяСтрока(ДополнительныеСвойстваПланаОбмена), "", ДополнительныеСвойстваПланаОбмена + ", ");
	
	ШаблонЗапроса = "
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|//////////////////////////////////////////////////////// {[ИмяПланаОбмена]}
	|ВЫБРАТЬ
	|
	|	[ДополнительныеСвойстваПланаОбмена]
	|
	|	Ссылка                      КАК УзелИнформационнойБазы,
	|	Наименование                КАК Наименование,
	|	""[ИмяПланаОбменаСиноним]"" КАК ИмяПланаОбмена
	|ИЗ
	|	ПланОбмена.[ИмяПланаОбмена]
	|ГДЕ
	|	     НЕ ЭтотУзел
	|	И НЕ ПометкаУдаления
	|";
	
	ТекстЗапроса = "";
	
	Если ПланыОбменаМетода.Количество() > 0 Тогда
		
		Для Каждого ИмяПланаОбмена Из ПланыОбменаМетода Цикл
			
			ТекстЗапросаДляПланаОбмена = СтрЗаменить(ШаблонЗапроса,              "[ИмяПланаОбмена]",        ИмяПланаОбмена);
			ТекстЗапросаДляПланаОбмена = СтрЗаменить(ТекстЗапросаДляПланаОбмена, "[ИмяПланаОбменаСиноним]", Метаданные.ПланыОбмена[ИмяПланаОбмена].Синоним);
			ТекстЗапросаДляПланаОбмена = СтрЗаменить(ТекстЗапросаДляПланаОбмена, "[ДополнительныеСвойстваПланаОбмена]", ДополнительныеСвойстваПланаОбменаСтрокой);
			
			// Удаляем литерал объединения для первой таблицы.
			Если ПустаяСтрока(ТекстЗапроса) Тогда
				
				ТекстЗапросаДляПланаОбмена = СтрЗаменить(ТекстЗапросаДляПланаОбмена, "ОБЪЕДИНИТЬ ВСЕ", "");
				
			КонецЕсли;
			
			ТекстЗапроса = ТекстЗапроса + ТекстЗапросаДляПланаОбмена;
			
		КонецЦикла;
		
	Иначе
		
		ДополнительныеСвойстваБезИсточникаДанныхСтрокой = "";
		
		Если Не ПустаяСтрока(ДополнительныеСвойстваПланаОбмена) Тогда
			
			ДополнительныеСвойства = СтрРазделить(ДополнительныеСвойстваПланаОбмена, ",");
			
			ДополнительныеСвойстваБезИсточникаДанных = Новый Массив;
			
			Для Каждого Свойство Из ДополнительныеСвойства Цикл
				
				ДополнительныеСвойстваБезИсточникаДанных.Добавить(СтрЗаменить("Неопределено КАК [Свойство]", "[Свойство]", Свойство));
				
			КонецЦикла;
			
			ДополнительныеСвойстваБезИсточникаДанныхСтрокой = СтрСоединить(ДополнительныеСвойстваБезИсточникаДанных, ",") + ", ";
			
		КонецЕсли;
		
		ТекстЗапроса = "
		|ВЫБРАТЬ
		|
		|	[ДополнительныеСвойстваБезИсточникаДанныхСтрокой]
		|
		|	Неопределено КАК УзелИнформационнойБазы,
		|	Неопределено КАК Наименование,
		|	Неопределено КАК ИмяПланаОбмена
		|";
		
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ДополнительныеСвойстваБезИсточникаДанныхСтрокой]", ДополнительныеСвойстваБезИсточникаДанныхСтрокой);
		
	КонецЕсли;
	
	ТекстЗапросаРезультат = "
	|//////////////////////////////////////////////////////// {ПланыОбменаКонфигурации}
	|ВЫБРАТЬ
	|
	|	[ДополнительныеСвойстваПланаОбмена]
	|
	|	УзелИнформационнойБазы,
	|	Наименование,
	|	ИмяПланаОбмена
	| [ПомещениеВоВременнуюТаблицу]
	|ИЗ
	|	(
	|	[ТекстЗапроса]
	|	) КАК ВложенныйЗапрос
	|;
	|";
	
	
	ТекстЗапросаРезультат = СтрЗаменить(ТекстЗапросаРезультат, "[ПомещениеВоВременнуюТаблицу]",
		?(РезультатВоВременнуюТаблицу, "ПОМЕСТИТЬ ПланыОбменаКонфигурации", ""));
	ТекстЗапросаРезультат = СтрЗаменить(ТекстЗапросаРезультат, "[ТекстЗапроса]", ТекстЗапроса);
	ТекстЗапросаРезультат = СтрЗаменить(ТекстЗапросаРезультат, "[ДополнительныеСвойстваПланаОбмена]", ДополнительныеСвойстваПланаОбменаСтрокой);
	
	Возврат ТекстЗапросаРезультат;
	
КонецФункции

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

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

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

МассивУзловПоЗначениямСвойств (БСП)

ТаблицаМонитораОбменаДанными (БСП)

СтруктураЗаголовкаГиперссылкиМонитораПроблем (БСП)

НазначениеПланаОбмена (БСП)

ЕстьМакетПланаОбмена (БСП)

ПланыОбменаРИБ (БСП)

ЭтоПланОбменаXDTO (БСП)

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