|   |   | 
| 
 | Приложению 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 если хочешь - напиши мне на почту завтра, я постараюсь ответить izekia@gmail.com | |||
| 40
    
        V_V_V 18.05.12✎ 13:04 | 
        (39) Хорошо, спасибо, гляну.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |