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

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

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

{Справочник.ДоговорыКонтрагентов.Форма.ФормаЭлемента.Форма(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, в случае запуска удаленно, через интернет?

  1. 01-01-2020, 05:29 PM

    #1

    MagnusNovak is offline


    Forum Contributor


    Run-time Error on Mac — -2147221020 (800401e4)

    Hi,

    I have an excel file that works fine on Windows (I use Windows 10) but not on Mac. After opening the file on mac and clicking on «Enable Macros», I obtain the following error message:

    Microsoft Visual Basic
    Run-time error ‘-2147221020 (800401e4)’ :
    Automation error

    I understand this probably comes from the VBA included in my spreadsheet but how can I identify precisely the piece of code that is not working on Mac? (I have limited VBA code in my spreadsheet overall)

    Thank you


  2. 01-02-2020, 04:25 AM

    #2

    Re: Run-time Error on Mac — -2147221020 (800401e4)

    I know that on windows you can step through the code using the F8 key. There should be an equivalent on Mac. See the VBA Editor menus


  3. 01-02-2020, 09:20 PM

    #3

    MagnusNovak is offline


    Forum Contributor


    Re: Run-time Error on Mac — -2147221020 (800401e4)

    Thank you Pepe. I’ve managed to identify the VBA function that creates the issue. To resolve the issue, I tried to add the code between an «If Mac then … Else….» condition but it still generates the error message on mac. Am I missing something here? I thought that by using this If format, excel would not run the macro on mac computers and the error message would disappear. Doesn’t it work like that?

    Thanks


  4. 01-02-2020, 10:28 PM

    #4

    MagnusNovak is offline


    Forum Contributor


    Re: Run-time Error on Mac — -2147221020 (800401e4)

    My bad, I found my mistake, I didn’t realize the If Mac needed to start with #


  5. 01-03-2020, 03:23 AM

    #5

    Re: Run-time Error on Mac — -2147221020 (800401e4)

    Based on your last post it seems that you are satisfied with the solution(s) you’ve received but you haven’t marked your thread as SOLVED. If your problem has not been solved you can use Thread Tools (located above your first post) and choose «Mark this thread as unsolved».
    Thanks.

    Also, as a relatively new member of the forum, you may not be aware that you can thank those who have helped you by clicking the small star icon located in the lower left corner of the post in which the help was given. By doing so you can add to the reputation(s) of those who helped.


Dietmar

  • #1

Hi all,
I install Cenatek Ramdisk 1.9 on a harddrive with XPeSP2, and when I RUN
it, I get this error:

Run-time error ‘-2147221020 (800401e4)’
Automation error
Invalid syntax

I think the term in the parentesis is due to an error in VB script or to
the missing Java VM. Unfortuanetly I cant use InCtrl5 because the
installation is automated using *.msi.

Please help
Dietmar

Advertisements

KM

  • #2

Dietmar,

Hi all,
I install Cenatek Ramdisk 1.9 on a harddrive with XPeSP2, and when I RUN
it, I get this error:

What exactly did you run? Did you just try the driver itself? The driver should work as it should have very minimum dependencies.

Run-time error ‘-2147221020 (800401e4)’
Automation error
Invalid syntax

http://www.computerperformance.co.uk/Logon/code/code_800401E4.htm

Although I think you are missing some dependencies of the app you are trying to run. Did you check it with DependencyWalker?

How about Regmon/FileMon (www.sysinternals.com)?

I think the term in the parentesis is due to an error in VB script or to
the missing Java VM. Unfortuanetly I cant use InCtrl5 because the
installation is automated using *.msi.

Why can’t you?
Btw, I’d recommend you to use a tool like RegSnap (search Google for it). It will give you more appropriate output (a .reg file).

KM

Dietmar

  • #3

Hi Konstantin,
DependencyWalker shows me in XPE 4 files, that are missed:

inetcom.dll
mobsync.dll
msjava.dll
w32topL.dll

Do You know, which Component from the database this is?
I make a try to copy them myself.

Thanks
Dietmar

Slobodan Brcin (eMVP)

  • #4

Hi Dietmar,

You have a filter option in TD that will give you an option for searching for components that contain specific file.

Regards,
Slobodan

PS:
At least one of these files in not a part of XPe/ XPP.

Dietmar

  • #5

Thanks Slobodan,
there is no Java in XPe.

I take another Ramdisk,
RamdiskXPPro Vers. 6.0.0.1
an OLDER version by www.superspeed.com

This works great, 2GByte Ramdisk.
Now I build an SDI image (near to XPPRO, but only 501MB XPe on NTFS
compressed)in Ram with an extra Ramdisk installed as drive T.
Hope, all will work.

Dietmar

KM

  • #6

Dietmar,

As Slobodan mentioned, you may want to make use of the TD Filters feature.

Anyway, fromthe files you meantion only the mobsync.dll belongs to «Offline Browsing for Internet Explorer» component, and the
w32topl.dll is «Primitive: W32topl».
Others are not part of XPe/SP1 database/repository (and not part of XP Pro standard).

KM

Advertisements

Slobodan Brcin (eMVP)

  • #7

Hi Dietmar,

I think that I forgot what you wanted to do in the first place.
I guess that you gave up on ramboot solution since you have created few different threads since the original post.

If you are still trying to make third party ramboot to work, then you probably know something about this problem that I do not know.
Please can you share with us how you are going to do this step by step?

Take assumption that we all know how to put 700 MB image in SDI file and what now.
How do you configure your XPe, ramdisk, procedures, procedures…..

with an extra Ramdisk installed as drive T.
Hope, all will work.

Hope is always a good thing :) Although T: as boot volume letter sounds as that you exactly know what you are doing and that you
want it for some obscure reason that way. Or second choice is that you are not aware why this will not work.

Option 1 is legal since I have used Z: as boot drive letter, but I just want to be sure that you are on right way.

Anyhow good luck, I have seen stranger things to work and much simpler not to work so everything is possible with XPe :)

