ОпределитьПапкуДляПисьма (БСП)

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

Определить папку для письма. Определяет папку для электронного письма.

// Определяет папку для электронного письма.
//
// Параметры:
//  Письмо  - ДокументСсылка.ЭлектронноеПисьмоВходящее,
//            ДокументСсылка.ЭлектронноеПисьмоИсходящее - письмо для которого определяется папка.
//
// Возвращаемое значение:
//   СправочникСсылка.ПапкиЭлектронныхПисем - папка, определенная для письма.
//
Функция ОпределитьПапкуДляПисьма(Письмо) Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	Папка = ОпределитьПапкуДляПисьмаПоУмолчанию(Письмо ,Истина);
	Если ЗначениеЗаполнено(Папка) И (НЕ Папка.ПредопределеннаяПапка) Тогда
		Возврат Папка;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = "
	|ВЫБРАТЬ
	|	ПравилаОбработкиЭлектроннойПочты.КомпоновщикНастроек КАК КомпоновщикНастроек,
	|	ПравилаОбработкиЭлектроннойПочты.ПомещатьВПапку КАК ПомещатьВПапку
	|ИЗ
	|	Справочник.ПравилаОбработкиЭлектроннойПочты КАК ПравилаОбработкиЭлектроннойПочты
	|ГДЕ
	|	ПравилаОбработкиЭлектроннойПочты.Владелец В
	|			(ВЫБРАТЬ
	|				Взаимодействия.УчетнаяЗапись
	|			ИЗ
	|				ЖурналДокументов.Взаимодействия КАК Взаимодействия
	|			ГДЕ
	|				Взаимодействия.Ссылка = &Письмо)
	|	И НЕ ПравилаОбработкиЭлектроннойПочты.ПометкаУдаления
	|
	|УПОРЯДОЧИТЬ ПО
	|	ПравилаОбработкиЭлектроннойПочты.РеквизитДопУпорядочивания";
	
	Запрос.УстановитьПараметр("Письмо", Письмо);
	
	Результат = Запрос.Выполнить();
	Если Не Результат.Пустой() Тогда
		Выборка = Результат.Выбрать();
		Пока Выборка.Следующий() Цикл
			
			СхемаПравилаОбработки = 
				Справочники.ПравилаОбработкиЭлектроннойПочты.ПолучитьМакет("СхемаПравилаОбработкиЭлектроннойПочты");
			
			КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
			КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
			КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаПравилаОбработки));
			КомпоновщикНастроек.ЗагрузитьНастройки(Выборка.КомпоновщикНастроек.Получить());
			КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.ПроверятьДоступность);
			ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
				КомпоновщикНастроек.Настройки.Отбор,"Ссылка",Письмо,ВидСравненияКомпоновкиДанных.Равно);
			
			МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(
				СхемаПравилаОбработки, КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
			
			Если МакетКомпоновкиДанных.ЗначенияПараметров.Количество() = 0 Тогда
				Продолжить;
			КонецЕсли;
			
			ТекстЗапроса = МакетКомпоновкиДанных.НаборыДанных.ОсновнойНаборДанных.Запрос;
			ЗапросПравило = Новый Запрос(ТекстЗапроса);
			Для каждого Параметр Из МакетКомпоновкиДанных.ЗначенияПараметров Цикл
				ЗапросПравило.Параметры.Вставить(Параметр.Имя, Параметр.Значение);
			КонецЦикла;
			
			Результат = ЗапросПравило.Выполнить();
			Если Не Результат.Пустой() Тогда
				Возврат Выборка.ПомещатьВПапку;
			КонецЕсли;
			
		КонецЦикла;
	КонецЕсли;
	
	Возврат Папка;
	
КонецФункции

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

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

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

ОпределитьПапкуДляПисьмаПоУмолчанию (БСП)

УстановитьПапкуЭлектронногоПисьма (БСП)

ПолучитьПапкуЭлектронногоПисьма (БСП)

ПриОтправкеФайловПочтой (БСП)

ЭтоПапкаФайлов (БСП)

ТекстНеОпределено (БСП)

Определить это Linux или Windows

ПредставлениеПисьма (БСП)

УстановитьРодителяУПапки (БСП)

1С Менеджер конфигураций