#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Параметры.ВладелецФайла) Тогда
ИмяСправочникаХранилищаФайлов = Параметры.ВладелецФайла.Метаданные().Имя;
ВладелецФайла = Параметры.ВладелецФайла;
Список.Параметры.УстановитьЗначениеПараметра("Владелец", Параметры.ВладелецФайла);
Элементы.Папки.Видимость = (ТипЗнч(Параметры.ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов"));
Иначе
ИмяСправочникаХранилищаФайлов = "Файлы";
ВладелецФайла = Справочники.ПапкиФайлов.ПустаяСсылка();
КонецЕсли;
Если ТипЗнч(ВладелецФайла) = Тип("СправочникСсылка.ПапкиФайлов") Тогда
Если Параметры.ВыборШаблона Тогда
ВладелецФайла = Справочники.ПапкиФайлов.Шаблоны;
ОпределитьВозможностьДобавлениеШаблоновФайлов();
РежимВыбораШаблона = Параметры.ВыборШаблона;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Папки, "Ссылка", Справочники.ПапкиФайлов.Шаблоны,
ВидСравненияКомпоновкиДанных.ВИерархии, , Истина);
ИначеЕсли ЗначениеЗаполнено(Параметры.ТекущаяСтрока) И ВладелецФайла.Пустая() Тогда
НовоеЗначение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.ТекущаяСтрока, "ВладелецФайла", Истина);
Если НовоеЗначение <> Неопределено Тогда
ВладелецФайла = НовоеЗначение;
КонецЕсли;
КонецЕсли;
Элементы.Папки.ТекущаяСтрока = ВладелецФайла;
Элементы.Папки.ВыделенныеСтроки.Очистить();
Элементы.Папки.ВыделенныеСтроки.Добавить(Элементы.Папки.ТекущаяСтрока);
Список.Параметры.УстановитьЗначениеПараметра("Владелец", Элементы.Папки.ТекущаяСтрока);
КонецЕсли;
Если ЗначениеЗаполнено(Параметры.ТекущаяСтрока) Тогда
Элементы.Список.ТекущаяСтрока = Параметры.ТекущаяСтрока;
КонецЕсли;
ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере();
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
Элементы.Папки.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
КонецЕсли;
ИнтеграцияПодсистемБСП.ПриСозданииФормыСпискаФайлов(ЭтотОбъект);
РаботаСФайламиПереопределяемый.ПриСозданииФормыСпискаФайлов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_Файл" Тогда
Если Параметр.ЭтоНовый = Истина Тогда
Если Параметр.Владелец = Элементы.Папки.ТекущаяСтрока Тогда
Элементы.Список.Обновить();
Если ЗначениеЗаполнено(Параметр.Файл) Тогда
Элементы.Список.ТекущаяСтрока = Параметр.Файл;
КонецЕсли;
КонецЕсли;
Элементы.Список.Обновить();
КонецЕсли;
КонецЕсли;
Если ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант")
И ( ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи")
Или ВРег(Источник) = ВРег("ИспользоватьШифрование")) Тогда
ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.3, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
#Если МобильныйКлиент Тогда
УстановитьЗаголовокДереваПапок();
#КонецЕсли
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПапки
&НаКлиенте
Процедура ПапкиПриАктивизацииСтроки(Элемент)
ПодключитьОбработчикОжидания("ОбработкаОжидания", 0.2, Истина);
#Если МобильныйКлиент Тогда
ПодключитьОбработчикОжидания("УстановитьЗаголовокДереваПапок", 0.1, Истина);
ТекущийЭлемент = Элементы.Список;
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Отказ = Истина;
Если Не Копирование Тогда
ДобавитьФайлВПрограмму();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокПередУдалением(Элемент, Отказ)
Отказ = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ДобавитьФайл(Команда)
ДобавитьФайлВПрограмму();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьФайлВПрограмму()
Если РежимВыбораШаблона Тогда
РаботаСФайламиСлужебныйКлиент.ДобавитьФайлИзФайловойСистемы(Элементы.Папки.ТекущаяСтрока, ЭтотОбъект);
Иначе
ЗначениеПараметраКД = Список.Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Владелец"));
Если ЗначениеПараметраКД = Неопределено Тогда
ВладелецФайла = Неопределено;
Иначе
ВладелецФайла = ЗначениеПараметраКД.Значение;
КонецЕсли;
РаботаСФайламиСлужебныйКлиент.ДобавитьФайл(Неопределено, ВладелецФайла, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ОбработкаОжидания()
Если Элементы.Папки.ТекущаяСтрока <> Неопределено Тогда
Список.Параметры.УстановитьЗначениеПараметра("Владелец", Элементы.Папки.ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененияИспользованияПодписанияИлиШифрования()
ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьЗаголовокДереваПапок()
Элементы.Папки.Заголовок = ?(Элементы.Папки.ТекущиеДанные = Неопределено, "",
Элементы.Папки.ТекущиеДанные.Наименование);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененияИспользованияПодписанияИлиШифрованияНаСервере()
РаботаСФайламиСлужебный.КриптографияПриСозданииФормыНаСервере(ЭтотОбъект,, Истина);
КонецПроцедуры
&НаСервере
Процедура ОпределитьВозможностьДобавлениеШаблоновФайлов()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
ЕстьПравоДобавлениеФайлов = МодульУправлениеДоступом.ЕстьПраво("ДобавлениеФайлов", Справочники.ПапкиФайлов.Шаблоны);
Иначе
ЕстьПравоДобавлениеФайлов = ПравоДоступа("Добавление", Метаданные.Справочники.Файлы)
И ПравоДоступа("Чтение", Метаданные.Справочники.ПапкиФайлов);
КонецЕсли;
Если Не ЕстьПравоДобавлениеФайлов Тогда
Элементы.ДобавитьФайл.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти