1. FLYka 06.12.18 07:24 Сейчас в теме

Помогите с Веб-сервисами

Добрый день. Впервой связываюсь с веб-сервисами. Помогите, кто уже сталкивался.
Стоит такая задача: выводить на форму тз с тремя колонками
-организация
-имя-веб сервиса (тип строка)
-Доступность (тип булево).

Веб-сервис опубликован, прописана в нем функция(все по инструкции). Вот только никак не соображу как к нему обратиться с формы внешней обработки и проставить галочки(истина) у тех веб-сервисов, которые доступны. Программа должна как-то в цикле обратиться к каждому из них, это я понимаю, а вот как это сделать в толк не возьму.

Пробую вот так.
Функция ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса) Экспорт
		Попытка
		ИмяТочкиПодключения = ИмяВэбСервиса + "Soap";
		АдресВэбСервиса = АдресИсточника + ИмяВэбСервиса;
		Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
		Прокси = Новый WSПрокси(Определения, URIИмен, ИмяВэбСервиса, ИмяТочкиПодключения);
		Прокси.Пользователь = Логин;
		Прокси.Пароль = Пароль;
		Возврат Прокси;
	Исключение
		Возврат Неопределено;
	КонецПопытки;	 
КонецФункции

Процедура ПриОткрытии()
	

	ПериодРегистрации = ТекущаяДата();
	МесяцСтрока =Формат(ПериодРегистрации, "ДФ='ММММ гггг'");			

	Для Каждого Стр из ТЗ Цикл 			
		URIИмен = "http://srv-srv1/Serv";
		Логин = "Администратор";
		Пароль = "";
		ИмяВэбСервиса = Стр.ВебСервис;
		АдресСервиса = "http://srv-srv1/kadri_all_test_kortes/ws/";
		Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
		Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
	КонецЦикла;


КонецПроцедуры

Показать


ПолучитьОтчет - это имя процедуру в сервисе.
Я явно что-то делаю не так, но что именно сообразить не могу. Куча всяких статей просветления не добавили,если честно. Может, кто-то сможет объяснить, как это работает!?
Ответы
Избранное Подписка Сортировка: Древо
3. tvm 06.12.18 09:32 Сейчас в теме
2. sergathome 06.12.18 09:09 Сейчас в теме
И что не получилось ? Строки
        Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
        Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
в скобки Попытка-Исключение и, если нет исключения - доступно. Из функции ПолучитьПрокси скобки убрать.
4. FLYka 06.12.18 09:33 Сейчас в теме
(2)Пишет ошибку: ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(52)}: Значение не является значением объектного типа (CalcLengthString)
Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
5. sergathome 06.12.18 09:38 Сейчас в теме
(4) Ну дык Прокси не получается, уберите скобки, как я сказал, поймайте реальную ошибку при получении прокси.. и тд и тп. Нельзя поставить диагноз глядя на портрет умирающего ;)
6. FLYka 06.12.18 09:45 Сейчас в теме
(5)Прости, я не понимаю, где добавить-убрать скобки!?
7. sergathome 06.12.18 09:52 Сейчас в теме
(6)
Функция ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса) Экспорт
        ИмяТочкиПодключения = ИмяВэбСервиса + "Soap";
        АдресВэбСервиса = АдресИсточника + ИмяВэбСервиса;
        Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
        Прокси = Новый WSПрокси(Определения, URIИмен, ИмяВэбСервиса, ИмяТочкиПодключения);
        Прокси.Пользователь = Логин;
        Прокси.Пароль = Пароль;
        Возврат Прокси;
КонецФункции

Процедура ПриОткрытии()
    

    ПериодРегистрации = ТекущаяДата();
    МесяцСтрока =Формат(ПериодРегистрации, "ДФ='ММММ гггг'");            

    Для Каждого Стр из ТЗ Цикл             
        URIИмен = "http://srv-srv1/Serv";
        Логин = "Администратор";
        Пароль = "";
        ИмяВэбСервиса = Стр.ВебСервис;
        АдресСервиса = "http://srv-srv1/kadri_all_test_kortes/ws/";
        Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
        Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
    КонецЦикла;


