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