Ошибка получения объекта com 2147221020 0x800401e4

  

evorle145

18.09.15 — 15:39

Помогите, чет совсем в ступоре. База клиент-серверная.

&НаКлиенте

Процедура СоздатьПечатнуюФормуДоговора(Команда)

Макет = ПолучитьМакетСервер(); //серверная функция, записывает макет в файл и возвращает полное имя файла  

        Попытка        

            КомОбъект = ПолучитьCOMОбъект(Макет); //инициализируем COM-объект

        Исключение

            КомОбъект = 0;

            Сообщение = Новый СообщениеПользователю;

            Сообщение.Текст = ОписаниеОшибки();

            Сообщение.Сообщить();

            
        КонецПопытки;

Падает в исключение!

Функция ПолучитьМакетСервер(КомОбъект)

    Об = РеквизитФормыВЗначение(«Объект»);

    Макет = Об.ПолучитьМакет(«Макет»);  

    ИмяФайла = ПолучитьИмяВременногоФайла(«doc»);

    Макет.Записать(ИмяФайла);

        
    Возврат ИмяФайла;

    
КонецФункции

Где туплю, подскажите?

  

ВедущийП

1 — 18.09.15 — 15:41

Текст ошибки?

  

evorle145

2 — 18.09.15 — 15:42

{Справочник.ДоговорыКонтрагентов.Форма.ФормаЭлемента.Форма(1010)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221020(0x800401E4): Синтаксическая ошибка

  

evorle145

3 — 18.09.15 — 15:44

(1) , забыл уточнить, в файлом варианте все работает!

  

Записьдампа

4 — 18.09.15 — 15:45

(0) Файловые системы на клиенте и сервере — очень разные вещи. Начиная от расположения файлов и кончая правами доступа.

  

evorle145

5 — 18.09.15 — 15:47

(4) , понимаю. Но ведь тут сделано все вроде по инструкции как http://catalog.mista.ru/public/270277/ . Но com объект на клиенте создать не может…

  

ВедущийП

6 — 18.09.15 — 15:51

Windows 32 разрядный?

  

evorle145

7 — 18.09.15 — 15:52

(6) не, 64

  

Записьдампа

8 — 18.09.15 — 15:56

(5) Это к автору писульки на нимфостарте, плз. Ты сохраняешь файл по пути для сервера, а потом пытаешся читать его на клиенте. А это возможно только в файловой базе или в случае когда сервер запущен на той же машине.

  

evorle145

9 — 18.09.15 — 15:58

(8) , так а как же тогда? читать тоже на сервере что ли?

  

Записьдампа

10 — 18.09.15 — 16:03

(9) Передавать тушку файла, из которого ты создаешь комобъект, через временное хранилище.

  

Serginio1

11 — 18.09.15 — 16:03

Возвращай Двоичные Данные и записывай на клиенте в папки на которые есть разрешения в Ворде итд.

  

ВедущийП

12 — 18.09.15 — 16:06

(5) Сохраняй файл в общей папке, и отдавай путь типа serversharefail.doc

  

ВедущийП

13 — 18.09.15 — 16:09

Функция ПолучитьМакетСервер(КомОбъект)

    Об = РеквизитФормыВЗначение(«Объект»);

    Макет = Об.ПолучитьМакет(«Макет»);  

    ИмяФайла = ПолучитьИмяВременногоФайла(«doc»);

    СтрЗаменить(ИмяФайла, КаталогВременныхФайлов(), «servershare»);

Макет.Записать(ИмяФайла);

        
    Возврат ИмяФайла;

    
КонецФункции

  

ВедущийП

14 — 18.09.15 — 16:09

Ессесно надо добавить ИмяФайла=

ИмяФайла = СтрЗаменить(ИмяФайла, КаталогВременныхФайлов(), «servershare»);

  

ВедущийП

15 — 18.09.15 — 16:10

В папку должен доступ иметь пользователь под которым запущен сервер 1С

  

evorle145

16 — 18.09.15 — 16:11

(13) , то есть проблема в том , что на клиенте я не могу обратиться к файлу, у которого путь такой: C:UsersUSR1CV82AppDataLocalTemp  ?

  

evorle145

17 — 18.09.15 — 16:16

(11)  это то есть так делать:

&НаСервере

Функция ПолучитьМакетСервер(АдресФайлаВХранилище)

    Об = РеквизитФормыВЗначение(«Объект»);

    Макет = Об.ПолучитьМакет(«Макет»);  

    ИмяФайла = ПолучитьИмяВременногоФайла(«doc»);

    Макет.Записать(ИмяФайла);

    ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);

    АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);

    Возврат ИмяФайла;

