Ошибка работы 1С 8 с Excel: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу
Описание ошибки:
Проявила себя в клиент-серверной базе. Релиз платформы 1С: Предприятие 8.3.13.1644.
Найденные решения:
Полная формулировка ошибки:
{Доработки Документ.УстановкаЦенНоменклатуры.Форма.Доп_ФормаИмпортXLS.Форма(83)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1C_ArhivТест загрузка прайсов[имя_файла].xlsx’. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
При доработке в расширении для конфигурации 1С: Комплексная автоматизация 8, ред. 2, которая должна загружать данные из файлов Excel и при попытке выполнения в коде РабочаяКнига = ExcelПриложение.WorkBooks.Open(ФормаИмпортXLS.ИмяФайла);. Что удивительно, но в более ранней редакции Комплексной, 1.1, эта проблема не возникала в этом же коде, хотя обе базы на одном сервере.
Проблема оказалась нова для автора этого текста только в 2020 году, хотя самой проблеме достаточно много времени (более 5 лет на момент написания). В обсуждении данной ошибки на сайте infostart.ru «Ошибка открытия файла Excel на сервере» обсуждается несколько предложений по решению проблемы, среди которых наиболее популярный вариант решения. Так же там много попутных предложений по настройке прав на стороне сервера, если вдруг популярный вариант окажется не актуальным.
Популярность этого варианта подтверждается исчерпывающим обсуждением и вот на этом ресурсе: «v8.x: [РЕШЕНО] Ошибка при вызове метода контекста (Open) при работе с Excel»
Проблема была рещена данным простым решением, но обращу внимание на то, что данное действие должно быть выполнено на сервере, а не на локальном рабочем месте.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
23-09-2020
Журавлев А.С.
(Сайт azhur-c.ru)
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 — 11.12.10 — 23:16
А вы файлик на сервер на D:backupОбмен перенесите
2 — 11.12.10 — 23:18
(1) Не все так просто, я на серваке выполняю код
3 — 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 — 11.12.10 — 23:26
на шары забей
9 — 11.12.10 — 23:26
Код рабочий сейчас проверил.
10 — 11.12.10 — 23:31
(8) На шару положил файл, пофигу та же ошибка
Блин мозг сломал уже.
11 — 11.12.10 — 23:32
(10) о том, что если д: это шара, работать не будет
(а так я в восьмерке как кот в помидорах)
12 — 11.12.10 — 23:50
Сделал вот так:
&НаСервере
Процедура ОткрытьФайлЭксель()
ИмяФайла = «\SERVER-1CPublicDocuments1.xls»;
Эксель= Новый COMОбъект(«Excel.Application»);
Книга= Эксель.Workbooks.Open(ИмяФайла);
КонецПроцедуры
Один черт, та же ошибка
13 — 12.12.10 — 00:01
у пользователя usrv1srv (или как там его) нет прав на доступ к папке
14 — 12.12.10 — 00:02
Может он у тебя уже открыт тока окна не видно? в процессах эксель не висит?
15 — 12.12.10 — 00:02
короче у того, под которым сервант 1с крутится
16 — 12.12.10 — 00:11
(12) еще раз, если это шара, под любым соусом работать не будет
17 — 12.12.10 — 00:32
(16) Та хоть шара хоть не шара не работает
18 — 12.12.10 — 00:40
Думаю не в правах на файл дело, так как отрабатывает вот этот код, который копирует файл в другое место:
&НаСервере
Процедура ОткрытьФайлЭксель()
ИмяФайлаИзХранилища= «\SERVER-1CPublicDocuments1.xls»;
ИмяФайла = «D:1.xls»;
КопироватьФайл(ИмяФайлаИзХранилища,ИмяФайла);
//а потом делаю вот так и получаю ошибку ту же:
Эксель= Новый COMОбъект(«Excel.Application»);
Книга= Эксель.Workbooks.Open(ИмяФайла);
КонецПроцедуры
19 — 12.12.10 — 00:50
Файлик копируется нормально в D:1.xls, значит права есть на файл
20 — 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 — 12.12.10 — 01:16
ЗапуститьПриложение()
на сервере не доступно
23 — 12.12.10 — 01:53
А на сервере стоит Excel?
24 — 12.12.10 — 02:00
(23) Обязательно, на сервере и 1С запускаю
25 — 12.12.10 — 10:31
проблема не решилась
26 — 12.12.10 — 12:23
(21) А попробуй под этим «пользователем» запустить Excel, а потом написать на VBS запуск Excel через создание объекта и добиться, чтобы это работало и открывало Excel — только после успеха на таком этапе можно переходить к «насилию» над 1С.
27 — 12.12.10 — 13:34
Еле отрыл решение, ларчик оказывается просто открывался!
Создать папку C:WindowsSysWOW64configsystemprofileDesktop или C:WindowsSystem32configsystemprofileDesktop (в зависимости от разрядности вашей системы)
Torquader
28 — 12.12.10 — 13:53
(27) Если так, то проще было правильно директорию TEMP выбрать.
Таки у вас сервер 1С под системной учётной записью работает — по идее там должен быть свой пользователь.
Ошибка работы 1С 8 с Excel: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу
Описание ошибки:
Проявила себя в клиент-серверной базе. Релиз платформы 1С: Предприятие 8.3.13.1644.
Найденные решения:
Полная формулировка ошибки:
{Доработки Документ.УстановкаЦенНоменклатуры.Форма.Доп_ФормаИмпортXLS.Форма(83)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1C_ArhivТест загрузка прайсов[имя_файла].xlsx’. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
При доработке в расширении для конфигурации 1С: Комплексная автоматизация 8, ред. 2, которая должна загружать данные из файлов Excel и при попытке выполнения в коде РабочаяКнига = ExcelПриложение.WorkBooks.Open(ФормаИмпортXLS.ИмяФайла);. Что удивительно, но в более ранней редакции Комплексной, 1.1, эта проблема не возникала в этом же коде, хотя обе базы на одном сервере.
Проблема оказалась нова для автора этого текста только в 2020 году, хотя самой проблеме достаточно много времени (более 5 лет на момент написания). В обсуждении данной ошибки на сайте infostart.ru «Ошибка открытия файла Excel на сервере» обсуждается несколько предложений по решению проблемы, среди которых наиболее популярный вариант решения. Так же там много попутных предложений по настройке прав на стороне сервера, если вдруг популярный вариант окажется не актуальным.
Популярность этого варианта подтверждается исчерпывающим обсуждением и вот на этом ресурсе: «v8.x: [РЕШЕНО] Ошибка при вызове метода контекста (Open) при работе с Excel»
Проблема была рещена данным простым решением, но обращу внимание на то, что данное действие должно быть выполнено на сервере, а не на локальном рабочем месте.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
23-09-2020
Журавлев А.С.
(Сайт azhur-c.ru)
Алгоритм
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’. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
Если выполниять &НаКлиенте то все хорошо, если &НаСервере то ошибка.
Клиент и служба сервера запущены под одним пользователем.
Topol-M
1 — 11.12.10 — 23:16
А вы файлик на сервер на D:backupОбмен перенесите
Алгоритм
2 — 11.12.10 — 23:18
(1) Не все так просто, я на серваке выполняю код
Topol-M
3 — 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
Кому не влом, запустите у себя этот код, попробуйте открыть любой экселевский файл, только не на клиент-серверной базе
smaharbA
8 — 11.12.10 — 23:26
на шары забей
Topol-M
9 — 11.12.10 — 23:26
Код рабочий сейчас проверил.
Алгоритм
10 — 11.12.10 — 23:31
(8) На шару положил файл, пофигу та же ошибка
Блин мозг сломал уже.
smaharbA
11 — 11.12.10 — 23:32
(10) о том, что если д: это шара, работать не будет
(а так я в восьмерке как кот в помидорах)
Алгоритм
12 — 11.12.10 — 23:50
Сделал вот так:
&НаСервере
Процедура ОткрытьФайлЭксель()
ИмяФайла = «SERVER-1CPublicDocuments1.xls»;
Эксель= Новый COMОбъект(«Excel.Application»);
Книга= Эксель.Workbooks.Open(ИмяФайла);
КонецПроцедуры
Один черт, та же ошибка
Fragster
13 — 12.12.10 — 00:01
у пользователя usrv1srv (или как там его) нет прав на доступ к папке
Topol-M
14 — 12.12.10 — 00:02
Может он у тебя уже открыт тока окна не видно? в процессах эксель не висит?
Fragster
15 — 12.12.10 — 00:02
короче у того, под которым сервант 1с крутится
smaharbA
16 — 12.12.10 — 00:11
(12) еще раз, если это шара, под любым соусом работать не будет
Алгоритм
17 — 12.12.10 — 00:32
(16) Та хоть шара хоть не шара не работает
Алгоритм
18 — 12.12.10 — 00:40
Думаю не в правах на файл дело, так как отрабатывает вот этот код, который копирует файл в другое место:
&НаСервере
Процедура ОткрытьФайлЭксель()
ИмяФайлаИзХранилища= «SERVER-1CPublicDocuments1.xls»;
ИмяФайла = «D:1.xls»;
КопироватьФайл(ИмяФайлаИзХранилища,ИмяФайла);
//а потом делаю вот так и получаю ошибку ту же:
Эксель= Новый COMОбъект(«Excel.Application»);
Книга= Эксель.Workbooks.Open(ИмяФайла);
КонецПроцедуры
Алгоритм
19 — 12.12.10 — 00:50
Файлик копируется нормально в D:1.xls, значит права есть на файл
Torquader
20 — 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 и сеанс запустил, та же хня
Topol-M
22 — 12.12.10 — 01:16
ЗапуститьПриложение()
на сервере не доступно
IKSparrow
23 — 12.12.10 — 01:53
А на сервере стоит Excel?
Алгоритм
24 — 12.12.10 — 02:00
(23) Обязательно, на сервере и 1С запускаю
Алгоритм
25 — 12.12.10 — 10:31
проблема не решилась
Torquader
26 — 12.12.10 — 12:23
(21) А попробуй под этим «пользователем» запустить Excel, а потом написать на VBS запуск Excel через создание объекта и добиться, чтобы это работало и открывало Excel — только после успеха на таком этапе можно переходить к «насилию» над 1С.
Алгоритм
27 — 12.12.10 — 13:34
Еле отрыл решение, ларчик оказывается просто открывался!
Создать папку C:WindowsSysWOW64configsystemprofileDesktop или C:WindowsSystem32configsystemprofileDesktop (в зависимости от разрядности вашей системы)
Torquader
28 — 12.12.10 — 13:53
(27) Если так, то проще было правильно директорию TEMP выбрать.
Таки у вас сервер 1С под системной учётной записью работает — по идее там должен быть свой пользователь.
Здравствуйте!
Ситуация следующая. Имели MS Server 2008 R2, MS SQL 2008, 1С предприятие 8.2 x64 (клиент серверный вариант). Excel 2007. Сервер в домен не входит. В 1С создали регламентное задание которое с ftp загружало в 1С файлы. Все замечательно
работало без ошибок.
Перешли на MS Server 2012. Также перенес MS SQL 2008, 1С предприятие 8.2 x64 (клиент серверный вариант). Excel 2007. Сервер в домен не входит. Режим расширенного рабочего стола отключен. Также добавил служебного пользователя
1с от которого запускаются серверные процессы usr1cv82 в группу Пользователи DCOM . Регламентные задания стали выполняться с ошибкой.
В ошибках MS увидел:
1) Параметры разрешений application-specific не дают разрешения Local Activation для приложения COM-сервера с CLSID
{D63B10C5-BB46-4990-A94F-E40B9D520160}
и APPID
{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}
пользователю NT AUTHORITYSYSTEM с ИД безопасности (S-1-5-18) и адресом LocalHost (Using LRPC), выполняемого в контейнере приложения Unavailable с ИД безопасности (Unavailable). Это разрешение безопасности можно изменить с помощью
средства администрирования служб компонентов.
2) Не удалось установить связь DCOM с компьютером BUH2-PC через какой-либо из настроенных протоколов; запрос от PID 16c3c (C:WindowsSYSTEM32rundll32.exe).
В ошибках 1с увидел:
1) Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:base_1ЗаявкиОтработанные19_03_2013_Литвинова.xls’. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
На форумах нашел как можно исправить http://help1c.com/help/view/3921.html
Создать папку C:WindowsSysWOW64configsystemprofileDesktop
Создал, текст ошибки в логах 1с поменялся на
2) Ошибка при вызове метода контекста (Open): Неизвестная ошибка
Помогите решить данные проблемы
Встала задача. По электронной почте приходят письма с вложениями таблиц Excel. Получение почты производится встроенным клиентом 1С фоновым заданием. Необходимо было по расписанию несколько раз в день извлекать из новых писем вложения и загружать из них данные. Тут я столкнулся с проблемой — работать с Excel в фоновом задании ни через COM, ни через ADO не удавалось. Вываливалась ошибка. Нигде в сети четкого решения проблемы я не обнаружил. В итоге, собирая информацию по крупицам из разных источников (порой и вовсе не связанных с 1с) и нескольких дней мучений все же я решил данную проблему. Ниже я опишу свое решение, чтобы помочь таким же, как я )
Начну свой рассказ.
Попытка подключиться к Excel через COM объект
ExcelApp = Новый COMОбъект("Excel.Application");
приводило к ошибке «Интерфейс не поддерживается».
Если использовать ADO
CтрокаСоединения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ИмяФайла + ";Extended Properties=""Excel 8.0;HDR=NО;IMEX=1"""; СоединениеADO = Новый COMОбъект("ADODB.Connection"); СоединениеADO.ConnectionString = СтрокаСоединения; СоединениеADO.Open();
то возникала ошибка «указанный поставщик не найден».
Сразу оговорюсь, что Microsoft Office на сервере был установлен и при обычном запуске обработки (не в фоновом задании) все проходило на ура.
Так как фоновые задания выполняются от имени пользователя, под которым работает сервер 1С:Предприятие (обычно это USR1CV82), то возникло логичное предположение, то у этого пользователя не достаточно прав. Для эксперимента этому пользователю были выданы права администратора и фоновое задание завершилось успешно. Однако, это был не вариант. Требовались минимально возможные права и я окунулся в мир поиска информации в глобальной сети.
Итак. Первое что удалось выяснить, это то, что пользователю USR1CV82 необходимо дать права на запуск DCOM Microsoft Excel Application (прошу прошения, могу путаться в понятиях, но смысл, что делать, думаю, будет понятен).
Для этого необходимо:
1. Нажать кнопку Пуск и выбрать Панель управления.
2. Дважды щелкнуть значок Администрирование и выбрать пункт Службы компонентов.
3. В левой панели окна «Службы компонентов» дважды щелкнуть пункт Службы компонентов, дважды щелкнуть пункт Компьютеры и выбрать Мой компьютер.
4. Выбрать папку Настройка DCOM.
5. В окне сведений найти объект Microsoft Excel Application, щелкнуть его правой кнопкой и выбрать пункт Свойства (здесь есть подводный камень, с которым я довольно долго промучался — если сервер 64-х разрядный, то и выпуск Office так же должен быть х64, иначе объекта Microsoft Excel Application не будет в списке и права для него мне так и не удалось настроить пока не переустановил Office).
6. Открыть вкладку Безопасность.
7. В разделе Разрешения на запуск выбрать пункт Настроить и нажать кнопку Изменить.
8. Добавить пользователя USR1CV82.
Источник: http://technet.microsoft.com/ru-ru/library/cc778126(WS.10).aspx
Ниже поясняющие скриншоты.
Однако, после произведенных описанных выше настроек фоновое задание так и не заработало.
При работе с COM объектом экземляр Excel успешно создавался, но открыть файл не получалось
ExcelApp = Новый COMОбъект("Excel.Application"); ФайлExcel = ExcelApp.Workbooks.Open(ИмяФайла); // ОШИБКА!
выводилось сообщение об ошибке
Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «C:xls_test est.xls». Это может быть вызвано одной из следующих причин.
• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.
Попытки подключиться через ADO выдавало все тоже сообщение об отсутствии поставщика.
Поиски в просторах сети были продолжены и решение таки было найдено:
Необходимо создать папку
- для Windows Server x64
C:WindowsSysWOW64configsystemprofileDesktop
- для Windows Server x86
C:WindowsSystem32configsystemprofileDesktop
Данное расположение папок указано для Office 2007. Для Office 2010 не зависимо от разрядности платформы необходимо создавать папку C:WindowsSystem32configsystemprofileDesktop (данный факт так же потратил не мало моего времени). В общем, если создали папку, а ошибки не исчезли, создайте вторую. Так же необходимо дать права на созданную папку пользователю USR1CV82. Практика показала, что достаточно прав, выдаваемых системой по умолчанию.
Источник: http://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64
После проделанных всех настроек на тестовом сервере фоновое задание наконец то прошло успешно.
Однако на рабочем сервере при подключение к Excel через COM меня ждало фиаско — задание просто зависало и завершить его можно было только перезапуском сервера 1С:Предприятия. Зависало в момент открытия файла (ФайлExcel = ExcelApp.Workbooks.Open(ИмяФайла);). Я так предполагаю, что при открытии Excel открывает какое-нибудь окно и ждет ответа пользователя. Но проверить не удалось, так как доступа к рабочему серверу у меня не было и все настройки по моей просьбе на нем производил админ.
В итоге все взелетело с использованием ADO и успешно работает.
Надеюсь, данная статья поможет кому-нибудь съэкономить время при реализации подобных задач.
p.s. Ну и забыл упомянуть, что у пользователя USR1CV82, естественно, должны быть права на обрабатываемые файлы Excel.
Добрый день! Дайте права пользователю 1cv83 на Microsoft Excel Application в Службах компонент.
Нажмите на “Пуск/Start”-> “Панель управления/Control Panel”
Далее “АдминистрированиеAdministrative Tools”-> “Службы компонентов/Component Services”
Откройте папку “Службы компонентов/ Component Services” и выберите “Настройка DCOM/DCOM Config”
Среди служб выберите “Microsoft Excel Application” и откройте его свойсва, вкладку “Безопасность/Security” и в разделе “Разрешения на запуск и активацию/Launch and Activation Permissions” настроить разрешения – выбрать “Настроить/Customize” и нажать “Изменить/Edit”.
Добавьте пользователя 1cv83 и нажмите “Применить/Apply” в свойствах безопасности компоненты.
Заключительным этапам будет создание папки с соответствующими правами пользователю 1cv83
C:WindowsSystem32configsystemprofileDesktop – для Microsoft Office 2010
C:WindowsSysWOW64configsystemprofileDesktop – для Microsoft Office 2007 (windows server x64)
C:WindowsSystem32configsystemprofileDesktop – для Microsoft Office 2007 (windows server x86)
Желаем удачи и скорейшего решения проблемы!
Nikoly |
|
||
---|---|---|---|
При работе на сервере, регламентного задания, обработка открывает через Excel = Новый COMОбъект(«Excel.Application»); Excel.Application.Workbooks.Open(ИмяФайла) документ, мне выдается ошибка: Изменено 16.07.11 15:32:46 по причине: Другая категория |
Yandex |
|
||
---|---|---|---|
Nikoly |
|
||
---|---|---|---|
http://forum.mista.ru/topic.php?id=522217 |
Подсказка: Для выделения Кода используйте (в редакторе). |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
1 |
|
1C 8.x Открыть эксель на сервере17.05.2018, 09:09. Показов 15981. Ответов 40
Управляемые формы. MS SQL. И база и эксель физически лежат на одной машине. Но эксель упорно не открывается, мол 1с не видит его. COMОбъект на клиенте вроде как нельзя создавать. Как боритесь с этой ситуевиной? Добавлено через 38 минут 0 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,322 |
|
17.05.2018, 09:20 |
2 |
_ЕГОР_, открываешь готовый файл или эксель для создания файла? Код покажите как делаете 0 |
_ЕГОР_ Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
||||
17.05.2018, 09:22 [ТС] |
3 |
|||
Готовый файл
Код то работает в файловом варианте. а в серверном не дает открыть эксель. Встречались с такой ошибкой? 0 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,322 |
|
17.05.2018, 09:30 |
4 |
_ЕГОР_, Предположение. Полный путь к файлу как определяется в отладчике? Если что-то типа С: то это локальный путь. Должно быть сетевое имя компа 0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.05.2018, 09:34 [ТС] |
5 |
polax, а это значит папка расшарена должна быть ведь? 0 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,322 |
|
17.05.2018, 09:39 |
6 |
_ЕГОР_, Конечно доступ должен быть открыт Добавлено через 3 минуты 0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.05.2018, 09:48 [ТС] |
7 |
polax, ох в этом то и будет загвоздка… Добавлено через 8 минут 0 |
1783 / 1208 / 437 Регистрация: 16.01.2015 Сообщений: 5,322 |
|
17.05.2018, 10:03 |
8 |
_ЕГОР_, а если путь указать по имени компа? Типа Server1 Делал когда-то. БП выкладывает файл на сервер, ЗУП использует этот файл. Брал файл по пути с именем компа 0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.05.2018, 10:08 [ТС] |
9 |
polax, так же… 0 |
67 / 59 / 15 Регистрация: 12.11.2015 Сообщений: 572 |
|
17.05.2018, 10:12 |
10 |
а почему ЗагрузкаНаСервере(Адрес) не использовать на клиенте? Формировать на сервер временный файл, а на клиенте его записать 0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.05.2018, 10:19 [ТС] |
11 |
slypower, на клиенте тоже пробовал 0 |
206 / 180 / 31 Регистрация: 24.10.2011 Сообщений: 738 |
|
17.05.2018, 11:00 |
12 |
Процедура ОбработатьДанные(ИмяФайла) поставь директиву &НаСервере 0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.05.2018, 11:07 [ТС] |
13 |
Volexovich, так же 0 |
206 / 180 / 31 Регистрация: 24.10.2011 Сообщений: 738 |
|
17.05.2018, 11:09 |
14 |
Дай текст сообщения 0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.05.2018, 11:10 [ТС] |
15 |
{ВнешняяОбработка.ЗагрузкаЭксель.Форма.Форма.Форма (81)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «server2obmenplatonovСписок готовый к загрузке Белашов ПОДУШКИ, ОДЕЯЛА (15.05.2018) — в работе.xlsx». Это может быть вызвано одной из следующих причин. • Указан несуществующий файл или путь. 0 |
Volexovich 206 / 180 / 31 Регистрация: 24.10.2011 Сообщений: 738 |
||||
17.05.2018, 11:25 |
16 |
|||
Пошлость какая то:
дает типа C:Users%UserName%AppDataLocalTempprncss_Mega n_дата.xls 0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.05.2018, 11:28 [ТС] |
17 |
Volexovich, ну это я менял уже вот ошибка с временным каталогам {ВнешняяОбработка.ЗагрузкаЭксель.Форма.Форма.Форма (81)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «C:Userse.platonovAppDataLocalTemp14prncss_ Megan_201188086.xls». Это может быть вызвано одной из следующих причин. • Указан несуществующий файл или путь. 0 |
206 / 180 / 31 Регистрация: 24.10.2011 Сообщений: 738 |
|
17.05.2018, 11:34 |
18 |
Так, а у тебя на сервере эксель не повесился? Глянь процессы Экселя Добавлено через 1 минуту 0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.05.2018, 11:37 [ТС] |
19 |
Volexovich, неа, нет висячих процессов. 0 |
206 / 180 / 31 Регистрация: 24.10.2011 Сообщений: 738 |
|
17.05.2018, 11:38 |
20 |
Про время немного не понял… Если Эксель не виснет, значит проблема в другом. 0 |
Встала задача. По электронной почте приходят письма с вложениями таблиц Excel. Получение почты производится встроенным клиентом 1С фоновым заданием. Необходимо было по расписанию несколько раз в день извлекать из новых писем вложения и загружать из них данные. Тут я столкнулся с проблемой — работать с Excel в фоновом задании ни через COM, ни через ADO не удавалось. Вываливалась ошибка. Нигде в сети четкого решения проблемы я не обнаружил. В итоге, собирая информацию по крупицам из разных источников (порой и вовсе не связанных с 1с) и нескольких дней мучений все же я решил данную проблему. Ниже я опишу свое решение, чтобы помочь таким же, как я )
Начну свой рассказ.
Попытка подключиться к Excel через COM объект
ExcelApp = Новый COMОбъект("Excel.Application");
приводило к ошибке «Интерфейс не поддерживается».
Если использовать ADO
CтрокаСоединения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ИмяФайла + ";Extended Properties=""Excel 8.0;HDR=NО;IMEX=1"""; СоединениеADO = Новый COMОбъект("ADODB.Connection"); СоединениеADO.ConnectionString = СтрокаСоединения; СоединениеADO.Open();
то возникала ошибка «указанный поставщик не найден».
Сразу оговорюсь, что Microsoft Office на сервере был установлен и при обычном запуске обработки (не в фоновом задании) все проходило на ура.
Так как фоновые задания выполняются от имени пользователя, под которым работает сервер 1С:Предприятие (обычно это USR1CV82), то возникло логичное предположение, то у этого пользователя не достаточно прав. Для эксперимента этому пользователю были выданы права администратора и фоновое задание завершилось успешно. Однако, это был не вариант. Требовались минимально возможные права и я окунулся в мир поиска информации в глобальной сети.
Итак. Первое что удалось выяснить, это то, что пользователю USR1CV82 необходимо дать права на запуск DCOM Microsoft Excel Application (прошу прошения, могу путаться в понятиях, но смысл, что делать, думаю, будет понятен).
Для этого необходимо:
1. Нажать кнопку Пуск и выбрать Панель управления.
2. Дважды щелкнуть значок Администрирование и выбрать пункт Службы компонентов.
3. В левой панели окна «Службы компонентов» дважды щелкнуть пункт Службы компонентов, дважды щелкнуть пункт Компьютеры и выбрать Мой компьютер.
4. Выбрать папку Настройка DCOM.
5. В окне сведений найти объект Microsoft Excel Application, щелкнуть его правой кнопкой и выбрать пункт Свойства (здесь есть подводный камень, с которым я довольно долго промучался — если сервер 64-х разрядный, то и выпуск Office так же должен быть х64, иначе объекта Microsoft Excel Application не будет в списке и права для него мне так и не удалось настроить пока не переустановил Office).
6. Открыть вкладку Безопасность.
7. В разделе Разрешения на запуск выбрать пункт Настроить и нажать кнопку Изменить.
8. Добавить пользователя USR1CV82.
Источник: http://technet.microsoft.com/ru-ru/library/cc778126(WS.10).aspx
Ниже поясняющие скриншоты.
Однако, после произведенных описанных выше настроек фоновое задание так и не заработало.
При работе с COM объектом экземляр Excel успешно создавался, но открыть файл не получалось
ExcelApp = Новый COMОбъект("Excel.Application"); ФайлExcel = ExcelApp.Workbooks.Open(ИмяФайла); // ОШИБКА!
выводилось сообщение об ошибке
Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «C:xls_test est.xls». Это может быть вызвано одной из следующих причин.
• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.
Попытки подключиться через ADO выдавало все тоже сообщение об отсутствии поставщика.
Поиски в просторах сети были продолжены и решение таки было найдено:
Необходимо создать папку
- для Windows Server x64
C:WindowsSysWOW64configsystemprofileDesktop
- для Windows Server x86
C:WindowsSystem32configsystemprofileDesktop
Данное расположение папок указано для Office 2007. Для Office 2010 не зависимо от разрядности платформы необходимо создавать папку C:WindowsSystem32configsystemprofileDesktop (данный факт так же потратил не мало моего времени). В общем, если создали папку, а ошибки не исчезли, создайте вторую. Так же необходимо дать права на созданную папку пользователю USR1CV82. Практика показала, что достаточно прав, выдаваемых системой по умолчанию.
Источник: http://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64
После проделанных всех настроек на тестовом сервере фоновое задание наконец то прошло успешно.
Однако на рабочем сервере при подключение к Excel через COM меня ждало фиаско — задание просто зависало и завершить его можно было только перезапуском сервера 1С:Предприятия. Зависало в момент открытия файла (ФайлExcel = ExcelApp.Workbooks.Open(ИмяФайла);). Я так предполагаю, что при открытии Excel открывает какое-нибудь окно и ждет ответа пользователя. Но проверить не удалось, так как доступа к рабочему серверу у меня не было и все настройки по моей просьбе на нем производил админ.
В итоге все взелетело с использованием ADO и успешно работает.
Надеюсь, данная статья поможет кому-нибудь съэкономить время при реализации подобных задач.
p.s. Ну и забыл упомянуть, что у пользователя USR1CV82, естественно, должны быть права на обрабатываемые файлы Excel.
Добрый день! Дайте права пользователю 1cv83 на Microsoft Excel Application в Службах компонент.
Нажмите на “Пуск/Start”-> “Панель управления/Control Panel”
Далее “АдминистрированиеAdministrative Tools”-> “Службы компонентов/Component Services”
Откройте папку “Службы компонентов/ Component Services” и выберите “Настройка DCOM/DCOM Config”
Среди служб выберите “Microsoft Excel Application” и откройте его свойсва, вкладку “Безопасность/Security” и в разделе “Разрешения на запуск и активацию/Launch and Activation Permissions” настроить разрешения – выбрать “Настроить/Customize” и нажать “Изменить/Edit”.
Добавьте пользователя 1cv83 и нажмите “Применить/Apply” в свойствах безопасности компоненты.
Заключительным этапам будет создание папки с соответствующими правами пользователю 1cv83
C:WindowsSystem32configsystemprofileDesktop – для Microsoft Office 2010
C:WindowsSysWOW64configsystemprofileDesktop – для Microsoft Office 2007 (windows server x64)
C:WindowsSystem32configsystemprofileDesktop – для Microsoft Office 2007 (windows server x86)
Желаем удачи и скорейшего решения проблемы!