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

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

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

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

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

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

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

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

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

"Генерировать код объекта" не отображает "Родителя" и "Владельца" там, где они есть

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

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

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

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

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

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

TurboConf ИР адаптер 2.63