Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 мар 2024, 10:34

ошибка при обмене данных с веб сервисом

Автор leobrn, 24 сен 2015, 18:36

0 Пользователей и 1 гость просматривают эту тему.

leobrn

В общем при обмене возникает ошибка "Сервер не найден {http:/localhost/ws1}:WebObmen"

ExecChange
Процедура ЗарегистрироватьИзмененияДанных(УзелОбмена) Экспорт
СоставПланаОбмена = УзелОбмена.Метаданные().Состав;
Для каждого ЭлементСоставаПланаОбмена Из СоставПланаОбмена Цикл
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена,ЭлементСоставаПланаОбмена.Метаданные);
КонецЦикла;
КонецПроцедуры

Функция ExecChange(CoUs, DaUstr)
УстановитьПривилегированныйРежим(Истина);

//1. иницйиализация если нужно
УзелОбмена = ПланыОбмена.Мобильный.ЭтотУзел().ПолучитьОбъект();
Если не ЗначениеЗаполнено(УзелОбмена.Код) Тогда
УзелОбмена.Код="001";
УзелОбмена.Наименование="Centr";
УзелОбмена.Записать();
КонецЕсли;

УзелОбмена = ПланыОбмена.Мобильный.НайтиПоКоду(CoUs);
Если УзелОбмена.Пустая() Тогда
НовыйУзел = ПланыОбмена.Мобильный.СоздатьУзел();
НовыйУзел.Код = CoUs;
НовыйУзел.Наименование = CoUs;
НовыйУзел.Записать();
ЗарегистрироватьИзмененияДанных(НовыйУзел.Ссылка);
УзелОбмена = НовыйУзел.Ссылка;
КонецЕсли;

//2. Получить данные с мобильного устройства
УзелОбмена = ПланыОбмена.Мобильный.НайтиПоКоду(CoUs);
Сообщить(CoUs);
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(DaUstr.Получить());
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого);
НачатьТранзакцию();
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
Данные = ПрочитатьXML(ЧтениеXML);
Если не Данные = Неопределено Тогда
Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;
Данные.Записать();
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();

//3. Выгрузка Данных в мобильное устрйоство
УзелОбмена = ПланыОбмена.Мобильный.НайтиПоКоду(CoUs);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML,УзелОбмена);
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLShema-instance");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения);
Пока ВыборкаИзменений.Следующий() Цикл
Данные = ВыборкаИзменений.Получить();
ЗаписатьXML(ЗаписьXML, Данные); // запис данные в смообщение
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9));

КонецФункции//ВыполнитьОбмен


Обмен
&НаКлиенте
   Процедура ОбработкаКоманды(ПараметрКоманды,ПараметрыВыполненияКоманды)
   ОбработкаКомандыСервер();
   КонецПроцедуры
   
   &НаСервере
   Процедура ОбработкаКомандыСервер()
   Адрес = "http://192.168.100.102/mobile/ws/ws1.1cws?wsd1";
   Определения = Новый WSОпределения(Адрес);
   URI = "http://localhost/ws1";
   Прокси = Новый WSПрокси(Определения, URI, "WebObmen", "WebObmenSoap");
   
   СисИнфо = Новый СистемнаяИнформация;
   КодМобильногоКомпьютера = Строка(СисИнфо.ИдентификаторКлиента);
   
   //1. инициализация если нужно
   Узел = ПланыОбмена.Мобильный.ЭтотУзел();
   Если не ЗначениеЗаполнено(Узел.Код)
   ИЛИ Узел.Код <> КодМобильногоКомпьютера Тогда
   ОбъектУзла = Узел.ПолучитьОбъект();
   ОбъектУзла.Код = КодМобильногоКомпьютера;
   ОбъектУзла.Наименование = КодМобильногоКомпьютера;
   ОбъектУзла.Записать();
   КонецЕсли;
   
   ЦентральныйУзелОбмена = ПланыОбмена.Мобильный.НайтиПоКоду("001");
   Если ЦентральныйУзелОбмена.Пустая() Тогда
   НовыйУзел = ПланыОбмена.Мобильный.СоздатьУзел();
   НовыйУзел.Код="001";
   НовыйУзел.Наименование ="Centr";
   НовыйУзел.Записать();
   ЦентральныйУзелОбмена = НовыйУзел.Ссылка;
   КонецЕсли;
   
   //2. Обмен с центр базой
   ДанныеОбмена = Прокси.ExecChange(КодМобильногоКомпьютера, СформироватьПакетОбмена(ЦентральныйУзелОбмена)); 
   
    //3. Обработка данных, полученных из центральной базы

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ДанныеОбмена.Получить());
    ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
    ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
    ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого);
    НачатьТранзакцию();
    Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
        Данные = ПрочитатьXML(ЧтениеXML);
        Если НЕ Данные = Неопределено Тогда
            Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
            Данные.ОбменДанными.Загрузка = Истина;
            Данные.Записать();
        КонецЕсли;
    КонецЦикла;
    ЗафиксироватьТранзакцию();
    ЧтениеСообщения.ЗакончитьЧтение();
    ЧтениеXML.Закрыть();
   
КонецПроцедуры

Функция СформироватьПакетОбмена(УзелОбмена) Экспорт
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения);
Пока ВыборкаИзменений.следующий() Цикл
Данные = ВыборкаИзменений.Получить();
ЗаписатьXML(ЗаписьXML, Данные);
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(),Новый СжатиеДанных(9));
КонецФункции

ANF1999

У вас в строчке
   Адрес = "http://192.168.100.102/mobile/ws/ws1.1cws?wsd1";
вместо wsdl (Эль на конце) в конце стоит 1(один).
У себя проверил. Весело:))

дфтын

называется студент чото там скопировал
Помог? Нажми - Спасибо :)
skype: Soprov1C

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск