|
COM объект Excel.Application ошибка при сохранении файла | ☑ | ||
---|---|---|---|---|
0
shushik
19.06.14
✎
15:04
|
Здравствуйте. У меня возникла проблема с COM объектом "Excel.Application". В момент сохранения файла Excel из 1С с помощью метода SaveAs() возникает ошибка.
База 1С серверная. Ошибка возникает только при работе с клиента запущенного на другой машине (не на сервере, где крутится 1С). Если запускать клиент на сервере, где крутится 1С, то все отрабатывает отлично. Выполняю следующий код: &НаКлиенте Процедура ВыгрузитьДанныеВExcel(Команда) ПолноеИмяФайла=ПолучитьПутьКФайлу(); СохранитьЛистExcel(ПолноеИмяФайла); КонецПроцедуры &НаКлиенте Функция ПолучитьПутьКФайлу() ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); ДиалогСохраненияФайла.Заголовок = "Сохранение файл Microsoft Excell"; ДиалогСохраненияФайла.Фильтр = "Лист Excel (*.xls)|*.xls|Лист Excel2007-... (*.xlsx)|*.xlsx"; Если ДиалогСохраненияФайла.Выбрать() Тогда ПолноеИмяФайла = ДиалогСохраненияФайла.ПолноеИмяФайла; Иначе ПолноеИмяФайла= ""; КонецЕсли; Возврат ПолноеИмяФайла; КонецФункции &НаСервере Процедура СохранитьЛистExcel(ПолноеИмяФайла) ExcelПриложение = Новый COMОбъект("Excel.Application"); Книга = ExcelПриложение.WorkBooks.Add(); Книга.SaveAs(ПолноеИмяФайла); ExcelПриложение.Quit(); КонецПроцедуры Ошибка возникает на строке Книга.SaveAs(ПолноеИмяФайла) . Текст ошибки следующий: {Форма.Форма.Форма(28)}: Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Office Excel): Microsoft Office Excel cannot access the file 'C:\Выгрузка в Excel\995D4090'. There are several possible reasons: • The file name or path does not exist. • The file is being used by another program. • The workbook you are trying to save has the same name as a currently open workbook. Больше всего мне не понятно, то, что в качестве входного параметра метода SaveAs() передается путь «C:\Выгрузка в Excel\НовыйЛист.xls», а система ругается на путь «C:\Выгрузка в Excel\995D4090». Почему к указанному во входном параметре пути приписывается какая-то ерунда? Естественно такого каталога не существует и система не может получить к нему доступ. Откуда этот путь взялся не понятно. Подскажите, пожалуйста, куда копать. |
|||
1
ДенисЧ
19.06.14
✎
15:06
|
Вроде по-русски написано "annot access the file"...
|
|||
2
shushik
19.06.14
✎
15:10
|
(1) Да к файлу C:\Выгрузка в Excel\995D4090 доступ получить не может, но ведь к нему и не нужно. Переменная ПолноеИмяФайла в момент вызова метода Книга.SaveAs(ПолноеИмяФайла) равна C:\Выгрузка в Excel\НовыйЛист.xls
|
|||
3
f_vadim
19.06.14
✎
15:12
|
(2) это ещё надо проверить, ведь может быть и ""
|
|||
4
f_vadim
19.06.14
✎
15:14
|
ааааа... на сервере!
|
|||
5
shushik
19.06.14
✎
15:28
|
(4) Кажется понятно в чем проблема. Путь куда сохранять я выбираю на клиенте, а Excel открывается и сохраняется на сервере, и соответственно путь который был передан система ищет на сервере, а его там нет(. Но тогда не пойму как сохранить этот файл на клиенте и возможно ли это в случае если все действия с Excel делаются на сервере.
|
|||
6
f_vadim
19.06.14
✎
15:37
|
(5) бинго!
делать всё на клиенте. остальные способы через жпо. |
|||
7
f_vadim
19.06.14
✎
15:39
|
плюс на сервере может не быть офиса.
вообще зачем офис на сервере? |
|||
8
shushik
19.06.14
✎
15:42
|
(6) (7) ))) На клиенте делать это очень ресурсоемко, я привела в примере сильно упрощенный код. Хотелось бы все-таки делать запись в Excel на сервере. Может быть, есть возможность каким-то образом сохранить файл на сервере, а потом перетащить его на клиент?
|
|||
9
f_vadim
19.06.14
✎
15:47
|
(8) Ресурсоёмко, это много сохранять в эксель? Или много обрабатывать данных?
Можно обработку сделать на сервере, а данные для записи вернуть на клиента, скажем, в массиве или массиве структур. Ну или как-то так: http://help1c.com/faq/view/1407.html |
|||
10
ДенисЧ
19.06.14
✎
15:50
|
Используй ПолучитьИмяВременногоФайла() а потом через Хз возвращай клиенту
|
|||
11
Kalambur
19.06.14
✎
15:56
|
(8) Катя, используй хранилище
|
|||
12
shushik
19.06.14
✎
17:25
|
(9) (10) (11) Спасибо огромное. Попробую так.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |