|
Изменить файл в функции НачатьПомещениеФайлаНаСервер() | ☑ | ||
|---|---|---|---|---|
|
0
АЛьФ
15.01.25
✎
11:43
|
Есть вывод и перемещение файла на сервер с помощью метода НачатьПомещениеФайлаНаСервер(). Код такой:
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов; ПараметрыДиалога.МножественныйВыбор = Ложь; ПараметрыДиалога.Заголовок = "Выберите файл со сканом счета"; ПараметрыДиалога.Фильтр = "Файл PDF (*.pdf)|*.pdf|Файл EXCEL (*.xls)|*.xls|"; ЗавершениеОбратныйВызов = Новый ОписаниеОповещения("ЗавершениеОбратныйВызов", ЭтотОбъект); ПрогрессОбратныйВызов = Новый ОписаниеОповещения("ПрогрессОбратныйВызов", ЭтотОбъект); ПередНачаломОбратныйВызов = Новый ОписаниеОповещения("ПередНачаломОбратныйВызов", ЭтотОбъект); НачатьПомещениеФайлаНаСервер(ЗавершениеОбратныйВызов, ПрогрессОбратныйВызов, ПередНачаломОбратныйВызов,, ПараметрыДиалога, ЭтаФорма.УникальныйИдентификатор); Хотелось бы при выборе файла в формате xls конфертировать его в pdf. Примерно понятно как это сделать: загрузить в табличный документ и сохранить во временный файл в нужном формате. Сунулся в оповещение ПередНачаломОбратныйВызов(), туда приходит первым параметром выбранный файл, но в типе СсылкаНаФайл с кучей параметров. Можно как-то в этом событии подменить перемещаемый файл или надо городить свой выбор файла и в функцию НачатьПомещениеФайлаНаСервер() передавать уже сконвертированный временный файл? |
|||
|
1
Волшебник
15.01.25
✎
12:05
|
конфертируйте в фоновом задании уже после помещения файла в базу
|
|||
|
2
АЛьФ
15.01.25
✎
12:13
|
2(1) Т.е. ты предлагаешь переместить файл на сервер, поместить его в хранилище, прописать адрес в справочник, сохранить. Потом фоновым заданием перебрать все элементы справочника, извлечь файл из хранилища, проверить формат, в случае необходимости переконвертировать его в нужный формат, поместить новый файл в хранилище, записать в справочник новый адрес.
Я правильно понял? |
|||
|
3
Волшебник
15.01.25
✎
12:16
|
(2) да
|
|||
|
4
Fedor-1971
15.01.25
✎
12:32
|
(2) Можно и сразу сконвертировать, если нужно
Процедура ЗавершениеОбратныйВызов(Описание, допПараметры) экспорт Если НЕ Описание = Неопределено тогда рез = СохранитьфайлНаСервере(Описание.Адрес, Описание.СсылкаНаФайл.Расширение); КонецЕсли; КонецПроцедуры И в Процедура СохранитьфайлНаСервере(парАдрес, парРасширение) ИмяФайла = ПолучитьИмяВременногоФайла(парРасширение); Файл = ИмяФайла; ДвоичныеДанные = ПолучитьИзВременногоХранилища(парАдрес); ДвоичныеДанные.Записать(ИмяФайла); ТаблДок = Новый ТабличныйДокумент; ТаблДок.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Значение); дальше сохрани в PDF |
|||
|
5
АЛьФ
15.01.25
✎
12:31
|
2(4) И получается, что у меня на сервер отправляется один файл, помещается в хранилище, потом я его извлекаю, конвертирую, сохраняю в хранилище и уже этот адрес в хранилище записываю себе в справочник? И в хранилище у меня двойные не нужные данные?
Так вопрос и был в том, чтобы этого избежать и на сервер не тащить лишние данные. Тем более не тащить их в хранилище. |
|||
|
6
Волшебник
15.01.25
✎
12:34
|
(5) удалите лишние после конвертации
|
|||
|
7
Fedor-1971
15.01.25
✎
12:35
|
(5) Помещаешь в хранилище формы (у тебя в коде ЭтаФорма.УникальныйИдентификатор), после конвертации пишешь в хранилище справочника
В твоём раскладе файл будет жить в хранилище до закрытия формы если не сохранишь его куда нужно |
|||
|
8
АЛьФ
15.01.25
✎
12:46
|
2(7) Спасибо. Пришлось пойти именно этим путем.
|
| Форум | Правила | Описание | Секции | Поиск |