Laximo Web-services/Example of call service from 1C

Материал из Laximo
Перейти к: навигация, поиск
Другие языки:
English • ‎русский

Примеры обращения к сервису из 1С

Ниже приведены примеры обращения к сервисам для 1С версии 8.3. Пример обращения к сервисам для 1С версии 8.2 может быть предоставлен по запросу в поддержку.

1С 8.3, OEM

Функция Запрос_LaximoOEM(НаименованиеФункции, ДанныеЗапроса)
	
	Сервер = "ws.avtosoft.net";
	Логин  = "login";
	Пароль = "key";
	
	КомандаЗапроса = "";
	Если ДанныеЗапроса <> Неопределено Тогда
		Для Каждого Элемент Из ДанныеЗапроса Цикл
			Если ТипЗнч(Элемент.Значение) = Тип("Число") Тогда
				ЭлементЗначение = Формат(Элемент.Значение,"ЧН=0; ЧГ=0");
			ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Булево") Тогда
				ЭлементЗначение = Формат(Элемент.Значение,"БЛ=false; БИ=true");
			ИначеЕсли Не ЗначениеЗаполнено(Элемент.Значение) Тогда
				ЭлементЗначение = "";
			Иначе
				ЭлементЗначение = Элемент.Значение;
			КонецЕсли;
			КомандаЗапроса = КомандаЗапроса + "|" + Элемент.Ключ + "=" + ЭлементЗначение;
		КонецЦикла;
	КонецЕсли;
	КомандаЗапроса = НаименованиеФункции + ":" + Сред(КомандаЗапроса, 2);
	
	ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
	ХешированиеДанных.Добавить(КомандаЗапроса + Пароль);
	Хеш = НРег(СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""));
	
	ТекстЗапроса = "<?xml version=""1.0"" encoding=""UTF-8""?>
		|<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/""
		|	xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/""
		|	xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
		|	xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
		|	xmlns:SOAP-ENC=""http://schemas.xmlsoap.org/soap/encoding/"">
		|	<SOAP-ENV:Body><ns5692:QueryDataLogin xmlns:ns5692=""http://WebCatalog.Kito.ec""><request xsi:type=""xsd:string"">ТелоЗапроса</request><login xsi:type=""xsd:string"">" + Логин + "</login><hmac xsi:type=""xsd:string"">хеш</hmac></ns5692:QueryDataLogin></SOAP-ENV:Body>
		|</SOAP-ENV:Envelope>";
		
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "хеш", Хеш);
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТелоЗапроса", КомандаЗапроса);
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Accept", "*/*");
	Заголовки.Вставить("Content-Type", "text/xml; charset=UTF-8");
	Заголовки.Вставить("SOAPAction", """http://WebCatalog.Kito.ec""");
	
	Соединение = Новый HTTPСоединение(Сервер);
	HTTPЗапрос = Новый HTTPЗапрос("ec.Kito.WebCatalog/services/Catalog.CatalogHttpSoap11Endpoint/", Заголовки);
	HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса);
	HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
	
	СтрокаОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
	
	Если HTTPОтвет.КодСостояния = 200 Тогда
		ПотокXML = Новый ЧтениеXML;
		ПотокXML.УстановитьСтроку(СтрокаОтвета);
		XDTO = Новый ФабрикаXDTO;
		Чтение = Новый ЧтениеXML;
		Чтение.УстановитьСтроку(XDTO.ПрочитатьXML(ПотокXML).Body["QueryDataLoginResponse"].return);
		ОбъектXDTO  = XDTO.ПрочитатьXML(Чтение);
		Чтение.Закрыть();
		ПотокXML.Close();
		XDTO = Неопределено;
		
		Если НаименованиеФункции = "ListQuickGroup" Тогда
			ИмяДанных = "ListQuickGroups";
		ИначеЕсли НаименованиеФункции = "ListDetailByUnit" Тогда
			ИмяДанных = "ListDetailsByUnit";
		Иначе
			ИмяДанных = НаименованиеФункции;
		КонецЕсли;
		
		Возврат ОбъектXDTO[ИмяДанных];
	Иначе
		Если HTTPОтвет.КодСостояния = 500 Тогда
			ПотокXML = Новый ЧтениеXML;
			ПотокXML.УстановитьСтроку(СтрокаОтвета);
			
			XDTO = Новый ФабрикаXDTO;
			Ошибка = XDTO.ПрочитатьXML(ПотокXML).Body.fault.faultstring;
			
			ПотокXML.Close();
			XDTO = Неопределено;
			Возврат Ошибка;
		Иначе
			Возврат СтрокаОтвета;
		КонецЕсли;
	КонецЕсли;
	
КонецФункции

1С 8.3, AM

Функция Запрос_LaximoAM(НаименованиеФункции, ДанныеЗапроса)
	
	Сервер = "aws.laximo.org";
	Логин  = "Login";
	Пароль = "Key";
	
	КомандаЗапроса = "";
	Если ДанныеЗапроса <> Неопределено Тогда
		Для Каждого Элемент Из ДанныеЗапроса Цикл
			Если ТипЗнч(Элемент.Значение) = Тип("Число") Тогда
				ЭлементЗначение = Формат(Элемент.Значение,"ЧН=0; ЧГ=0");
			ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Булево") Тогда
				ЭлементЗначение = Формат(Элемент.Значение,"БЛ=false; БИ=true");
			ИначеЕсли Не ЗначениеЗаполнено(Элемент.Значение) Тогда
				ЭлементЗначение = "";
			Иначе
				ЭлементЗначение = Элемент.Значение;
			КонецЕсли;
			КомандаЗапроса = КомандаЗапроса + "|" + Элемент.Ключ + "=" + ЭлементЗначение;
		КонецЦикла;
	КонецЕсли;
	КомандаЗапроса = НаименованиеФункции + ":" + Сред(КомандаЗапроса, 2);
	
	ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
	ХешированиеДанных.Добавить(КомандаЗапроса + Пароль);
	Хеш = НРег(СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""));
	
	ТекстЗапроса =
	"<?xml version=""1.0"" encoding=""UTF-8""?>
	|<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/""
	|	xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/""
	|	xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
	|	xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
	|	xmlns:SOAP-ENC=""http://schemas.xmlsoap.org/soap/encoding/"">
	|	<SOAP-ENV:Body><ns5692:QueryDataLogin xmlns:ns5692=""http://Aftermarket.Kito.ec""><request xsi:type=""xsd:string"">ТелоЗапроса</request><login xsi:type=""xsd:string"">" + Логин + "</login><hmac xsi:type=""xsd:string"">хеш</hmac></ns5692:QueryDataLogin></SOAP-ENV:Body>
	|</SOAP-ENV:Envelope>";
	ТекстЗапроса = СтрЗаменить(СтрЗаменить(ТекстЗапроса, "хеш", Хеш), "ТелоЗапроса", КомандаЗапроса);
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Accept", "*/*");
	Заголовки.Вставить("Content-Type","text/xml; charset=UTF-8");
	Заголовки.Вставить("SOAPAction", """http://Aftermarket.Kito.ec""");
	
	Соединение = Новый HTTPСоединение(Сервер);
	
	HTTPЗапрос = Новый HTTPЗапрос("ec.Kito.Aftermarket/services/Catalog.CatalogHttpSoap11Endpoint/", Заголовки);
	HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса);
	
	HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
	
	СтрокаОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
	
	Если HTTPОтвет.КодСостояния = 200 Тогда
		// Разберем ответ
		ПотокXML = Новый ЧтениеXML;
		Чтение   = Новый ЧтениеXML;
		XDTO     = Новый ФабрикаXDTO;
		ПотокXML.УстановитьСтроку(СтрокаОтвета);
		Чтение.УстановитьСтроку(XDTO.ПрочитатьXML(ПотокXML).Body["QueryDataLoginResponse"].return);
		ОбъектXDTO = XDTO.ПрочитатьXML(Чтение);
		Чтение.Закрыть();
		ПотокXML.Close();
		XDTO = Неопределено;
		Если ОбъектXDTO[НаименованиеФункции].Свойства().Количество() > 0 Тогда
			Возврат ОбъектXDTO[НаименованиеФункции];
		Иначе
			Возврат Неопределено;
		КонецЕсли;
	Иначе
		СтруктураЗапроса.КодОтвета = 500;
		СтруктураЗапроса.Ошибки.Добавить("LaximoAM: Ошибка при выполнении запроса");
		Если HTTPОтвет.КодСостояния = 500 Тогда
			ПотокXML = Новый ЧтениеXML;
			ПотокXML.УстановитьСтроку(СтрокаОтвета);
			XDTO = Новый ФабрикаXDTO;
			Ошибка = XDTO.ПрочитатьXML(ПотокXML).Body.fault.faultstring;
			ПотокXML.Close();
			XDTO = Неопределено;
			Возврат Ошибка;
		Иначе
			Возврат СтрокаОтвета;
		КонецЕсли;
	КонецЕсли;
	
