Snippets

Василий Котов Подключение к веб сервису 1С

Created by Василий Котов
Функция WSПрокси(Параметры)
	
	АдресWSDL = Параметры.АдресWSDL;
	URIПространстваИмен = Параметры.URIПространстваИмен;
	ИмяСервиса = Параметры.ИмяСервиса;
	ИмяТочкиПодключения = Параметры.ИмяТочкиПодключения;
	ИмяПользователя = Параметры.ИмяПользователя;
	Пароль = Параметры.Пароль;
	Таймаут = Параметры.Таймаут;
	Местоположение = Параметры.Местоположение;
	ИспользоватьАутентификациюОС = Параметры.ИспользоватьАутентификациюОС;
	ЗащищенноеСоединение = Параметры.ЗащищенноеСоединение;
	
	Протокол = "";
	Позиция = СтрНайти(АдресWSDL, "://");
	Если Позиция > 0 Тогда
		Протокол = НРег(Лев(АдресWSDL, Позиция - 1));
	КонецЕсли;
		
	Если (Протокол = "https" Или Протокол = "ftps") И ЗащищенноеСоединение = Неопределено Тогда
		ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
	КонецЕсли;
	
	WSОпределения = WSОпределения(АдресWSDL, ИмяПользователя, Пароль,, ЗащищенноеСоединение);
	
	Если ПустаяСтрока(ИмяТочкиПодключения) Тогда
		ИмяТочкиПодключения = ИмяСервиса + "Soap";
	КонецЕсли;
	
	ИнтернетПрокси = Неопределено;
	
	Прокси = Новый WSПрокси(WSОпределения, URIПространстваИмен, ИмяСервиса, ИмяТочкиПодключения,
		ИнтернетПрокси, Таймаут, ЗащищенноеСоединение, Местоположение, ИспользоватьАутентификациюОС);
	
	Прокси.Пользователь = ИмяПользователя;
	Прокси.Пароль       = Пароль;
	
	Возврат Прокси;
    
КонецФункции

Функция ПараметрыПодключенияWSПрокси()
	Результат = Новый Структура;
	Результат.Вставить("АдресWSDL");
	Результат.Вставить("URIПространстваИмен");
	Результат.Вставить("ИмяСервиса");
	Результат.Вставить("ИмяТочкиПодключения", "");
	Результат.Вставить("ИмяПользователя");
	Результат.Вставить("Пароль");
	Результат.Вставить("Таймаут", 0);
	Результат.Вставить("Местоположение");
	Результат.Вставить("ИспользоватьАутентификациюОС", Ложь);
	Результат.Вставить("ДелатьКонтрольныйВызов", Ложь);
	Результат.Вставить("ЗащищенноеСоединение", Неопределено);
	Возврат Результат;
КонецФункции

// Конструктор объекта WSПрокси.
//
// Отличия от конструктора Новый WSПрокси:
//  - встроенный конструктор WSОпределения;
//  - кэширует файл WSDL;
//  - не требуется указание ИнтернетПрокси (используется автоматически, если настроен);
//  - умеет делать быструю проверку доступности сервиса.
//
// Параметры:
//  ПереданныеПараметры             - Структура - настройки подключения (необходимо использовать функцию ПараметрыПодключенияWSПрокси):
//   * АдресWSDL                    - Строка - месторасположение wsdl.
//   * URIПространстваИмен          - Строка - URI пространства имен web-сервиса.
//   * ИмяСервиса                   - Строка - имя сервиса.
//   * ИмяТочкиПодключения          - Строка - (необязательный) если не задано, образуется как <ИмяСервиса>Soap.
//   * ИмяПользователя              - Строка - (необязательный) имя пользователя для входа на сервер.
//   * Пароль                       - Строка - (необязательный) пароль пользователя.
//   * Таймаут                      - Число  - (необязательный) таймаут на операции выполняемые через полученное прокси.
//   * Местоположение               - Строка - (необязательный) фактический адрес сервиса. Используется, если адрес реального
//                                             расположения сервиса отличается от адреса, который указан в WSDL-файле.
//   * ИспользоватьАутентификациюОС - Булево - (необязательный) включает использование авторизации NTLM или Negotiate на
//                                             сервере.
//   * ДелатьКонтрольныйВызов       - Булево - (необязательный) выполнять проверку доступности сервиса (требуется 
//                                             поддержка этой команды веб-сервисом).
//   * ЗащищенноеСоединение         - ЗащищенноеСоединениеOpenSSL, Неопределено - (необязательный) параметры защищенного
//                                                                                соединения.
//
// Возвращаемое значение:
//  WSПрокси  - объект WSПрокси.
//
Функция СоздатьWSПрокси(ПереданныеПараметры) Экспорт
	
	ПараметрыПодключения = ПараметрыПодключенияWSПрокси();
	ЗаполнитьЗначенияСвойств(ПараметрыПодключения, ПереданныеПараметры);
	
	ДелатьКонтрольныйВызов = ПараметрыПодключения.ДелатьКонтрольныйВызов;
	Таймаут = ПараметрыПодключения.Таймаут;
	
	Если ДелатьКонтрольныйВызов И Таймаут <> Неопределено И Таймаут > 20 Тогда
		ПараметрыПодключения.Таймаут = 7;
		WSПроксиPing = WSПрокси(ПараметрыПодключения);
		Попытка
			WSПроксиPing.Ping();
		Исключение
			
			АдресТочкиПодключения = WSПроксиPing.ТочкаПодключения.Местоположение;
			
			ТекстОшибки = "Ошибка подкдючения";
			
			ВызватьИсключение ТекстОшибки;
            
		КонецПопытки;
        
		ПараметрыПодключения.Таймаут = Таймаут;
        
	КонецЕсли;
	
	Возврат WSПрокси(ПараметрыПодключения);
	
КонецФункции


Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.