Excel workbooks open 1c ошибка

Nikoly
16.07.2011 15:31 Прочитано: 22065

При работе на сервере, регламентного задания, обработка открывает через Excel = Новый COMОбъект(«Excel.Application»); Excel.Application.Workbooks.Open(ИмяФайла) документ, мне выдается ошибка:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1СНовыйДокумент.xls’. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
Если запускаю обработку не в регламентном задании, то все выполняется без ошибок. Подскажите что это за ошибка и как мне читать данные из Excel в регламентном задании?


Изменено 16.07.11 15:32:46 по причине: Другая категория

Yandex
Возможно, вас также заинтересует

Реклама на портале

Nikoly
19.07.2011 18:27 Ответ № 1

http://forum.mista.ru/topic.php?id=522217
Создать папку C:WindowsSysWOW64configsystemprofileDesktop и C:WindowsSystem32configsystemprofileDesktop (в зависимости от разрядности вашей системы)

Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
   my_espe

23.12.14 — 13:09

Добрый день!

Прошу помощи. 1С в серверном исполнении не может прочитать excel.

Запускаю под клиентом (на сервере 1С) код работает, на сервере нет.

Что делал:

1. Права на DCOM (раньше при создании ком-объекта ругался)

2. Создал папки Desctop (права выдал)

Есть ещё идеи?

   Asmody

1 — 23.12.14 — 13:12

офис на сервере стоит?

   dk

2 — 23.12.14 — 13:12

путь тоже сетевой указываешь? ))

   Euguln

3 — 23.12.14 — 13:12

(0) Excel то сам на сервере есть?

   my_espe

4 — 23.12.14 — 13:12

Excel — стоит

   my_espe

5 — 23.12.14 — 13:13

Клиент на серверной машине запускаю, всё работает…

   dk

6 — 23.12.14 — 13:17

путь до открываемого файла какой?

   my_espe

7 — 23.12.14 — 13:22

C:exchange1CzpTemp

   Vladal

8 — 23.12.14 — 13:23

(7) Этот диск Цэ наверно на сервере должен быть? И в нем папка обмена. Так?

И еще — сервер 1С в кластере из одной машины или нескольких? Если несколько то на каждой машине создать папку с таким же именем.

   Vladal

9 — 23.12.14 — 13:24

Может ли быть такое, то сервер 1Сна линуксовой машине?

   dk

10 — 23.12.14 — 13:24

у сервера свой диск C:

   Vladal

11 — 23.12.14 — 13:25

(10) Не факт. Он может быть и D: и вообще любой другой буквой в винде.

   dk

12 — 23.12.14 — 13:27

(9) на линухе «C:» ? )

(11) мимо

   my_espe

13 — 23.12.14 — 13:28

Клиента прямо на сервере открываю, он отрабатывает.

С путями все верно.

Сервер не находится в кластере, работает по Win64.

   my_espe

14 — 23.12.14 — 13:29

Другие файлы читаются (не exсel)

   my_espe

15 — 23.12.14 — 13:29

Более того, происходит копирование файлов (excel) тоже работает.

   Vladal

16 — 23.12.14 — 13:30

(13) То ты открываешь клиента, а «серверная» часть работает на машине, на которой стоит «сервер 1С». Вот на этой машине и надо проверить, существует ли папка c:exchange…

   Vladal

17 — 23.12.14 — 13:31

   my_espe

18 — 23.12.14 — 13:32

Я клиента открываю на той машине, где стоит сервер 1С.

   RomaH

19 — 23.12.14 — 13:33

(16) блин, вот почему вы не читаете — автор же пишет — КЛИЕНТ запущен на той же машине что и СЕРВЕР

   Vladal

20 — 23.12.14 — 13:35

(19) Сервер 1С, сервер SQL, сервер терминальный? Какой?

   dk

21 — 23.12.14 — 13:35

значит права на файл

   my_espe

22 — 23.12.14 — 13:37

(17) Спасибо, но читал. До того как создать тему. Продвинулся на одну строчку. С создания Com объекта до открытия.

(21) Права на файл есть, программа сначала копирует файл, потом читает.

   RomaH

23 — 23.12.14 — 13:38

(20) все в одном — все на одной машине, чего не понятного

и сервер SQL как в таком случае может влиять?

и при чем тут терминальный сервер?

   RomaH

24 — 23.12.14 — 13:39

(22) код покажи — что значит копирует, а потом читает?

   my_espe

25 — 23.12.14 — 13:41

КопироватьФайл(Файл.ПолноеИмя, Файл.Путь + «temp» + мИмяКопииФайла);

Период = Дата(Параметры.Год, Параметры.Месяц, 1);

мАС = мзИмпорт.ПолучитьАС();

КОМ = Новый COMОбъект(«excel.application»);

РК=КОМ.Workbooks.Open(Файл.Путь + «temp» + ИмяКопииФайла);

   my_espe

26 — 23.12.14 — 13:42

Сейчас падает на 5 строке, раньше на 4.

Стоит Excel 2010 x64 — может другой Excel нужно?

   zva