КонецПроцедуры
Показать


Какую теперь ошибку выдаёт ?
8. FLYka 06.12.18 10:00 Сейчас в теме
(7) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(62)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
по причине:
Аутентификация пользователя не выполнена. URL сервиса: http://srv-srv1/kadri_all_test_kortes/ws/?wsdl
9. sergathome 06.12.18 11:35 Сейчас в теме
(8) не аутентификацию считаем недоступность, очевидно (или как?) Таким образом получаем:
Функция ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса) Экспорт
        ИмяТочкиПодключения = ИмяВэбСервиса + "Soap";
        АдресВэбСервиса = АдресИсточника + ИмяВэбСервиса;
        Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
        Прокси = Новый WSПрокси(Определения, URIИмен, ИмяВэбСервиса, ИмяТочкиПодключения);
        Прокси.Пользователь = Логин;
        Прокси.Пароль = Пароль;
        Возврат Прокси;
КонецФункции

Процедура ПриОткрытии()
    

    ПериодРегистрации = ТекущаяДата();
    МесяцСтрока =Формат(ПериодРегистрации, "ДФ='ММММ гггг'");            

    Для Каждого Стр из ТЗ Цикл             
        URIИмен = "http://srv-srv1/Serv";
        Логин = "Администратор";
        Пароль = "";
        ИмяВэбСервиса = Стр.ВебСервис;
        АдресСервиса = "http://srv-srv1/kadri_all_test_kortes/ws/";
        Попытка
           Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
           Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
           Стр.Доступность = Истина;
        Исключение
           Стр.Доступность = Ложь;
        КонецПопытки;
    КонецЦикла;
Показать
10. FLYka 06.12.18 12:17 Сейчас в теме
(9)Перепроверили, но все равно ошибка

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(62)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
по причине:
При создании описания сервиса произошла ошибка. URL сервиса: http://srv-srv1/kadri_all_test_kortes/ws/?wsdl
Код ответа сервера: 500

Может что-то не так с адресом веб-сервиса!?
12. sergathome 06.12.18 13:40 Сейчас в теме
(10) имя сервиса у вас ОТСУТСТВУЕТ. в УРЛ http://srv-srv1/kadri_all_test_kortes/ws/?wsdl между / и ? должен быть адрес сервиса.
Наймите специалиста, вам не дано. Извините. :(
Denis_CFO; +1 Ответить
11. FLYka 06.12.18 12:21 Сейчас в теме
Если вынести адрес источника в спр. то возникает вот такая ошибка \
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(65)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
по причине:
При создании описания сервиса произошла ошибка. URL сервиса: http://srv-srv1/kadri_all_test_kortes/ws/
?wsdl
Код ответа сервера: 400


?wsdl - это ему не нравится!?


 Для Каждого Стр из ТЗ Цикл             
        URIИмен = "http://srv-srv1/ServFLY";
        Логин = "Администратор";
        Пароль = "Rfptvbhvftdbx";
        ИмяВэбСервиса = Стр.ВебСервис;
        //АдресИсточника = "http://srv-srv1/kadri_all_test_kortes/ws/";
		АдресИсточника = Справочники.Константы.АдресИсточника.Описание;
        Прокси = ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса);
        Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
    КонецЦикла;


КонецПроцедуры


Функция ПолучитьПрокси(АдресИсточника, URIИмен, Логин, Пароль, ИмяВэбСервиса) Экспорт
	
        ИмяТочкиПодключения = ИмяВэбСервиса + "Soap";
        АдресВэбСервиса = АдресИсточника + ИмяВэбСервиса;
        Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
        Прокси = Новый WSПрокси(Определения, URIИмен, ИмяВэбСервиса, ИмяТочкиПодключения);
        Прокси.Пользователь = Логин;
        Прокси.Пароль = Пароль;
        Возврат Прокси;
КонецФункции
Показать
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Разработчик 1С
Москва
зарплата от 100 000 руб. до 160 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день