Slobodan

Guest

  • #8

Hi Slobodan,
I learned so much about XPe in the last few days.
That is a wonderful OP, but it offers you all the
chances (of unallowded?,I hope not) things to do that you dont have in
XPPro. I boot an REAL XPPro dressed up as XPe in SDI clothes (hihi)to RAM
but it was not stable.
The first attempt with syslinux does not work.
I will write Remi Lefevre an EMail. In his tutorial he said, that it works
with SDI version 1.0.
I tried with version 1.0 and version 2.0 (XPeSP2)but it
doesnt work all all. I am sure, that is not my default.
I will write a Tutorial, when I am ready.
Perhaps about those things, that are possible, Microsoft
dont will make a Longhorn Embedded. That would be very sad.

Dietmar

Slobodan Brcin (eMVP)

  • #9

Hi Dietmar,

I learned so much about XPe in the last few days.
That is a wonderful OP, but it offers you all the
chances (of unallowded?,I hope not) things to do that you dont have in
XPPro. I boot an REAL XPPro dressed up as XPe in SDI clothes (hihi)to RAM
but it was not stable.

Not stable. As in it work few minutes then it crashes? Congratulations if you made it up to desktop at least once. (Not by using
some virtual machine)

The first attempt with syslinux does not work.
I will write Remi Lefevre an EMail. In his tutorial he said, that it works
with SDI version 1.0.
I tried with version 1.0 and version 2.0 (XPeSP2)but it
doesnt work all all. I am sure, that is not my default.

Huh. Why do you use Linux? And what exactly do you use. How?

I will write a Tutorial, when I am ready.
Perhaps about those things, that are possible, Microsoft
dont will make a Longhorn Embedded. That would be very sad.

Did not understand you about Longhorn part of question :-(
Microsoft dedicated almost all resources in making LHe.

Regards,
Slobodan

KM

  • #10

Hi Slobodan,

I learned so much about XPe in the last few days.

Good experience for you :)

That is a wonderful OP, but it offers you all the
chances (of unallowded?,I hope not) things to do that you dont have in
XPPro. I boot an REAL XPPro dressed up as XPe in SDI clothes (hihi)to RAM
but it was not stable.

Not stable? So, did you make it to boot at least once?
Btw, SDI is a features of XP Pro ntldr first. XPe just inherits the feature by using XP Pro ntldr and MS ramdisk driver (that was
probably developed specifically for ram boot).

The first attempt with syslinux does not work.
I will write Remi Lefevre an EMail. In his tutorial he said, that it works
with SDI version 1.0.
I tried with version 1.0 and version 2.0 (XPeSP2)but it
doesnt work all all. I am sure, that is not my default.