27 — 23.12.14 — 13:42

(0) Так папку Desctop или Desktop создал?

   zulu_mix

28 — 23.12.14 — 13:43

КопироватьФайл(Файл.ПолноеИмя, Файл.Путь + «temp» + мИмяКопииФайла);

Период = Дата(Параметры.Год, Параметры.Месяц, 1);

мАС = мзИмпорт.ПолучитьАС();

РК=ПолучитьCOMОбъект(Файл.Путь + «temp» + ИмяКопииФайла);

   vicof

29 — 23.12.14 — 13:43

мИмяКопииФайла и ИмяКопииФайла чем отличаются?

   my_espe

30 — 23.12.14 — 13:43

C:WindowsSysWOW64configsystemprofileDesktop

   my_espe

31 — 23.12.14 — 13:43

Такую

   User_Agronom

32 — 23.12.14 — 13:44

(0) Какую пишет ошибку?

   RomaH

33 — 23.12.14 — 13:44

http://bytes.com/topic/c-sharp/answers/819740-c-service-excel-application-workbooks-open-fails-when-called-service

To resolve this issue follow these steps

1. Login to the server as a administrator.

2. Go to «Start» -> «Run» and enter «taskmgr»

3. Go to the process tab in task manager and check «Show Processes from all users»

4. If there are any «Excel.exe» entries on the list, right click on the entry and select «End Process»

5. Close task manager.

6. Go to «Start» -> «Run» and enter «services.msc»

7. Stop the service automating Excel if it is running.

8. Go to «Start» -> «Run» and enter «dcomcnfg»

9. This will bring up the component services window, expand out «Console Root» -> «Computers» -> «DCOM Config»

10. Find «Microsoft Excel Application» in the list of components.

11. Right click on the entry and select «Properties»

12. Go to the «Identity» tab on the properties dialog.

13. Select «The interactive user.»

14. Click the «OK» button.

15. Switch to the services console

16. Start the service automating Excel

17. Test you application again.

точно сделал?

   my_espe

34 — 23.12.14 — 13:45

Там:     РК=КОМ.Workbooks.Open(Файл.Путь + «temp» + мИмяКопииФайла); — когда код копировал букву в сообщении удалил

   sapphire

35 — 23.12.14 — 13:48

(30) почти диагноз

   my_espe

36 — 23.12.14 — 13:50

(33) — Служба automating Excel — не вижу такой…

   my_espe

37 — 23.12.14 — 13:51

(33) COM+ есть — оно?

   my_espe

38 — 23.12.14 — 14:27

По ходу вопрос снят. Установил Excel 2010 x32 — и работает…

   Vladal

39 — 23.12.14 — 15:32

(23) О трехзвенной структуре слышал?

А у меня трехзвенка — сервер SQL, сервер кластеров 1С и сервер терминалов разные машины.

   Garykom

40 — 23.12.14 — 15:39

(38) сервер 1С x32 ?

   Vladal

41 — 23.12.14 — 15:44

(38) Значит при переустановке заново прописался ком-объект эксель.

   vde69

42 — 23.12.14 — 15:45

нужен файловый доступ к файлам шаблонов и темпов екселя

   my_espe

43 — 24.12.14 — 06:08

(39) — конечно, но у нас 1С и SQL на одном

   my_espe

44 — 24.12.14 — 06:09

(42) Не подскажешь где эти каталоги?

   my_espe

45 — 24.12.14 — 06:19

(23) даже если так, то выполнение происходит на сервере 1С

   my_espe

46 — 24.12.14 — 06:28

И всё-таки 32 excel помог…

   my_espe

47 — 24.12.14 — 06:45

(42) — этап создания com объекта был пройден до этого. После установки прав на excel.application

  

my_espe

48 — 24.12.14 — 06:45

* (41)

Добрый день! Дайте права пользователю 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)

Желаем удачи и скорейшего решения проблемы!

Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.WorkBooks.Open("D:DstOrder.xls");

Можем попасть на ошибку открытия, а лечится это так:

на сервере убиваем excel (taskkill /im excel.exe /f)
открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем «Текущий пользователь», ОК.
Готово

Или еще создаем каталог в системной папке:

Please make this folder.