КонецФункции

И потом на клиенте

ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВХранилище );

ДвоичныеДанные.Записать(ПолучитьИмяВременногоФайла(«doc»));

  

ВедущийП

18 — 18.09.15 — 16:23

(16) Путь к файлу, который находится на сервере. А ты или не на сервере, или,  если на сервере, у тебя нет доступа к папке пользователя, под которым запущен сервер 1с.

  

evorle145

19 — 18.09.15 — 16:27

(18) , да, доступа нет, совершенно верно. Сейчас буду делать как вы сказали. Только хотел бы еще просить взглянуть на (17), что я не так тут сделал, что опять валится в исключение, вот сам код:

Макет = ПолучитьМакетСервер(АдресФайлаВХранилище); //серверная функция, записывает макет в файл и возвращает полное имя файла  

        ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВХранилище );

        ИмяФ = ПолучитьИмяВременногоФайла(«doc»);

        ДвоичныеДанные.Записать(ИмяФ);

        Попытка        

            КомОбъект = ПолучитьCOMОбъект(ИмяФ); //инициализируем COM-объект

        Исключение

            КомОбъект = 0;

            Сообщение = Новый СообщениеПользователю;

            Сообщение.Текст = ОписаниеОшибки();

            Сообщение.Сообщить();

            
        КонецПопытки;

  

evorle145

20 — 18.09.15 — 16:28

В функцию добавил помещение во временное хранилище:

Функция ПолучитьМакетСервер(АдресФайлаВХранилище)

    Об = РеквизитФормыВЗначение(«Объект»);

    Макет = Об.ПолучитьМакет(«Макет»);  

    ИмяФайла = ПолучитьИмяВременногоФайла(«doc»);

    Макет.Записать(ИмяФайла);

    ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);

    АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);

    
    Возврат ИмяФайла;

    
КонецФункции

  

Serginio1

21 — 18.09.15 — 16:43

(17) А разве нельзя просто

ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);

      Возврат ДвоичныеДанные ;

  

evorle145

22 — 18.09.15 — 16:46

(21) Может быть и так тоже работает! Прошу меня просить, код в (19)-(20) полностью рабочий!! Спасибо больше Serginio1 и ВедущийП  за помощь! Воспользовался советом в (11)

  

Serginio1

23 — 18.09.15 — 16:52

Помогите, чет совсем в ступоре. База клиент-серверная. &НаКлиенте Где туплю, подскажите?

{Справочник.ДоговорыКонтрагентов.Форма.ФормаЭлемента.Форма(1010)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221020(0x800401E4): Синтаксическая ошибка

, забыл уточнить, в файлом варианте все работает!

Файловые системы на клиенте и сервере — очень разные вещи. Начиная от расположения файлов и кончая правами доступа.

, понимаю. Но ведь тут сделано все вроде по инструкции как . Но com объект на клиенте создать не может…

Это к автору писульки на нимфостарте, плз. Ты сохраняешь файл по пути для сервера, а потом пытаешся читать его на клиенте. А это возможно только в файловой базе или в случае когда сервер запущен на той же машине.

, так а как же тогда? читать тоже на сервере что ли?

Передавать тушку файла, из которого ты создаешь комобъект, через временное хранилище.

Возвращай Двоичные Данные и записывай на клиенте в папки на которые есть разрешения в Ворде итд.

Сохраняй файл в общей папке, и отдавай путь типа serversharefail.doc

Ессесно надо добавить ИмяФайла= ИмяФайла = СтрЗаменить(ИмяФайла, КаталогВременныхФайлов, «servershare»);

В папку должен доступ иметь пользователь под которым запущен сервер 1С

, то есть проблема в том , что на клиенте я не могу обратиться к файлу, у которого путь такой: C:UsersUSR1CV82AppDataLocalTemp  ?

это то есть так делать: И потом на клиенте ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВХранилище ); ДвоичныеДанные.Записать(ПолучитьИмяВременногоФайла(«doc»));