If you are still referring to this tutorial http://remile.free.fr/syslinux/sdi.txt, then it is not mentioned there what size of the
XPe imaeg they have tried.
It is pretty unusual to boot huge XPe (or XP Pro) images to RAM, so I assumed they only tried small XPe images (not above the known
limit).

I will write a Tutorial, when I am ready.
Perhaps about those things, that are possible, Microsoft
dont will make a Longhorn Embedded. That would be very sad.

In LHe you will have more flexible solution with more control.

KM

Slobodan Brcin (eMVP)

  • #11

Konstantin,

Point 3 in that doc is pretty clear to me:

«
3) Import the partition in the SDI file (sdimgr xpe.sdi /readpart:D:).
The size of the partition must be less than 500 MB.
«

Regards,
Slobodan

Advertisements

Dietmar

  • #12

Hi Slobodan an Konstantin,
real XPPro boots with SDI.
Slobodan said, that all NTLDR’s of XPPro, XPe,
XPeRemoteboot are the same.
That is not right, try.
But the limit of 500MB is because of SDI not broken, and that is what I
first wanted.
Now I am installing Suns JavaVM5.0, then I am ready.

Dietmar

David D

  • #13

I don’t know if this is the case for you but I had a VB program that had WMI
scripting in it.
I would get that same error (I think ).
I added the WMI components (I have the following:
WMI core
WMI coorelation
WMI filter
WMI management snapins
WMI scripting
WMI SNMP provider
WMI tools
WMI view provider
WMI win 32
WMI windows installer provider

Slobodan Brcin (eMVP)

  • #14

Hi Dietmar,

Would you indulge my curiosity and tell us how long does it take for your XPP SDI image to load to ram?

Slobodan said, that all NTLDR’s of XPPro, XPe,
XPeRemoteboot are the same.
That is not right, try.

I never said that all of them are the same. There are many versions. XP Gold, SP1, SP2, and probably some fixes in between. But if
you take for instance same XP Pro SP2 version of ntldr and XPe SP2 ntldr you will see that they are same.
XPe has special ewf_ntldr but this does not fall in our story here, does it?

There is a first time that I hear of ntldr that is meant for XPeRemoteboot, but as they say there is a first time for everything :)

But the limit of 500MB is because of SDI not broken, and that is what I
first wanted.

Sorry my English is not so good and I can’t make any sense from above. What are you trying to say, it eludes me? :-(

Now I am installing Suns JavaVM5.0, then I am ready.

Ready for what ?!!!! What is relation of SDI, ramboot XPP, XPe and Suns JavaVM5.0 ?!?!

Regards,
Slobodan

KM

  • #15

Slobodan,

Oops.. I missed that point. Thanks for watching! :)

Then that makes it even more clear.

KM

  • #16