C:WindowsSysWOW64configsystemprofileDesktop

  1. Доброе время суток.
    Проблема заключается в следующем внешняя обработка загрузки из Эксель на личном компьютере работает нормально, но на РДП выдает ошибку «ошибка при вызове метода контекста (open)» там и там база файловая.Переделал все что нашел в инете
    — создал папку C:WindowsSysWOW64configsystemprofileDesktop ;
    — Настройки DCOM добавил пользователя;
    — И проделал «А решается это так:
    на сервере убиваем excel (taskkill /im excel.exe /f)
    открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
    в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
    справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем «Текущий пользователь», ОК.
    Готово»
    И все равно выскакиваю по ошибке.
    Есть у кого то предложение что можно сделать еще.


  2. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    покпжите текст ошибки полностью.
    из всего там нужно только последнее действие.

    что будет, если интерактивно запустить эксель и открыть этот же файл?

  3. {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (Open)
    КНИГА = Excel.WorkBooks.Open(ИмяФайла);
    по причине:
    Неизвестная ошибка

  4. Запустил интерактивно и все равно ошибка
    Опечатки нет пере набрал Open раз 10


  5. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    при интерактивном открытии файла, что говорит?

  6. Доброго,
    Клиент какой запускается на RDP, 32/64 бит ?

  7. Добрый день.При интерактивном открытии ничего не пишет.
    RDP клиент запускается 64 и офис 64

  8. Похожая проблема вылечилась использованием 32 битного клиента (мы можем это себе позволить),
    еще, как вариант, я делал через формирование файла на сервере и передачу его на клиента
    С.П.- : «ПоместитьВоВременноеХранилище», «ПолучитьФайлы», «ОписаниеПередаваемогоФайла»
    1.На сервере получаю макет, передаю его на клиента через «ПоместитьВоВременноеХранилище»/»ПолучитьФайлы»
    2. На клиенте формируется документ через COM : «Новый COMОбъект(«Word.Application»)»
    3. На клиенте заполняется макет, тем или иным способом


  9. ExtreMe

    Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    мой набор: win8.1 64x, Excel 2016 64х, 1c 8.3.13.1513 64х и текст обработки

        Путь    = Объект.ИмяФайла; // тип Строка
    
        Попытка
            ОбъектExcel = Новый COMОбъект("Excel.Application");
        Исключение
            Возврат "Ошибка открытия MS Excel";
        КонецПопытки;
    
        Попытка
            ОбъектExcel.WorkBooks.Open(Путь);
        Исключение
            ОбъектExcel.DisplayAlerts = 0;
            ОбъектExcel.Quit();
            ОбъектExcel.DisplayAlerts = 1;
            ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
            Возврат ОписаниеОшибки;
        КонецПопытки;
    

    проверил Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM->Microsoft Excel Application->Свойства->Удостоверение
    Выбран «Текущий пользователь»

    Создал папку Desktop по обоим путям C:WindowsSysWOW64configsystemprofileDesktop и C:WindowsSystem32configsystemprofileDesktop

    И хренасдва. всё равно выдаёт ошибку на стройке ОбъектExcel.WorkBooks.Open(Путь); и уходит в исключение :(

    {ВнешняяОбработка.ЗагрузкаИзExcel.Форма.Форма.Форма(53)}: Ошибка при вызове метода контекста (Open)
            ОбъектExcel.WorkBooks.Open(Путь);
    по причине:
    Неизвестная ошибка
    

    — Объединение сообщений, 17 янв 2019

    попробовал под 1c 8.3.13.1513 86х, то же самое
    после каждого запуска обработки в диспетчере остаётся висеть процесс Excel’я, я его каждый раз завершаю

    Последнее редактирование: 17 янв 2019

  10. ExtreMe

    Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    одинаковая ситуация с тонким и толстым клиентом


  11. ExtreMe

    Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    пока решение нашёл в таком варианте:
    открыть файл Excel
    сделать поправки в коде

        Путь    = Объект.ИмяФайла; 
       
        Попытка
            //ОбъектExcel = Новый COMОбъект("Excel.Application");
            ОбъектExcel = ПолучитьCOMОбъект(, "Excel.Application");
        Исключение
            ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
            Возврат ОписаниеОшибки;
        КонецПопытки;
       
        //Попытка
        //    ОбъектExcel.WorkBooks.Open(Путь);
        //Исключение
        //    ОбъектExcel.DisplayAlerts = 0; 
        //    ОбъектExcel.Quit();
        //    ОбъектExcel.DisplayAlerts = 1;
        //    ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
        //    Возврат ОписаниеОшибки;
        //КонецПопытки;
    

    так открытый файл подхватываться и нормально все работает, но хотелось ты без этих танцев с бубном…

    — Объединение сообщений, 17 янв 2019

    не совсем понял настройки безопасности
    Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM->Microsoft Excel Application->Свойства->Безопасность
    добавляя там пользователя, у меня то проходило чтение то нет
    стабильной работы обработки при первом варианте кода не дало

    Последнее редактирование: 17 янв 2019

  12. ExtreMe

    Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    Последнее редактирование: 20 янв 2019

  13. evgkup

    Offline

    evgkup

    Регистрация:
    9 авг 2019
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1

    Была аналогичная проблема на сервере
    Помогло следующее (отображение открывающегося приложения excel)
    Попытка
    лпИмяФайла = «c:tmp1.xls»;
    лпExcel = Новый COMОбъект(«Excel.Application»);
    лпExcel.Visible = 1;
    лпExcel.DisplayAlerts = 0;
    лпExcel.WorkBooks.Open(лпИмяФайла);
    Исключение
    лпExcel.Quit();
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    …набор действий

    Последнее редактирование: 9 авг 2019


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

  • Excel vba код ошибки 1004
  • Excel ole ошибка на сервере
  • Excel exe системная ошибка
  • Excel exe ошибка при запуске приложения 0xc0000142
  • Excel exe ошибка при запуске приложения 0xc000007b