Путь к файлу, который находится на сервере. А ты или не на сервере, или,  если на сервере, у тебя нет доступа к папке пользователя, под которым запущен сервер 1с.

, да, доступа нет, совершенно верно. Сейчас буду делать как вы сказали. Только хотел бы еще просить взглянуть на , что я не так тут сделал, что опять валится в исключение, вот сам код:

В функцию добавил помещение во временное хранилище:

Может быть и так тоже работает! Прошу меня просить, код в — полностью рабочий!! Спасибо больше Serginio1 и ВедущийП  за помощь! Воспользовался советом в

Тэги:

Комментарии доступны только авторизированным пользователям

Доброго времени суток! Уважаемые форумчане .
Беда, просто беда. Записываю скрип и потом пытаюсь его запустить встроив в макрос на VBA. При запуске в локальной сети всё работает. Но при удаленном подключении ч/з Инет… . Не определяется активное окно САП. выводится сообщение «Run-time error ‘-2147221020 (800401e4) Automation error invalid syntax».
В этом сегменте кода.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
If Not IsObject(Application1) Then
    Set SapGuiAuto = GetObject("SAPGUI")
    Set Application1 = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
   Set Connection = Application1.Children(0)
End If
If Not IsObject(session) Then
   Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session, "on"
   WScript.ConnectObject Application1, "on"
End If

Отдельно записанный скрипт запускается.
Собственно вопрос. Как запустить его из макроса в Excel, в случае запуска удаленно, через интернет?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Модератор: Дмитрий Юхтимовский

Ошибка получения объекта COM

При запуске тестов TPC-1C и G1C появляется следующая ошибка.
{ОбщийМодуль.Глобальный(51)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект)
по причине:
Ошибка получения объекта COM: COM-объекты поддерживается только в операционных системах Windows

Сервер 1С — линукс, сервер баз аналогично, клиент запущен на сервере терминалов.
Подскажите, пожалуйста, в чем проблема.

selfin
 
Сообщений: 1
Зарегистрирован: 21 мар 2014, 08:11


Re: Ошибка получения объекта COM

Сообщение fwhr » 22 мар 2014, 15:20

с COM ушла ошибка, а с этой можно как-то побороться, или до следующей обновы ждать?

Код: выделить все
{Обработка.TCP_1C_GILV.Форма.Форма(458)}: Значение не является значением объектного типа (ПроцессорНаименование)
   ПроцессорНаименование      = ФизическиеПараметры.ПроцессорНаименование;
fwhr
 
Сообщений: 2
Зарегистрирован: 22 мар 2014, 13:33

Re: Ошибка получения объекта COM

Сообщение ssavel » 24 мар 2014, 17:21

fwhr писал(а):с COM ушла ошибка, а с этой можно как-то побороться, или до следующей обновы ждать?

Код: выделить все
{Обработка.TCP_1C_GILV.Форма.Форма(458)}: Значение не является значением объектного типа (ПроцессорНаименование)
   ПроцессорНаименование      = ФизическиеПараметры.ПроцессорНаименование;

Прошу загрузить кандидат на новую версию теста по ссылке

ftp://isinka.gilev.ru/GILV_TPC_G1C.dt

(пользователь g1c, пароль g1c)
и сообщить, сохраняется ли ошибка.

ssavel
 
Сообщений: 7
Зарегистрирован: 21 мар 2014, 15:30

Re: Ошибка получения объекта COM

Сообщение fwhr » 24 мар 2014, 17:54

Загрузил, версия в Справка — О программе отображается как 2.0.2.7
Стартует без ошибок. Оба теста выполняются. Спасибо.

ЗЫ: По тесту рекомендуемое кол-во пользователей: 231. «Мои» 30-50 юзеров могут быть спокойны? ;)

fwhr
 
