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 | ||
|
Отдельно записанный скрипт запускается.
Собственно вопрос. Как запустить его из макроса в 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
18.09.15 — 15:39
Помогите, чет совсем в ступоре. База клиент-серверная.
&НаКлиенте
Процедура СоздатьПечатнуюФормуДоговора(Команда)
Макет = ПолучитьМакетСервер(); //серверная функция, записывает макет в файл и возвращает полное имя файла
Попытка
КомОбъект = ПолучитьCOMОбъект(Макет); //инициализируем COM-объект
Исключение
КомОбъект = 0;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
Падает в исключение!
Функция ПолучитьМакетСервер(КомОбъект)
Об = РеквизитФормыВЗначение(«Объект»);
Макет = Об.ПолучитьМакет(«Макет»);
ИмяФайла = ПолучитьИмяВременногоФайла(«doc»);
Макет.Записать(ИмяФайла);
Возврат ИмяФайла;
КонецФункции
Где туплю, подскажите?
1 — 18.09.15 — 15:41
Текст ошибки?
2 — 18.09.15 — 15:42
{Справочник.ДоговорыКонтрагентов.Форма.ФормаЭлемента.Форма(1010)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221020(0x800401E4): Синтаксическая ошибка
3 — 18.09.15 — 15:44
(1) , забыл уточнить, в файлом варианте все работает!
4 — 18.09.15 — 15:45
(0) Файловые системы на клиенте и сервере — очень разные вещи. Начиная от расположения файлов и кончая правами доступа.
5 — 18.09.15 — 15:47
(4) , понимаю. Но ведь тут сделано все вроде по инструкции как http://catalog.mista.ru/public/270277/ . Но com объект на клиенте создать не может…
6 — 18.09.15 — 15:51
Windows 32 разрядный?
7 — 18.09.15 — 15:52
(6) не, 64
8 — 18.09.15 — 15:56
(5) Это к автору писульки на нимфостарте, плз. Ты сохраняешь файл по пути для сервера, а потом пытаешся читать его на клиенте. А это возможно только в файловой базе или в случае когда сервер запущен на той же машине.
9 — 18.09.15 — 15:58
(8) , так а как же тогда? читать тоже на сервере что ли?
10 — 18.09.15 — 16:03
(9) Передавать тушку файла, из которого ты создаешь комобъект, через временное хранилище.
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С
16 — 18.09.15 — 16:11
(13) , то есть проблема в том , что на клиенте я не могу обратиться к файлу, у которого путь такой: C:UsersUSR1CV82AppDataLocalTemp ?
17 — 18.09.15 — 16:16
(11) это то есть так делать:
&НаСервере
Функция ПолучитьМакетСервер(АдресФайлаВХранилище)
Об = РеквизитФормыВЗначение(«Объект»);
Макет = Об.ПолучитьМакет(«Макет»);
ИмяФайла = ПолучитьИмяВременногоФайла(«doc»);
Макет.Записать(ИмяФайла);
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
Возврат ИмяФайла;
КонецФункции
И потом на клиенте
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВХранилище );
ДвоичныеДанные.Записать(ПолучитьИмяВременногоФайла(«doc»));
18 — 18.09.15 — 16:23
(16) Путь к файлу, который находится на сервере. А ты или не на сервере, или, если на сервере, у тебя нет доступа к папке пользователя, под которым запущен сервер 1с.
19 — 18.09.15 — 16:27
(18) , да, доступа нет, совершенно верно. Сейчас буду делать как вы сказали. Только хотел бы еще просить взглянуть на (17), что я не так тут сделал, что опять валится в исключение, вот сам код:
Макет = ПолучитьМакетСервер(АдресФайлаВХранилище); //серверная функция, записывает макет в файл и возвращает полное имя файла
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВХранилище );
ИмяФ = ПолучитьИмяВременногоФайла(«doc»);
ДвоичныеДанные.Записать(ИмяФ);
Попытка
КомОбъект = ПолучитьCOMОбъект(ИмяФ); //инициализируем COM-объект
Исключение
КомОбъект = 0;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
20 — 18.09.15 — 16:28
В функцию добавил помещение во временное хранилище:
Функция ПолучитьМакетСервер(АдресФайлаВХранилище)
Об = РеквизитФормыВЗначение(«Объект»);
Макет = Об.ПолучитьМакет(«Макет»);
ИмяФайла = ПолучитьИмяВременногоФайла(«doc»);
Макет.Записать(ИмяФайла);
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
Возврат ИмяФайла;
КонецФункции
21 — 18.09.15 — 16:43
(17) А разве нельзя просто
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
Возврат ДвоичныеДанные ;
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 | ||
|
Отдельно записанный скрипт запускается.
Собственно вопрос. Как запустить его из макроса в Excel, в случае запуска удаленно, через интернет?
-
01-01-2020, 05:29 PM
#1
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 errorI 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
-
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
-
01-02-2020, 09:20 PM
#3
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
-
01-02-2020, 10:28 PM
#4
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 #
-
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.