Имя: Пароль:
1C
 
Поможите! Произошла исключительная ситуация (Microsoft Office Excel)
0 Алгоритм
 
11.12.10
23:15
Вот код:

&НаСервере
Процедура ОткрытьФайлЭксель()
   
   ИмяФайла = "D:\backup\Обмен\1.xls";
   Эксель= Новый COMОбъект("Excel.Application");
   Книга= Эксель.Workbooks.Open(ИмяФайла);
   
КонецПроцедуры

Вот ошибка:

{Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (Open)
   Книга= Эксель.Workbooks.Open(ИмяФайла);
по причине:
Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу 'D:\backup\Обмен\1.xls'. Это может быть вызвано одной из следующих причин.

• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.

Если выполниять &НаКлиенте то все хорошо, если &НаСервере то ошибка.
Клиент и служба сервера запущены под одним пользователем.
1 Topol-M
 
11.12.10
23:16
А вы файлик на сервер на D:\backup\Обмен\ перенесите
2 Алгоритм
 
11.12.10
23:18
(1) Не все так просто, я на серваке выполняю код
3 Topol-M
 
11.12.10
23:19
Ну тогда вчитайтесь в сообщение об ошибке
4 Алгоритм
 
11.12.10
23:19
Клиент и сервер - это один и тот же компьютер
5 Алгоритм
 
11.12.10
23:20
(3) Права проверил, все в порядке, сеанс и служба запущена под одним юзером
6 Алгоритм
 
11.12.10
23:21
Возможно 8.2 не позволяет вообще такой код выполнять на стороне сервера?
7 Алгоритм
 
11.12.10
23:23
Кому не влом, запустите у себя этот код, попробуйте открыть любой экселевский файл, только не на клиент-серверной базе
8 smaharbA
 
11.12.10
23:26
на шары забей
9 Topol-M
 
11.12.10
23:26
Код рабочий сейчас проверил.
10 Алгоритм
 
11.12.10
23:31
(8) На шару положил файл, пофигу та же ошибка
Блин мозг сломал уже.
11 smaharbA
 
11.12.10
23:32
(10) о том, что если д: это шара, работать не будет
(а так я в восьмерке как кот в помидорах)
12 Алгоритм
 
11.12.10
23:50
Сделал вот так:

&НаСервере
Процедура ОткрытьФайлЭксель()
ИмяФайла = "\\SERVER-1C\Public\Documents\1.xls";
Эксель= Новый COMОбъект("Excel.Application");
Книга= Эксель.Workbooks.Open(ИмяФайла);
КонецПроцедуры

Один черт, та же ошибка
13 Fragster
 
гуру
12.12.10
00:01
у пользователя usrv1srv (или как там его) нет прав на доступ к папке
14 Topol-M
 
12.12.10
00:02
Может он у тебя уже открыт тока окна не видно? в процессах эксель не висит?
15 Fragster
 
гуру
12.12.10
00:02
короче у того, под которым сервант 1с крутится
16 smaharbA
 
12.12.10
00:11
(12) еще раз, если это шара, под любым соусом работать не будет
17 Алгоритм
 
12.12.10
00:32
(16) Та хоть шара хоть не шара не работает
18 Алгоритм
 
12.12.10
00:40
Думаю не в правах на файл дело, так как отрабатывает вот этот код, который копирует файл в другое место:

&НаСервере
Процедура ОткрытьФайлЭксель()

ИмяФайлаИзХранилища= "\\SERVER-1C\Public\Documents\1.xls";
ИмяФайла = "D:\1.xls";
КопироватьФайл(ИмяФайлаИзХранилища,ИмяФайла);


//а потом делаю вот так и получаю ошибку ту же:

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

КонецПроцедуры
19 Алгоритм
 
12.12.10
00:50
Файлик копируется нормально в D:\1.xls, значит права есть на файл
20 Torquader
 
12.12.10
00:59
А кто сказал, что пользователь "сервер1С" может вообще открывать приложение Excel ?
Он вообще в какой группе пользователей живёт ?
(У меня такая же проблема была, когда я 1С7.7 из сервиса запускал - она работала, а вот OLE у неё не работало - есть подозрение, что под "органиченным" рабочим столом сервисного процесса не создаётся полноправная подсистема запуска OLE)
На другой машине - была фигня в том, что DCOM-сервис не мог создать приложение, тогда перед строчкой создания COM-объекта пришлось вставлять строку запуска OLE-сервера
в вашем случае надо ЗапуститьПриложение("Excel.exe -embedded") и потом создавать объект.
21 Алгоритм
 
12.12.10
01:11
В 8.2 на сервере не запускается код:

ЗапуститьПриложение("Excel.exe -embedded")

Да, вот засада, пользователь под которым запущена служба 1С это User, я вот сейчас под этим User и сеанс запустил, та же хня
22 Topol-M
 
12.12.10
01:16
ЗапуститьПриложение()
на сервере не доступно
23 IKSparrow
 
12.12.10
01:53
А на сервере стоит Excel? :)
24 Алгоритм
 
12.12.10
02:00
(23) Обязательно, на сервере и 1С запускаю
25 Алгоритм
 
12.12.10
10:31
проблема не решилась
26 Torquader
 
12.12.10
12:23
(21) А попробуй под этим "пользователем" запустить Excel, а потом написать на VBS запуск Excel через создание объекта и добиться, чтобы это работало и открывало Excel - только после успеха на таком этапе можно переходить к "насилию" над 1С.
27 Алгоритм
 
12.12.10
13:34
Еле отрыл решение, ларчик оказывается просто открывался!

Создать папку C:\Windows\SysWOW64\config\systemprofile\Desktop или C:\Windows\System32\config\systemprofile\Desktop (в зависимости от разрядности вашей системы)
28 Torquader
 
12.12.10
13:53
(27) Если так, то проще было правильно директорию TEMP выбрать.
Таки у вас сервер 1С под системной учётной записью работает - по идее там должен быть свой пользователь.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший