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

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

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

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

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

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

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

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

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

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

УстановитьПараметрыЗапросаИменаПредопределенныеПапки (БСП)

Быстро получить всех родителей для текущей позиции

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

Получить всех родителей элемента

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

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

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