ВыполнитьУдалениеПапкиЭлектронныхПисем (БСП)

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

Выполнить удаление папки электронных писем. Устанавливает пометку удаления для папки и входящих в нее писем.

// Устанавливает пометку удаления для папки и входящих в нее писем.
//
// Параметры:
//  Папка  - СправочникСсылка.ПапкиЭлектронныхПисем - папка, письма которой будут помечены на удаление.
//  ОписаниеОшибки  - Строка - описание возникшей ошибки.
//
Процедура ВыполнитьУдалениеПапкиЭлектронныхПисем(Папка, ОписаниеОшибки = "") Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос;
	Запрос.Текст = "
	|ВЫБРАТЬ
	|	ПапкиЭлектронныхПисем.Ссылка
	|ИЗ
	|	Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
	|ГДЕ
	|	ПапкиЭлектронныхПисем.ПредопределеннаяПапка
	|	И ПапкиЭлектронныхПисем.Наименование = &Удаленные
	|	И ПапкиЭлектронныхПисем.Владелец В
	|			(ВЫБРАТЬ
	|				ПапкиЭлектронныхПисем.Владелец
	|			ИЗ
	|				Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
	|			ГДЕ
	|				ПапкиЭлектронныхПисем.Ссылка = &Папка)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ПапкиЭлектронныхПисем.Ссылка КАК Папка
	|ИЗ
	|	Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
	|ГДЕ
	|	ПапкиЭлектронныхПисем.Ссылка В ИЕРАРХИИ(&Папка)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЭлектронноеПисьмоВходящее.Ссылка,
	|	ЭлектронноеПисьмоВходящее.ПометкаУдаления КАК ПометкаУдаления
	|ИЗ
	|	РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоВходящее КАК ЭлектронноеПисьмоВходящее
	|		ПО ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоВходящее.Ссылка
	|ГДЕ
	|	ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма В ИЕРАРХИИ(&Папка)
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ЭлектронноеПисьмоИсходящее.Ссылка,
	|	ЭлектронноеПисьмоИсходящее.ПометкаУдаления
	|ИЗ
	|	РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее
	|		ПО ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоИсходящее.Ссылка
	|ГДЕ
	|	ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма В ИЕРАРХИИ(&Папка)";
	
	Запрос.УстановитьПараметр("Папка", Папка);
	Запрос.УстановитьПараметр("Удаленные", НСтр("ru = 'Удаленные'"));
	
	МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();
	
	Если МассивРезультатовЗапроса[0].Пустой() Или МассивРезультатовЗапроса[2].Пустой() Тогда
		Возврат;
	КонецЕсли;
	
	ВыборкаПапкаУдаленные = МассивРезультатовЗапроса[0].Выбрать();
	ВыборкаПапкаУдаленные.Следующий();
	ПапкаУдаленные = ВыборкаПапкаУдаленные.Ссылка;
	
	ВыборкаПисьма = МассивРезультатовЗапроса[2].Выбрать();
	ВыборкаПапки  = МассивРезультатовЗапроса[1].Выбрать();
	
	НачатьТранзакцию();
	
	Попытка
		
		Пока ВыборкаПисьма.Следующий() Цикл
			
			ВзаимодействияВызовСервера.УстановитьПапкуЭлектронногоПисьма(ВыборкаПисьма.Ссылка, ПапкаУдаленные, Ложь);
			
			Если НЕ ВыборкаПисьма.ПометкаУдаления Тогда
				ПисьмоОбъект = ВыборкаПисьма.Ссылка.ПолучитьОбъект();
				ПисьмоОбъект.УстановитьПометкуУдаления(Истина);
			КонецЕсли;
			
		КонецЦикла;
		
		Пока ВыборкаПапки.Следующий() Цикл
			
			ПапкаОбъект =  ВыборкаПапки.Папка.ПолучитьОбъект();
			ПапкаОбъект.УстановитьПометкуУдаления(Истина);
			
		КонецЦикла;
		
		ВыборкаПапки.Сбросить();
		ТаблицаДляРасчета = ТаблицаДанныхДляРасчетаРассмотрено(ВыборкаПапки, "Папка");
		Если ТаблицаДляРасчета.Найти(ПапкаУдаленные, "ПоЧемуРассчитывать") = Неопределено Тогда
			НоваяСтрока = ТаблицаДляРасчета.Добавить();
			НоваяСтрока.ПоЧемуРассчитывать = ПапкаУдаленные;
		КонецЕсли;
		РассчитатьРассмотреноПоПапкам(ТаблицаДляРасчета);
		
		ЗафиксироватьТранзакцию();
		
	Исключение
		
		ОтменитьТранзакцию();
		
		ОписаниеОшибки = НСтр("ru = 'При удалении папки произошла ошибка.
		                      |Удаление папки не выполнено.
		                      |Дополнительное описание:
		                      |%ДополнительноеОписание%'");
		ОписаниеОшибки = СтрЗаменить(ОписаниеОшибки, "%ДополнительноеОписание%", ИнформацияОбОшибке().Описание);

		Возврат;
		
	КонецПопытки;
	
КонецПроцедуры

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

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

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

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

УстановитьПапкуДляМассиваПисем (БСП)

СоздатьПредопределенныеПапкиЭлектронныхПисемДляУчетнойЗаписи (БСП)

УстановитьПапкиДляМассиваПисем (БСП)

ТипТекстовЭлектронныхПисем (БСП)

ПолучениеИОтправкаЭлектронныхПисем (БСП)

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

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

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

TurboConf - расширение Конфигуратора 1С