Сообщений: 2
Зарегистрирован: 22 мар 2014, 13:33



Вернуться в Нагрузочное тестирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Зачем так сложно?

ТабличныйДокумент (SpreadsheetDocument)

Прочитать (Read)

Вариант синтаксиса: Из файла

Синтаксис:

Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>)

Параметры:

<ИмяФайла> (обязательный)

Тип: Строка.

Имя файла табличного документа.

<СпособЧтенияЗначений> (необязательный)

Тип: СпособЧтенияЗначенийТабличногоДокумента.

Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS, XLSX или ODS.

При загрузке табличного документа из формата Excel 97 — 2010 и OpenOffice Calc, в случае если в ячейке исходного документа содержалось значение типа Дата или Число, то в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра.

Значение по умолчанию: Текст.

Описание варианта метода:

Чтение табличного документа из файла.

Описание:

Считывает табличный документ из файла.

Позволяет считывать табличный документ из файла табличного документа Microsoft Excel 97 — 2010 ( *.xls и *.xlsx) или электронной таблицы OpenOffice Calc ( *.ods).

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Пример:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Прочитать(«C:My DocumentsТаблица1.mxl»);

Использование в версии:

Студворк — интернет-сервис помощи студентам

Добрый день.

Написал обработку для загрузки данных из xls документа в УТ11.
На моем компьютере она работает. Но на сервере клиента выдает ошибку: «Ошибка получения объекта COM: -2147221021(0x800401E3): Операция недоступна». Я сначала подумал, что это из за того что на сервере база на SQL,
но на сервере и в файловых базах выдает такую же ошибку.
ПО моего компьютера: Win 8.1 x64, MS Office 2010.
Сервер клиента: Win Server 2008R2 Enterprise x64, MS Office 2010.

Подскажите пожалуйста, что можно предпринять для решения данной проблемы?

so I made a handful of macros on SAP GUI 7.30 a few months ago, but my company recently required everyone to update to SAP GUI 7.40. None of my macros working anymore as it is having some sort of issue connecting to the SAPGUI.

Up until now I have used this code to connect excel to SAP

Set SapGuiAuto = GetObject("SAPGUI")  'Get the SAP GUI Scripting object
  Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI
  Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
  Set session = SAPCon.Children(0) 'Get the first session (window) on that connection

But now I am receiving error : ‘-2147221020 (800401e4)’ after the first line
Which is an Automation error and invalid syntax.

Does anyone know how I can update my sheets to fix this issue?

Sandra Rossi's user avatar

Sandra Rossi

11.7k4 gold badges22 silver badges46 bronze badges

asked Jun 20, 2018 at 17:02

Jordan's user avatar

1

Okay upon reinstalling SAP I was given both the standard SAP logon pad and the newer SAP business client. The interface looked different in the business client but still contained script recording. I recorded and noticed that

Set SapGuiAuto = GetObject("SAPGUI")

was now

Set SapGuiAuto = GetObject("SAPGUISERVER")

This reconnected me to SAP correctly as it did before I upgraded from 7.3 to 7.4. It still will not connect if I use the logon pad for some reason but this is better than nothing. Basically the same, just a different look.

answered Jul 2, 2018 at 15:10

Jordan's user avatar

JordanJordan