Sorry my English is not so good and I can’t make any sense from above. What are you trying to say, it eludes me? :-(

Ready for what ?!!!! What is relation of SDI, ramboot XPP, XPe and Suns JavaVM5.0 ?!?!

Slobodan, he is probably still trying to stick with the Cenatek ramdisk driver an fix its install. I don’t know how it can help him,
though.

Dietmar, if you want to fix the Cenatek install issues you may want to stick with MS java to avoid any problem later on.
Also, look at the David’s reply below. He listed WMI components you would need in your image.

Advertisements

Slobodan Brcin (eMVP)

  • #17

Sorry my English is not so good and I can’t make any sense from above. What are you trying to say, it eludes me? :-(

Slobodan, he is probably still trying to stick with the Cenatek ramdisk driver an fix its install. I don’t know how it can help him,
though.

Konstantin, come on, as you know preinstalling driver without using any install program is simple, especially when compared to what
he is doing.

Although I’m still curious about his accomplishment in booting XPP so far.

Regards,
Slobodan

Dietmar

  • #18

Hi all,
I build an real XPPro with 350MB SDI image on compressed NTFS. (Looks
terrible with 4BitColor…hihi). I booted this to Ram from my USB
harddrive.
The boottime is about half a minute. The Windows XPProfessional screen
appears and disappears after the BOOT in about 7 seconds,..grrr.
There is an extra NTLDR «Remoteboot» in Windows EmbeddedRemote Boot
ServiceDownlods.

I told that with Java5, because my XPe image is ready.
456MB on compressed NTFS, nearly «XPPro» with Java, DVD Player, 2Gbyte
Ramdisk, Winrar, Paintshoppro, KazaaliteMegacodec, Mediaplayer9, DirectX9,
Sound from Audigy, Gigabitnetwork, 9700AllinWonder usw. That that is able
with XPe impresses me much. I boot that to Ram.

The only thing I worried about, that I have still the english keyboard
layout. Is there a chance to go to the German layout AFTER building the
image?

Dietmar

KM

  • #19

Slobodan,

Konstantin, come on, as you know preinstalling driver without using any install program is simple, especially when compared to what
he is doing.

Yup.. And that is why I asked him earlier in this thread on how the driver works by itself? (without the complex installation)
Did not get any response and assumed he is still trying the msi package. :)

Although I’m still curious about his accomplishment in booting XPP so far.

Me too.

Regards,
Konstantin

Advertisements

Slobodan Brcin (eMVP)

  • #20

Hi Dietmar,

I build an real XPPro with 350MB SDI image on compressed NTFS. (Looks
terrible with 4BitColor…hihi). I booted this to Ram from my USB
harddrive.

I build an real XPPro with 350MB SDI.

What do you mean by that? How can you build a real XP Pro? It is either XP embedded or XPP, what is in between?

The boottime is about half a minute. The Windows XPProfessional screen
appears and disappears after the BOOT in about 7 seconds,..grrr.

Use /noguiboot to remove this. But again how do you build XPP image of 350MB.

There is an extra NTLDR «Remoteboot» in Windows EmbeddedRemote Boot
ServiceDownlods.

I told that with Java5, because my XPe image is ready.

Again is it XPe or XPP?
What do you mean by «The Windows XPProfessional screen»?

456MB on compressed NTFS, nearly «XPPro» with Java, DVD Player, 2Gbyte
Ramdisk, Winrar, Paintshoppro, KazaaliteMegacodec, Mediaplayer9, DirectX9,
Sound from Audigy, Gigabitnetwork, 9700AllinWonder usw. That that is able
with XPe impresses me much. I boot that to Ram.

Ok so you have two ramdisks? Right?
BTW: Check licensing issues about the product that you are making, I do not know if you are allowed to make such product. (It does
not sound toom much «Embedded»).

The only thing I worried about, that I have still the english keyboard
layout. Is there a chance to go to the German layout AFTER building the
image?

Create new thread for this.
But basicaly you can do that from TD.

Regards,
Slobodan

  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. 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. Offline

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

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

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

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

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

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

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

  7. Offline

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

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

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

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

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

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


    likalim и Mark768 нравится это.

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

  11. 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. Offline

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

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

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

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

  16. Offline

    Ardak

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

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

  17. Offline

    limus80

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

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

  18. Offline

    Gucci76
    Опытный в 1С

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

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

   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, в случае запуска удаленно, через интернет?

Sub ScrapData()
Dim TeamName As String
Dim TeamURL As String
Dim MSXML As New MSXML2.XMLHTTP60
Dim DOC As New HTMLDocument, Cell As Range
TeamName = Sheet2.Range("B1").Value
If TeamName = "" Then
MsgBox "Team Name can't be null", vbExclamation
Exit Sub
End If
Set Cell = Sheet1.Range("D:D").Find(what:=TeamName, lookat:=xlWhole)
If Not Cell Is Nothing Then
    TeamURL = Cell.Offset(0, 2).Hyperlinks.Item(1).Address
    LName = GetRightCode(Cell.Offset(0, 1).Value)
    DoEvents
    MSXML.Open "GET", TeamURL
    **MSXML.send**
    DoEvents
    DOC.body.innerHTML = MSXML.responseText
    Set Tbl1 = DOC.getElementById("table_v1")
    Set Tbl2 = DOC.getElementById("table_v2")
    Set StTbl = DOC.getElementById("table_v3")
    

I get the error on MSXML.send. It was working some months ago but now it appears this error.

Any help?

  • Ошибка получения объекта com 2147221018 0x800401e6 расширение имени файла задано неверно
  • Ошибка получения обработки обслуживания штрих м
  • Ошибка получения обработки обслуживания при открытии смены 1с упп
  • Ошибка получения обработки обслуживания при закрытии смены 1с
  • Ошибка получения обработки обслуживания атол 30ф