КонецФункции


Функции веб-сервисов Laximo

Общая информация

Принципы работы Безопасность Локализация каталогов Обновление каталогов Обработка ошибок
Laximo.OEM Поиск каталога ListCatalogs,GetCatalogInfo
Поиск автомобиля FindVehicleByVIN, FindVehicleByFrame, FindVehicleByFrameNo, FindVehicle, GetWizard2, GetWizardNextStep2, FindVehicleByWizard2, GetVehicleInfo, ExecCustomOperation
Поиск узла ListUnits, ListCategories, GetFilterByUnit, GetUnitInfo
Поиск деталей в узле ListDetailByUnit, ListImageMapByUnit, GetFilterByDetail
Быстрый поиск деталей ListQuickGroup, ListQuickDetail
Laximo.Aftermarket Поиск деталей FindOEM, FindReplacements, FindDetail, FindOEMCorrection
Производитель ManufacturerInfo, ListManufacturer
Библиотеки и примеры использования веб-сервисов Laximo
PHP
Скачать
PHP-библиотеку
Примеры использования библиотеки Изменение поведения и внешнего вида элементов каталогов
GuayaquilExtender
Пример переопределения стандартного поведения классов отображения данных в html
Пример получения кроссов с LaximoAftermarket
Работа с каталогами на примере отображения списка каталогов
Скачать библиотеку ASP.NET ASP.NET Guayaquil library
Варианты внедрения сервисов Laximo в 1С

Связанные категории