Меню

Ошибка получения объекта 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

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

Ошибка получения объекта 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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка получения рут прав
  • Ошибка пользовательского баланса белого