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
Зачем так сложно?
ТабличныйДокумент (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
11.7k4 gold badges22 silver badges46 bronze badges
asked Jun 20, 2018 at 17:02
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
JordanJordan
3634 silver badges23 bronze badges
-
Приветствую.
Столкнулся с проблемой:
Создал обработку, которая запускает Excel, читает файл, заполняет его и записывает.
На клиенте все великолепно выполняется.
Создал регламентное задание, которое запускает в определенное время это на сервере.
При выполнении на сервере вылезает ошибка про то, что типа MS Excel не удалось получить доступ к файлу. При этом доподлинно известно, что ком. объект Excel даже не создался (нет его в процессах диспетчера задач).
Примечательно, что если запустить обработку клиентом с машины, где установлен сервер 1С, то все выполняется.Excel = Новый COMОбъект("Excel.Application"); Книга = Excel.WorkBooks.Open("D:DstOrder.xls");
Чувствую, что дело тут в том, что при работе с клиента Excel запускается из-под пользователя в реальном сеансе, а в случае сервера — под пользователем хоть и с полными правами, но без запущенного сеанса.
Сервер Windows Server 2008 R2 Standart. Service Pack 1
Как это обойти? -
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
1) Файл D:DstOrder.xls действительно существует на сервере?
2) У пользователя под которым запущен сервер есть право доступа к каталогу D:Dst? -
1. Да, файл существует. Обработка при запуске на этом же сервере из-под клиента выполняется без проблем.
2. Доступ есть. Пользователь — администратор. Пробовал файл в разные папки класть.— Объединение сообщений, 15 авг 2014 —
Полный текст ошибки. Ошибка от имени Microsoft Excel, однако процесса EXCEL в диспетчере задач нет!
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «D:DstOrder.xls». Это может быть вызвано одной из следующих причин.
• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.— Объединение сообщений, 15 авг 2014 —
8.3.4.496
Последнее редактирование: 15 авг 2014 -
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
Т.е. сервер (ragent.exe и т.д.) стартует от имени Администратора? Или все же от USR1CV82 (не знаю как там по умолчанию под 8.3 пользователь называется).
-
У меня пользователь USR1CV81 со старых времен. Он входит в группу Администраторы.
Сейчас провел эксперимент. Зашел на сервер от имени этого пользователя и в клиенте запустил обработку — без проблем.
-
Попробовал вместо COMОбъект использовать ПолучитьCOMОбъект. Вот результат
Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221021(0x800401E3): Операция недоступна
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
likalim и Mark768 нравится это.
-
Спасибо тебе, добрый человек. Сам бы не допер…
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
Да не за что.
Не совсем я это, разум это коллективный.. -
Небольшое уточнение:
При выборе «Текущий пользователь», обработка на сервере запускает Excel только в том случае, если на сервер выполнил вход кто-нибудь из пользователей.
Если это условие не выполняется, то получаем ошибку:Ошибка при вызове конструктора (COMОбъект): -2147467262(0x80004002): Интерфейс не поддерживается
На вкладке «Удостоверения» есть 3-й вариант запуска — указать конкретного пользователя и пароль.
Я указал пользователя, от имени которого работает сервер 1С (USR1CV81).
В таком варианте обработка запускает Excel при отсутствии работающих пользователей на сервере.
Это меня устраивает.В моем случае не бывает работающих пользователей на сервере и тем более, запускающих Excel
Могу предположить, что при запуске Excel любым пользователем (не USR1CV81) могут возникнуть проблемы.
Например, Excel запускается и работает, однако при старте выдает «Невозможно использовать связывание и внедрение объектов». -
Приветствую.
Когда в этой теме мне очень помогли. Восстановили сервер после аварии. Теперь восстанавливаю возможность работы пользователя USR1CV81 с Excel.
Столкнулся с тем, что в Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM теперь нет ветки Microsoft Excel Application, хотя сам Excel установлен.
Что я сделал не так? -
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Переустанавливать эксель пробовали ?
-
Да, уже несколько раз и разные версии.
Вычитал в сети, что если нет ветки явно, то нужно в реестре найти его наименование в виде кода. В реестре нашел, но его кода в Настройка DCOM тоже нет. -
Offline
Ardak
- Регистрация:
- 21 дек 2015
- Сообщения:
- 1
- Симпатии:
- 1
- Баллы:
- 1
Вдруг кому понадобится
Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты. -
Offline
limus80
- Регистрация:
- 30 май 2013
- Сообщения:
- 5
- Симпатии:
- 0
- Баллы:
- 1
важное как мне кажется дополнение
ко всему вышесказанному надо добавить учетке права входа в качестве сервиса на компьютер
без этого у меня не работало на W2K12R2 -
Offline
Gucci76
Опытный в 1С- Регистрация:
- 9 мар 2008
- Сообщения:
- 75
- Симпатии:
- 0
- Баллы:
- 26
Здравствуйте.
У меня похожая проблема, но только с ВОРДом
В файловом варианте я могу Новый COMОбъект(«Word.Application»), а в клиент-серверном нет.
Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM тут НЕ нашел ворда (открывал через команду «mmc comexp.msc /32»).