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

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