3634 silver badges23 bronze badges

  1. Приветствую.

    Столкнулся с проблемой:
    Создал обработку, которая запускает Excel, читает файл, заполняет его и записывает.
    На клиенте все великолепно выполняется.
    Создал регламентное задание, которое запускает в определенное время это на сервере.
    При выполнении на сервере вылезает ошибка про то, что типа MS Excel не удалось получить доступ к файлу. При этом доподлинно известно, что ком. объект Excel даже не создался (нет его в процессах диспетчера задач).
    Примечательно, что если запустить обработку клиентом с машины, где установлен сервер 1С, то все выполняется.

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

    Чувствую, что дело тут в том, что при работе с клиента Excel запускается из-под пользователя в реальном сеансе, а в случае сервера — под пользователем хоть и с полными правами, но без запущенного сеанса.

    Сервер Windows Server 2008 R2 Standart. Service Pack 1
    Как это обойти?


  2. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    1) Файл D:DstOrder.xls действительно существует на сервере?
    2) У пользователя под которым запущен сервер есть право доступа к каталогу D:Dst?

  3. 1. Да, файл существует. Обработка при запуске на этом же сервере из-под клиента выполняется без проблем.
    2. Доступ есть. Пользователь — администратор. Пробовал файл в разные папки класть.

    — Объединение сообщений, 15 авг 2014

    Полный текст ошибки. Ошибка от имени Microsoft Excel, однако процесса EXCEL в диспетчере задач нет!

    Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «D:DstOrder.xls». Это может быть вызвано одной из следующих причин.

    • Указан несуществующий файл или путь.
    • Файл используется другой программой.
    • Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.

    — Объединение сообщений, 15 авг 2014

    8.3.4.496

    Последнее редактирование: 15 авг 2014

  4. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Т.е. сервер (ragent.exe и т.д.) стартует от имени Администратора? Или все же от USR1CV82 (не знаю как там по умолчанию под 8.3 пользователь называется).

  5. У меня пользователь USR1CV81 со старых времен. Он входит в группу Администраторы.

    Сейчас провел эксперимент. Зашел на сервер от имени этого пользователя и в клиенте запустил обработку — без проблем.

  6. Попробовал вместо COMОбъект использовать ПолучитьCOMОбъект. Вот результат

    Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221021(0x800401E3): Операция недоступна


  7. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104


  8. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104


  9. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104


    likalim и Mark768 нравится это.
  10. Спасибо тебе, добрый человек. Сам бы не допер…


  11. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Да не за что.
    Не совсем я это, разум это коллективный.. :)

  12. Небольшое уточнение:
    При выборе «Текущий пользователь», обработка на сервере запускает Excel только в том случае, если на сервер выполнил вход кто-нибудь из пользователей.
    Если это условие не выполняется, то получаем ошибку:

    Ошибка при вызове конструктора (COMОбъект): -2147467262(0x80004002): Интерфейс не поддерживается

    На вкладке «Удостоверения» есть 3-й вариант запуска — указать конкретного пользователя и пароль.
    Я указал пользователя, от имени которого работает сервер 1С (USR1CV81).
    В таком варианте обработка запускает Excel при отсутствии работающих пользователей на сервере.
    Это меня устраивает.

    В моем случае не бывает работающих пользователей на сервере и тем более, запускающих Excel
    Могу предположить, что при запуске Excel любым пользователем (не USR1CV81) могут возникнуть проблемы.
    Например, Excel запускается и работает, однако при старте выдает «Невозможно использовать связывание и внедрение объектов».

  13. Приветствую.

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


  14. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Переустанавливать эксель пробовали ?

  15. Да, уже несколько раз и разные версии.
    Вычитал в сети, что если нет ветки явно, то нужно в реестре найти его наименование в виде кода. В реестре нашел, но его кода в Настройка DCOM тоже нет.


  16. Ardak

    Offline

    Ardak

    Регистрация:
    21 дек 2015
    Сообщения:
    1
    Симпатии:
    1
    Баллы:
    1

    Вдруг кому понадобится
    Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.


  17. limus80

    Offline

    limus80

    Регистрация:
    30 май 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

    важное как мне кажется дополнение
    ко всему вышесказанному надо добавить учетке права входа в качестве сервиса на компьютер
    без этого у меня не работало на W2K12R2


  18. Gucci76

    Offline

    Gucci76
    Опытный в 1С

    Регистрация:
    9 мар 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26

    Здравствуйте.
    У меня похожая проблема, но только с ВОРДом
    В файловом варианте я могу Новый COMОбъект(«Word.Application»), а в клиент-серверном нет.
    Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM тут НЕ нашел ворда (открывал через команду «mmc comexp.msc /32»).


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

Понравилась статья? Поделить с друзьями:
  • Ошибка получения обработки обслуживания при открытии смены 1с
  • Ошибка получения обработки обслуживания при закрытии смены 1с
  • Ошибка подключения к серверу apple id что делать
  • Ошибка подключения к серверу apple id при сбросе
  • Ошибка подключения к серверу 651