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