Имя: Пароль:
1C
 
Ошибка при вызове конструктора (COMОбъект)... MSSOAP.SoapClient30
0 Артур Хвостов
 
09.06.17
14:52
Добрый день. Нужна помощь в решении одной ошибки... Заранее всем спасибо кто подскажет;)
Предыстория: Делал интеграцию с веб сервисом через MSSOAP.SoapClient30. Все работает хорошо на своем лок. компе, но когда обновил рабочею БД, на терминальном сервере начались нюансы...
У нас схема такая... есть терминальный сервер с win server 2008 r2 x64 и есть сервер основной win server 2012 x64, на котором крутиться sql server и 1c сервер. На терминальный сервер и основой сервер поставил вот такую программу mssoap_toolkit_30.
Когда с терминального сервера в 1с пытаюсь получить данные с веб сервиса лезет такая ошибка:
{ОбщийМодуль.МодульРегламентныхЗаданий.Модуль(277)}: Ошибка при вызове конструктора (COMОбъект)
    Клиент = Новый COMОбъект("MSSOAP.SoapClient30");
по причине:
-2146959355(0x80080005): Ошибка при выполнении приложения-сервера

До этого на терминальном сервер сделал:
1. Со своего лок. компа скопировал папку C:\Program Files (x86)\Common Files\MSSoap\Binaries\ с ddl файлами в C:\Program Files (x86)\Common Files
2. Добавил компонент SoapClient30 в службы компонентов(ddl взял из первого пункта)
3. перегестрировал библиотеку C:\Program Files (x86)\Common Files\Binaries\MSSOAP30.dll через system32/cmd и SysWOW64/cmd

Больше не знаю в какую сторону идти...
1 Cyberhawk
 
09.06.17
14:53
Зачем тебе для "интеграции с веб-сервисом" какие-то СОМ-объекты?
Неправильно ты что-то делал...
2 Артур Хвостов
 
09.06.17
15:00
Есть такой веб сервис мерлион он работает через soap...
Тогда подскажи как правильно?
3 mehfk
 
09.06.17
15:14
(2) У тебя там 1С 7.7 что-ли?
4 Cyberhawk
 
09.06.17
15:29
(2) А какая разница, какой веб-сервис? WS-прокси проинициализировал и вызываешь операции
5 Артур Хвостов
 
09.06.17
15:30
(3) нет, ут 10.3
6 Неверный Параметр И
 
09.06.17
15:46
(4) Это же мерлион. Известный тем, что отдает wsdl с массивами, который wsпрокси не понимает.
7 Артур Хвостов
 
09.06.17
15:58
Может я как-то неправильно компоненты установил?
8 Сергиус
 
09.06.17
16:00
(0)А если использовать "WinHttp.WinHttpRequest.5.1" для этих целей?
9 Артур Хвостов
 
09.06.17
16:06
(8) Может, не пробовал...
Но я использую вот такое...
Клиент = Клиент = Новый COMОбъект("MSSOAP.SoapClient30");    
    Если (ПустаяСтрока(ПространствоИмен)) Тогда
        Клиент.MSSoapInit(АдресВСДЛ, ИмяСервиса, ИмяПорта);
    Иначе
        Клиент.MSSoapInit2(АдресВСДЛ, "", ИмяСервиса, ИмяПорта, ПространствоИмен);
    КонецЕсли;

УстановитьСвойстваКлиента(Клиент, СвойстваСоединения, СвойстваКлиента);

......

Процедура УстановитьСвойстваКлиента(Клиент, СтрСвойстваСоединения=Неопределено, СтрСвойстваКлиента=Неопределено) Экспорт
    
    Перем Оболочка, Элемент;
    
    Оболочка = Новый COMОбъект("MSScriptControl.ScriptControl");
    
    Оболочка.Language = "vbscript";
    Оболочка.AddCode("
        |Sub SETConnectorProperty(Client, PropertyName, PropertyValue)
        |  
        |  Client.ConnectorProperty(PropertyName) = PropertyValue
        |
        |End Sub
        |
        |Sub SETClientProperty(Client, PropertyName, PropertyValue)
        |  
        |  Client.ClientProperty(PropertyName) = PropertyValue
        |
        |End Sub
        |");
    
        
    Если (ТипЗнч(СтрСвойстваСоединения) = Тип("Структура")) Тогда
        Для Каждого Элемент Из СтрСвойстваСоединения Цикл
            Оболочка.Run("SETConnectorProperty", Клиент, Элемент.Ключ, Элемент.Значение);
        КонецЦикла;
    КонецЕсли;    

    Если (ТипЗнч(СтрСвойстваКлиента) = Тип("Структура")) Тогда
        Для Каждого Элемент Из СтрСвойстваКлиента Цикл
            Оболочка.Run("SETClientProperty", Клиент, Элемент.Ключ, Элемент.Значение);
        КонецЦикла;
    КонецЕсли;    

КонецПроцедуры
10 Сергиус
 
09.06.17
16:44
(9)Возможно прав не хватает. Попробуйте запустить 1с с правами админа.
11 Артур Хвостов
 
14.06.17
09:59
Тема закрыта, всем спасибо, вот какое решение:
1. поставил на основной сервер mssoap_toolkit_30
2. на терминальном сервере вот такое как написано в статье
"Запуск компоненты soapsdk (SoapClient30) на х64 ОС" в гугл забиваете, делаете по инструкции
3. Переразгрузка терминального сервера
12 Лефмихалыч
 
14.06.17
10:30
(0) в платформе же есть свои HTTPСоединение и HTTPЗапрос. Зачем эти прокладки?
13 Артур Хвостов
 
14.06.17
14:10
(12) Если я все правильно разобрался, поправьте, если ошибаюсь, то сервер мерлиона не умеет работать с json и ему нужно эту компоненту soap. А HTTPСоединение и HTTPЗапрос это для json...
14 Неверный Параметр И
 
14.06.17
14:13
(13) HTTPСоединение и HTTPЗапрос это для запросов по хттп протоколу. По которому можно передавать в том числе и json и xml и даже (не поверишь) двоичные данные.
15 Артур Хвостов
 
14.06.17
14:22
(14) Ок, буду иметь ввиду
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс