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

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

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

// Возвращает массив узлов плана обмена по заданным параметрам запроса и тексту запроса к таблице плана обмена.
//
//
Функция МассивУзловПоЗначениямСвойств(ЗначенияСвойств, Знач ТекстЗапроса, Знач ИмяПланаОбмена, Знач ИмяРеквизитаФлага, Знач Выгрузка = Ложь) Экспорт
	
	// Возвращаемое значение функции.
	МассивУзловРезультат = Новый Массив;
	
	// Подготавливаем запрос для получения узлов планов обмена.
	Запрос = Новый Запрос;
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ОбязательныеУсловия]",
				"И    ПланОбменаОсновнаяТаблица.Ссылка <> &" + ИмяПланаОбмена + "ЭтотУзел
				|И НЕ ПланОбменаОсновнаяТаблица.ПометкаУдаления
				|[УсловиеОтбораПоРеквизитуФлагу]
				|");
	//
	Если ПустаяСтрока(ИмяРеквизитаФлага) Тогда
		
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[УсловиеОтбораПоРеквизитуФлагу]", "");
		
	Иначе
		
		Если Выгрузка Тогда
			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[УсловиеОтбораПоРеквизитуФлагу]",
				"И  (ПланОбменаОсновнаяТаблица.[ИмяРеквизитаФлага] = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПоУсловию)
				|ИЛИ ПланОбменаОсновнаяТаблица.[ИмяРеквизитаФлага] = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ВыгружатьВручную)
				|ИЛИ ПланОбменаОсновнаяТаблица.[ИмяРеквизитаФлага] = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ПустаяСсылка))");
		Иначе
			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[УсловиеОтбораПоРеквизитуФлагу]",
				"И  (ПланОбменаОсновнаяТаблица.[ИмяРеквизитаФлага] = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПоУсловию)
				|ИЛИ ПланОбменаОсновнаяТаблица.[ИмяРеквизитаФлага] = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ПустаяСсылка))");
		КонецЕсли;
		
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяРеквизитаФлага]", ИмяРеквизитаФлага);
		
	КонецЕсли;
	
	// текст запроса
	Запрос.Текст = ТекстЗапроса;
	
	Запрос.УстановитьПараметр(ИмяПланаОбмена + "ЭтотУзел", ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(ИмяПланаОбмена));
	
	// Задаем значения параметров запроса из свойств объекта.
	Для Каждого Элемент Из ЗначенияСвойств Цикл
		
		Запрос.УстановитьПараметр("СвойствоОбъекта_" + Элемент.Ключ, Элемент.Значение);
		
	КонецЦикла;
	
	Попытка
		
		МассивУзловРезультат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
		
	Исключение
		СтрокаСообщения = НСтр("ru = 'Ошибка при получении списка узлов получателей. Ошибка выполнения запроса: [ОписаниеОшибки]'");
		СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ОписаниеОшибки]", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		ВызватьИсключение СтрокаСообщения;
	КонецПопытки;
	
	Возврат МассивУзловРезультат;
КонецФункции

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

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

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

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

ЭлементОтбораСвойствоЗначениеКонстанты (БСП)

ЭлементОтбораСвойствоАлгоритмЗначения (БСП)

ЗначениеВМассив (БСП)

ОбновитьСвойстваПредопределенныхУзлов (БСП)

СвойстваУзлаПланаОбмена (БСП)

Значение в массиве

Чтение значения атрибута узла XML или объекта XDTO

XML -> Структура/Соответствие (хмл в структуру/соответствие)

Синтакс-помощник БСП