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