Имя: Пароль:
1C
 
Проблема с выгрузкой в Excel в регламентном задании
0 Vladuha
 
12.10.10
18:46
Нужно сделать регламентное задание, которое будет формировать некий файл в формате xls. Написал процедуру, когда запускаю на клиенте обработкой, то все ок, регламентное задание отваливается с ошибкой:
Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Excel): Метод SaveAs из класса Workbook завершен неверно.

Код выглядит так:

Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.Workbooks.Add();
...

Эксель.DisplayAlerts = 0;
ПутьКФайлу = КаталогВременныхФайлов();
ПолноеИмяФайла = ПутьКФайлу+"ПросроченныеЗаявки.xls";
Эксель.ActiveWorkbook.SaveAs(ПолноеИмяФайла, -4143);
Книга.Close();
Эксель.DisplayAlerts = 1;
Эксель.Application.Quit();

PS: Win 2008 R2 x64, 1С 8.1.15.14 (сервер x64), MS Excel 2010 x64
1 sapphire
 
12.10.10
18:47
(0) Читать документацию надо внимательно:
нельзя сохранить макет в формате xls в серверном режиме.
2 Vladuha
 
13.10.10
09:41
(1) читать надо внимательнее вопрос, макетов здесь нет, есть создание документа в excel через com-объект.
3 shuhard
 
13.10.10
10:38
(2) а права у учетной записи, от которой запущен сервер 1С на ПутьКФайлу какие ?
4 Vladuha
 
13.10.10
11:18
(3) полные
5 Dmitry77
 
13.10.10
12:06
Скорее всего файл кем-то используется. Перед тем как выгружать сначала проверить есть ли он. И в попытке удалить. Не используйте длинных путей с пробелами и русскими буквами.
6 Dmitry77
 
13.10.10
12:08
Эксель.DisplayAlerts = 1;
и вот эту строку в самое начало.
7 Dmitry77
 
13.10.10
12:09
(6) сори не надо этого.
8 Vladuha
 
13.10.10
18:07
(5) файл новый создается, в каталоге времнных файлов вообще нет экселевских файлов.
Еще заметил, что фоновое задание отваливается с ошибкой через пару секунд после запуска, а чтобы дойти до этого места в коде нужно секунд 10-15.
9 Invaa
 
13.10.10
18:09
(0) грабли платформы... выбери формат txt или mxl и будет тебе счастье.
10 Invaa
 
13.10.10
18:12
(9) пардон, тоже недочитал про ком...
11 Irken_1
 
13.10.10
18:12
у меня конечно не создание нового файла, а открытие существующего, заполнение данных и его запись...
но я использовала
   Эксель.Save();
   Эксель.Quit();
12 Irken_1
 
13.10.10
18:14
до этого
   Эксель = Новый COMОбъект("Excel.Application");
   Эксель.Visible = 0;
   Эксель.DisplayAlerts = False;
   
   Эксель.Workbooks.Open(ИмяФайла);
13 Dmitry77
 
13.10.10
18:14
(8) а если запустить из под обычного пользователя. Все нормально отрабатывает? и вываливает ли при таком запуске excel предупреждения? У меня платформа таже только 32 и офис 2003 и все нормально работает.
14 Vladuha
 
14.10.10
09:48
(13) запускал из-под своего пользователя - все ОК, сегодня попробую запустить из-под учетки, на которой сервер предприятия крутится. Если будет все тоже самое, то попрошу админов эксель 2003 поставить.
15 Vladuha
 
14.10.10
09:54
(12) тоже вариант, попробую шаблон на шару закинуть, лист буду чистить от данных, заполнять новыми и сохранять
16 Леха Дум
 
14.10.10
09:58
(0) Смотри права на ком excel для учетной записи сервера 1С. Сталкивались с таким для IE. Если кластер, то такое придется сделать на всех серверах кластера
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс