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

1. Flipp 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 4 06.12.18 09:09 Сейчас в теме
И что не получилось ? Строки
        Прокси = ПолучитьПрокси(АдресСервиса, URIИмен, Логин, Пароль, ИмяВэбСервиса);
        Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
в скобки Попытка-Исключение и, если нет исключения - доступно. Из функции ПолучитьПрокси скобки убрать.
4. Flipp 06.12.18 09:33 Сейчас в теме
(2)Пишет ошибку: ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(52)}: Значение не является значением объектного типа (CalcLengthString)
Подключение = Прокси.CalcLengthString("ПолучитьОтчет");
5. sergathome 4 06.12.18 09:38 Сейчас в теме
(4) Ну дык Прокси не получается, уберите скобки, как я сказал, поймайте реальную ошибку при получении прокси.. и тд и тп. Нельзя поставить диагноз глядя на портрет умирающего ;)
6. Flipp 06.12.18 09:45 Сейчас в теме
(5)Прости, я не понимаю, где добавить-убрать скобки!?
7. sergathome 4 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. Flipp 06.12.18 10:00 Сейчас в теме
(7) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(62)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(АдресВэбСервиса + "?wsdl", Логин, Пароль);
по причине:
Аутентификация пользователя не выполнена. URL сервиса: http://srv-srv1/kadri_all_test_kortes/ws/?wsdl
9. sergathome 4 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. Flipp 06.12.18 12:17 Сейчас в теме
(9)Перепроверили, но все равно ошибка

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

Может что-то не так с адресом веб-сервиса!?
12. sergathome 4 06.12.18 13:40 Сейчас в теме
(10) имя сервиса у вас ОТСУТСТВУЕТ. в УРЛ http://srv-srv1/kadri_all_test_kortes/ws/?wsdl между / и ? должен быть адрес сервиса.
Наймите специалиста, вам не дано. Извините. :(
Denis_CFO; +1 Ответить
11. Flipp 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С аналитик
Москва
зарплата от 210 000 руб.
Полный день

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

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

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

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)