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

Автор: 1С
ОбщийМодуль.РаботаСФайламиСлужебныйВызовСервера
БСП

Сменить родителя папок. Функция меняет свойство Родитель объектам типа Справочник.ПапкиФайла, вернет Истина при успехе,

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

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

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

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

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

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

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

ПользовательЯвляетсяОтветственнымЗаВедениеПапок (БСП)

ОткрытьФормуСменыПароля (БСП)

ИнтерактивнаяОбработкаПриСменеПароляПриЗапуске (БСП)

Сравнение набора товаров, проданных сменами

РассчитыватьРассмотрено (БСП)

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

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз