Переработан механизм работы с файлами-вложениями из сообщений

- Добавил области формы
- Реализована асинхронная работа с файлами
This commit is contained in:
2025-06-25 10:15:29 +03:00
parent a4388da629
commit b5bc707ba8
3 changed files with 45 additions and 18 deletions

View File

@@ -3,6 +3,9 @@
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="BeforeClose">ПередЗакрытием</Event>
</Events>
<ChildItems>
<InputField name="Код" id="1">
<DataPath>Объект.Code</DataPath>
@@ -50,10 +53,10 @@
<ContextMenu name="file_sizeКонтекстноеМеню" id="17"/>
<ExtendedTooltip name="file_sizeРасширеннаяПодсказка" id="18"/>
</InputField>
<Button name="ПолучитьФайл" id="19">
<Button name="СохранитьФайл" id="21">
<Type>UsualButton</Type>
<CommandName>Form.Command.ПросмотрФайла</CommandName>
<ExtendedTooltip name="ПолучитьФайлРасширеннаяПодсказка" id="20"/>
<CommandName>Form.Command.СохранитьФайл</CommandName>
<ExtendedTooltip name="СохранитьФайлРасширеннаяПодсказка" id="22"/>
</Button>
</ChildItems>
<Attributes>
@@ -64,22 +67,37 @@
<MainAttribute>true</MainAttribute>
<SavedData>true</SavedData>
</Attribute>
</Attributes>
<Commands>
<Command name="ПросмотрФайла" id="1">
<Attribute name="АдресВременногоХранилища" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Просмотр файла</v8:content>
<v8:content>Адрес временного хранилища</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="СохранитьФайл" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Получить файл</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Просмотр файла</v8:content>
<v8:content>Сохранить файл</v8:content>
</v8:item>
</ToolTip>
<Action>ПросмотрФайла</Action>
<Action>СохранениеФайла</Action>
</Command>
</Commands>
</Form>

View File

@@ -1,17 +1,26 @@
&НаКлиенте
Процедура ПросмотрФайла(Команда)
#Область ОбработчикиКомандФормы
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(РаботаСФайламиКлиентСервер.ПолучитьРасширениеИмениФайла(Объект.file_name));
ДвоичныеДанные = ПолучитьДвоичныеДанныеНаСервере();
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ЗапуститьПриложениеАсинх(ИмяВременногоФайла);
&НаКлиенте
Процедура СохранениеФайла(Команда)
АдресВременногоХранилища = АдресВременногоХранилища();
Если ЭтоАдресВременногоХранилища(АдресВременногоХранилища) Тогда
ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов();
НачатьПолучениеФайлаССервера(АдресВременногоХранилища, СтрШаблон("%1%2", ПараметрыДиалога.Каталог, Объект.file_name));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьДвоичныеДанныеНаСервере()
#КонецОбласти
Возврат РеквизитФормыВЗначение("Объект").ДанныеФайла.Получить();
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция АдресВременногоХранилища()
ДвоичныеДанныеФайла = РеквизитФормыВЗначение("Объект").ДанныеФайла.Получить();
Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла, УникальныйИдентификатор);
КонецФункции
#КонецОбласти

View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<VERSION>18</VERSION>
<VERSION>19</VERSION>