|
Изменить файл в функции НачатьПомещениеФайлаНаСервер()
бегинер, АЛьФ, Fedor-1971, mikecool, ads55, Бычье сердце, Волшебник, Spyke, AAA, Timon1405, СвинТуз, AlexKimp, Fil_il, АгентБезопаснойНацио, dnab, lEvGl, Гипервизор, formista2000, chelentano, timurhv, youalex, Ногаминебить, Stepashkin, hunter76
| ☑ |
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) Спасибо. Пришлось пойти именно этим путем.
|
|