|
Приложению 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) Хорошо, спасибо, гляну.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |