Имя: Пароль:
1C
1С v8
Приложению Microsoft Excel не удается получить доступ к файлу
0 V_V_V
 
17.05.12
17:40
1С:Предприятие 8.2 (8.2.15.301), серверная, тонкий клиент, Excel 2010.
Пишу обработку, добавляющую несколько листов Экселя в некую заготовку (книга Экселя) листами целиком. Если выполнять на Клиенте - добавляет, сохраняет. При запуске на Сервере - процедура начинает ругаться еще на этапе открытия заготовки:
... Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу "c:\Excel\1.xls"...
Сервер работает под пользователем USR1CV82. Пользователю в DCOM даны права на Эксель (само-собой, без них даже COMОбъект("Excel.Application") не создавался), права локального Пользователя, на папку и файл тоже даны полные права. В чем может быть дело?
Кусок кода:

Йоксель = Новый COMОбъект("Excel.Application");
Йоксель.DisplayAlerts = False;
       
КнигаШаблон = Йоксель.Workbooks.Open(ФайлШаблон);
       
Если НЕ ПустаяСтрока(ФайлРезервовДляКлиента) Тогда
           
   ЛистРезервов = Йоксель.Workbooks.Open(ФайлРезервовДляКлиента);
   ЛистРезервов.Sheets(1).Copy(КнигаШаблон.Sheets(1));
   ЛистРезервов.Close();
   ЛистРезервов = "";
           
КонецЕсли;


Гуглил. Выполнял все что находил - не работает...
1 Axel2009
 
17.05.12
17:42
файл то где находится?
2 V_V_V
 
17.05.12
17:44
Локально.
c:\Excel\1.xls
3 Лоботряс
 
17.05.12
17:44
У файла вывод должен быть разрешен кажется...
4 Лоботряс
 
17.05.12
17:45
Если на сервере с ним работать
5 Axel2009
 
17.05.12
17:45
(2) круто. а код сервера откуда запускается?
6 smaharbA
 
17.05.12
17:46
у сервера права как на файл так и на ком
7 V_V_V
 
17.05.12
17:46
(3) Это где? В свойствах самого файла? На Клиенте добавляет без левых манипуляций...
8 V_V_V
 
17.05.12
17:46
(5) На этой же машине
9 Axel2009
 
17.05.12
17:47
(8) а если подумать?
10 V_V_V
 
17.05.12
17:47
+(8) На моей машине есть и сервер 1С и SQL
11 V_V_V
 
17.05.12
17:48
(9) Вот не думается. Чего и спрашиваю... :)
12 Axel2009
 
17.05.12
17:49
(11) ну ты запиши файл текстовый и посмотри где он создастся
13 V_V_V
 
17.05.12
17:50
(12) Создастся где-то C:\Users\USR1CV82\AppData\Local\Temp\
Только я открыть не могу, а не создать...
14 V_V_V
 
17.05.12
17:59
Может я неправильно сформулировал... Если я выполняю вышеприведенный код &НаКлиенте - отрабатывает без вопросов. Если &НаСервере - валится ошибка.
15 V_V_V
 
18.05.12
11:37
Ничего не понимаю. Уже не открываю файл-шаблон, а просто создаю новую книгу и уже в нее пытаюсь добавить листы, только что сформированные и записанные сервером 1C во временную папку - та же ошибка. По-идее все права на временные файлы у сервера 1С в этом случае точно есть:


Йоксель = Новый COMОбъект("Excel.Application");
Йоксель.DisplayAlerts = False;
       
КнигаШаблон = Йоксель.Workbooks.Add();
       
Если НЕ ПустаяСтрока(ФайлРезервовДляКлиента) Тогда
           
   ЛистРезервов = Йоксель.Workbooks.Open(ФайлРезервовДляКлиента);
   ЛистРезервов.Sheets(1).Copy(КнигаШаблон.Sheets(1));
   ЛистРезервов.Close();
   ЛистРезервов = "";
           
КонецЕсли;

Ошибка:
Приложению Microsoft Excel не удается получить доступ к файлу "C:\Users\USR1CV82\AppData\Local\Temp\reserve.xls"
16 V_V_V
 
18.05.12
11:41
+(15) Имеется ввиду, что ругается уже на строку
ЛистРезервов = Йоксель.Workbooks.Open(ФайлРезервовДляКлиента);
17 DEVIce
 
18.05.12
11:51
(14). У компа на котором сервер предприятия крутится есть доступ до этого файла?
18 pumbaEO
 
