epf_Word2MXL/Word2MXL/Forms/Форма/Ext/Form/Module.bsl

94 lines
5.2 KiB
Plaintext
Raw Normal View History

2022-05-05 11:52:57 +00:00

&НаКлиенте
Асинх Процедура Конвертировать(Команда)
Диалог = Новый ПараметрыДиалогаПомещенияФайлов;
Диалог.Заголовок = "Выберите документ";
Диалог.МножественныйВыбор = Ложь;
Диалог.Фильтр = "Документы (*.doc,*.docx,*.rtf)|*.doc;*.docx;*.rtf|Все файлы|*.*";
Прогресс = 0;
Элементы.ГруппаПрогресс.Видимость = Истина;
Элементы.Прогресс.Видимость = Истина;
Состояние = "Передача файла";
Оповещение_ОХодеВыполнения = Новый ОписаниеОповещения("ПомещениеФайла_ОповещенияОХодеВыполнения", ЭтаФорма, Неопределено);
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(Оповещение_ОХодеВыполнения,,,Диалог, ЭтаФорма.УникальныйИдентификатор);
Элементы.Прогресс.Видимость = Ложь;
Прогресс = 0;
Если Неопределено = ОписаниеФайла Тогда
Элементы.ГруппаПрогресс.Видимость = Ложь;
Возврат;
КонецЕсли;
Состояние = "Конвертация";
ОбновитьОтображениеДанных(Элементы.Состояние);
КонвертироватьНаСервере(ОписаниеФайла.Адрес, ОписаниеФайла.СсылкаНаФайл.Расширение);
Элементы.ГруппаПрогресс.Видимость = Ложь;
Элементы.ГруппаРезультат.Видимость = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПомещениеФайла_ОповещенияОХодеВыполнения(ПомещаемыйФайл, Помещено, ОтказОтПомещенияФайла, ДополнительныеПараметры) Экспорт
Прогресс = Помещено;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПопыткаУдалитьФайлы(Файлы)
Если Неопределено = Файлы Тогда
Возврат;
КонецЕсли;
Попытка
УдалитьФайлы(Файлы);
Исключение
КонецПопытки;
Файлы = Неопределено;
КонецПроцедуры
&НаСервере
Процедура КонвертироватьНаСервере(Знач Адрес, Знач Расширение)
Обработка = РеквизитФормыВЗначение("Объект");
РезультатКонвертации = Неопределено;
ВремФайл = ПолучитьИмяВременногоФайла(Расширение);
Данные = ПолучитьИзВременногоХранилища(Адрес);
Данные.Записать(ВремФайл);
Данные = Неопределено;
ИмяФайла = ВремФайл;
Попытка
РезультатКонвертации = Обработка.ВывестиДокументВордВМоксель(ИмяФайла);
Исключение
Ошибка = ОписаниеОшибки();
Причина = ИнформацияОбОшибке();
ПопыткаУдалитьФайлы(ВремФайл);
Если ЭтоАдресВременногоХранилища(Адрес) Тогда
УдалитьИзВременногоХранилища(Адрес);
Адрес = Неопределено;
КонецЕсли;
ВызватьИсключение ("Ошибка конвертации в mxl",КатегорияОшибки.ОшибкаВнешнегоИсточникаДанных,"500",Ошибка,Причина);
КонецПопытки;
ПопыткаУдалитьФайлы(ВремФайл);
Если ЭтоАдресВременногоХранилища(Адрес) Тогда
УдалитьИзВременногоХранилища(Адрес);
Адрес = Неопределено;
КонецЕсли;
Если Не Неопределено = РезультатКонвертации Тогда
ДокументРезультат = РезультатКонвертации;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.ГруппаПрогресс.Видимость = Ложь;
Элементы.ГруппаРезультат.Видимость = Ложь;
КонецПроцедуры