Выполнить удаление папки электронных писем. Устанавливает пометку удаления для папки и входящих в нее писем.
// Устанавливает пометку удаления для папки и входящих в нее писем.
//
// Параметры:
// Папка - СправочникСсылка.ПапкиЭлектронныхПисем - папка, письма которой будут помечены на удаление.
// ОписаниеОшибки - Строка - описание возникшей ошибки.
//
Процедура ВыполнитьУдалениеПапкиЭлектронныхПисем(Папка, ОписаниеОшибки = "") Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ПапкиЭлектронныхПисем.Ссылка
|ИЗ
| Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
|ГДЕ
| ПапкиЭлектронныхПисем.ПредопределеннаяПапка
| И ПапкиЭлектронныхПисем.Наименование = &Удаленные
| И ПапкиЭлектронныхПисем.Владелец В
| (ВЫБРАТЬ
| ПапкиЭлектронныхПисем.Владелец
| ИЗ
| Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
| ГДЕ
| ПапкиЭлектронныхПисем.Ссылка = &Папка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПапкиЭлектронныхПисем.Ссылка КАК Папка
|ИЗ
| Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
|ГДЕ
| ПапкиЭлектронныхПисем.Ссылка В ИЕРАРХИИ(&Папка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЭлектронноеПисьмоВходящее.Ссылка,
| ЭлектронноеПисьмоВходящее.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоВходящее КАК ЭлектронноеПисьмоВходящее
| ПО ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоВходящее.Ссылка
|ГДЕ
| ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма В ИЕРАРХИИ(&Папка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЭлектронноеПисьмоИсходящее.Ссылка,
| ЭлектронноеПисьмоИсходящее.ПометкаУдаления
|ИЗ
| РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее
| ПО ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоИсходящее.Ссылка
|ГДЕ
| ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма В ИЕРАРХИИ(&Папка)";
Запрос.УстановитьПараметр("Папка", Папка);
Запрос.УстановитьПараметр("Удаленные", НСтр("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
///////////////////////////////////////////////////////////////////////////////////////////////////////
УстановитьРодителяУПапки (БСП)
УстановитьПапкуДляМассиваПисем (БСП)
СоздатьПредопределенныеПапкиЭлектронныхПисемДляУчетнойЗаписи (БСП)
УстановитьПапкиДляМассиваПисем (БСП)
ТипТекстовЭлектронныхПисем (БСП)
ПолучениеИОтправкаЭлектронныхПисем (БСП)
УстановитьПапкуЭлектронногоПисьма (БСП)