18.05.12
11:54
код, как сохраняешь ФайлРезервовДляКлиента покажи.
19 V_V_V
 
18.05.12
11:58
(17) Все выполняется на моей машине. В последнем варианте из (15) файл C:\Users\USR1CV82\AppData\Local\Temp\reserve.xls формируется непосредственно самим сервером 1С аккурат перед добавлением в книгу.
(18) Да там кода-то - выборка, заполнение Табличного документа и сохранение этого Табличного документа в формате экселя:
ТаблицаДокументов.Записать(ФайлРезервовДляКлиента, ТипФайлаТабличногоДокумента.XLS);
20 V_V_V
 
18.05.12
11:59
Повторюсь из (14) - Если я выполняю вышеприведенный код &НаКлиенте - отрабатывает без вопросов. Если &НаСервере - валится ошибка.
21 pumbaEO
 
18.05.12
12:01
хотя бы раз excel от имени пользователя 1С запускал?
22 V_V_V
 
18.05.12
12:01
+(21) Выполнять надо именно &НаСервере - это будет регламентное задание
23 V_V_V
 
18.05.12
12:01
(21) Нет
24 DEVIce
 
18.05.12
12:05
Запусти в отладчике и посмотри на момент открытия файла он реально есть?
25 DEVIce
 
18.05.12
12:06
Т.е. перед тем как выполнится: ЛистРезервов = Йоксель.Workbooks.Open(ФайлРезервовДляКлиента);
существует ли C:\Users\USR1CV82\AppData\Local\Temp\reserve.xls
26 DEVIce
 
18.05.12
12:08
Ну и может файл только на чтение? В темпе он ведь не просто так создался.
27 V_V_V
 
18.05.12
12:08
(25) Файл существует, данные в нем имеются, корректные. Открывается, редактируется и тд и тп...
28 V_V_V
 
18.05.12
12:10
(26) Редактируется. Хотя это мне и не нужно в данном случае. А в темп - так я его сознательно туда загоняю, через КаталогВременныхФайлов()
29 DEVIce
 
18.05.12
12:12
Да и все-таки запусти хоть раз от имени пользователя 1С Ексель интерактивно. Ибо Ексель при первом запуске требует настройки.
30 pumbaEO
 
18.05.12
12:16
Если сервер 1С от своего имени запустишь, работает?
31 V_V_V
 
18.05.12
12:17
(21) (29) Спасибо за наводку. Вот пытаюсь. Ругается: выбранный режим входа для данного пользователя на этом компьютере не предусмотрен.
Хорошо, что нужно сделать еще с пользователем USR1CV82 чтоб он мог работать с Экселем? В DCOM права на Эксель даны, самому пользователю членство в группах Пользователи и Пользователи DCOM назначены.
32 V_V_V
 
18.05.12
12:18
(30) Наверняка заработает - у меня админские права на локальную машину. Но надо запустить в режиме приближенном к боевому, как на сервере. Там я свои права давать не буду...
33 pumbaEO
 
18.05.12
12:20
выбранный режим входа для данного пользователя на этом компьютере  - т.е. процессу не разрешенно работать с рабочим столом, возможно в этом проблема.
34 V_V_V
 
18.05.12
12:28
(33) Пока я пользователя USR1CV82 не добавил в DCOM - вообще ругалось на  COMОбъект("Excel.Application"). С рабочим столом работа и не предполагалась. Из того что я начитался, народу было достаточно добавления в DCOM прав пользователю на запуск Экселя.
35 V_V_V
 
18.05.12
12:39
Кажется я упустил один момент - у меня 64-х битная Виндовс 7, Эксель 2010 тоже 64-х битный, а вот сервер 1С крутится 32-х битный. Это важно? Может в этом затыка?
36 izekia
 
18.05.12
12:47
(35) да в этом проблема
37 izekia
 
18.05.12
12:47
куча ссылок но не на этом форуме
38 V_V_V
 
18.05.12
12:49
(37) А дай хоть что-то по этой теме. Уже и так читано-перечитано, прежде чем сюда писать, но может новенькое попадется...
39 izekia
 
18.05.12
12:59
(38)честно? можно считать это сливом, но поищи в инете
не в плане 1с, но просто проблемы вызова через ком, от 32 бита в 64
если хочешь - напиши мне на почту завтра, я постараюсь ответить
[email protected]
40 V_V_V
 
18.05.12
13:04
(39) Хорошо, спасибо, гляну.