Имя: Пароль:
1C
1С v8
Работа с Ексель
,
0 bard666
 
05.05.21
15:43
Здравствуйте! Возник вопрос по работе с Ексель. Ситуация такая. Есть макет екселя, в который необходимо выгружать данные из базы. В нем зашиты формулы и макросы. Реализовано через макет двоичных данных в обработке.
Имя файла не статическое. Формируется, исходя из выгружаемых данных. И ещё момент: файл можно сразу сохранить в выбранный пользователем каталог, либо открыть (предварительный просмотр) и сохранить. Если вкраце, то код такой:

ВременныйКаталог = КаталогВременныхФайлов();
ПолноеИмяФайла = = ?(ВыводимСразу, КаталогВыбранныйПользователем, ВременныйКаталог) + ИмяФайла;

        Попытка
        Если IsWindows() Тогда
            Excel = Новый COMОбъект("Excel.Application");
        КонецЕсли;    
    Исключение
        ТекстОшибки = "Ошибка при запуске Microsoft Excel: " + ОписаниеОшибки() + Формат(ТекущаяДатаВремя(), "ДЛФ=DT");
        БВ_СлужебныеПроцедуры.ВыводСообщений(ТекстОшибки);
        Возврат;
    КонецПопытки;
    
    Макет = ПолучитьМакетСервер();
    
    Макет.Записать(ПолноеИмяФайла);
        
    Книга = Excel.Workbooks.Open(ПолноеИмяФайла);

Далее код заполнения екселя.

И после сохраняем или выводим на экран.

Если ПредварительныйПросмотр Тогда
        
        Excel.Visible = True;
        
     Иначе
        
        Книга.SaveAs(ПолноеИмяФайла);
        Excel.Quit();
        

    КонецЕсли;

Если работаем через предварительный просмотр, то файлы из временного каталога не удаляются. Можно ли изменить код через функцию
ПолучитьИмяВременногоФайла("xls")
Если делать только сохранение в каталоге, то я понимаю как исправить, но как сделать временный файл и переименовать, показать и не забыть удалить его потом? Буду рад свежим идеям.
1 Kassern
 
05.05.21
15:48
(0) "Если работаем через предварительный просмотр, то файлы из временного каталога не удаляются" - либо удаляй сам, либо жди когда программа перезапустится.
"Если делать только сохранение в каталоге, то я понимаю как исправить", что исправить то? В чем проблема?
2 mistеr
 
05.05.21
15:59
(0) Нужно сохранять сразу в указанный каталог, открывать и показывать (если нужен просмотр). Временных файлов не создавать. О лишних файлах в целевом каталоге пользователь сам позаботится.
3 Cthulhu
 
05.05.21
16:00
Если ПредварительныйПросмотр Тогда
  //Excel.Visible = True;
  ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ПолноеИмяФайла); ТабДок.Показать(ПолноеИмяФайла);
Иначе
  Книга.SaveAs(ПолноеИмяФайла);
  Excel.Quit();
КонецЕсли;
4 mistеr
 
05.05.21
16:02
(3) Насколько я понимаю, просмотр без формул смысла не имеет.
5 Cthulhu
 
05.05.21
16:13
(4): вычислятся при чтении.
6 lodger
 
05.05.21
16:13
(0) в таком ключе, альтернатив нет.
если у тебя уже разрисованный шаблон и его надо открыть, то только временный файл, который ты будешь потом ловить и удалять по возможности.
либо сохраняй сразу в указанный каталог, а юзер сам удалит лишнее.
либо напиши на 1с код создания таблицы экселя со всеми макросами и листами.
7 mistеr
 
05.05.21
16:20
(5) Или я не понял тебя, или ты не понял (0).
8 bard666
 
05.05.21
16:42
Всем огромное спасибо за помощь. Решил просто добавить пару строчек при открытии, чтобы находил файлы по маске и удалял из временного каталога.
9 mistеr
 
05.05.21
16:44
(8) Надеюсь, ловишь при этом исключения? Это может оказаться чужой открытый файл.
10 bard666
 
05.05.21
16:46
(3) Через табличный документ не прокатит. В екселе три листа необходимо заполнить.
11 bard666
 
05.05.21
16:48
(9) Не учел. Спасибо. Ситуация маловероятна, т.к. работа ведется на компе локально, но файл может быть открыт.
12 Cthulhu
 
05.05.21
18:23
(10): грузи в три таб.документа.
загрузил стартовый - вывел по областям в каждый отдельный таб.документ и показал их.
или три раза загрузил - удалил лишние области - показал.