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