Процедура КнопкаВыполнитьНажатие(Кнопка)
Перем КодВозврата;
ДирКурл = "C:\curl";
УИН_Улицы = "";
УИН_Дома = "";
ЗапуститьПриложение(
ДирКурл + "\curl -k --cacert " + ДирКурл + "\cacert.pem --tlsv1.2 https://" + Логин + ":" + Пароль + "@api.orgaddress.1c.ru/orgaddress/v1?wsdl -o wsdl.xsd",
ДирКурл,
Истина,
КодВозврата
);
WSОпределения = Новый WSОпределения(ДирКурл + "\wsdl.xsd");//, Логин, Пароль);
Сервис = Новый WSПрокси(WSОпределения, "http://www.v8.1c.ru/ssl/AddressSystem", "AddressSystem", "AddressSystemSoap12");
Сервис.Пользователь = Логин;
Сервис.Пароль = Пароль;
СписокДляПроверки = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.v8.1c.ru/ssl/AddressSystem", "AddressList"));
//В список проверки добавляем адрес
ТипЭлементаСписка = СписокДляПроверки.Свойства().Получить("Item").Тип;
ПроверяемыйАдрес = СписокДляПроверки.Item.Добавить(Сервис.ФабрикаXDTO.Создать(ТипЭлементаСписка));
//Уровни, по которым проверяется адрес (см. в специальной функции)
ПроверяемыйАдрес.Levels = УровниКлассификатораФИАС();
АдресXDTO = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.v8.1c.ru/ssl/contactinfo", "АдресРФ"));
АдресXDTO.СубъектРФ = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), АдресСотрудника.Регион);
Если ЗначениеЗаполнено(АдресСотрудника.Район) Тогда
//Добавим в адрес район
ТипЭлемента = АдресXDTO.Свойства().Получить("СвРайМО").Тип;
РайонАдреса = Сервис.ФабрикаXDTO.Создать(ТипЭлемента);
РайонАдреса.Район = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), АдресСотрудника.Район);
АдресXDTO.СвРайМО = РайонАдреса;
КонецЕсли;
АдресXDTO.Город = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), АдресСотрудника.Город);
Если ЗначениеЗаполнено(АдресСотрудника.НаселенныйПункт) Тогда
//Добавим в адрес населенный пункт
АдресXDTO.НаселПункт = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), АдресСотрудника.НаселенныйПункт);
КонецЕсли;
АдресXDTO.Улица = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), АдресСотрудника.Улица);
//Добавим в адрес дом
ТипЭлементаСписка = АдресXDTO.Свойства().Получить("ДопАдрЭл").Тип;
ДомАдреса = АдресXDTO.ДопАдрЭл.Добавить(Сервис.ФабрикаXDTO.Создать(ТипЭлементаСписка));
ТипЭлементаСписка = ДомАдреса.Свойства().Получить("Номер").Тип;
НомерДома = ДомАдреса.Номер.Добавить(Сервис.ФабрикаXDTO.Создать(ТипЭлементаСписка));
Если АдресСотрудника.ТипДома = Перечисления.ТипыДомов.Дом Тогда
КодЭлементаДом = "1010";
ИначеЕсли АдресСотрудника.ТипДома = Перечисления.ТипыДомов.Владение Тогда
КодЭлементаДом = "1020";
КонецЕсли;
Если КодЭлементаДом = Неопределено Тогда
Предупреждение("Неверно заполнен тип дома сотрудника. Перезаполните его заново");
Возврат "";
КонецЕсли;
НомерДома.Тип = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), КодЭлементаДом);
НомерДома.Значение = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), АдресСотрудника.Дом);
Если ЗначениеЗаполнено(АдресСотрудника.Корпус) Тогда
//Добавим в адрес корпус
ТипЭлементаСписка = АдресXDTO.Свойства().Получить("ДопАдрЭл").Тип;
КорпусАдреса = АдресXDTO.ДопАдрЭл.Добавить(Сервис.ФабрикаXDTO.Создать(ТипЭлементаСписка));
ТипЭлементаСписка = КорпусАдреса.Свойства().Получить("Номер").Тип;
НомерКорпуса = КорпусАдреса.Номер.Добавить(Сервис.ФабрикаXDTO.Создать(ТипЭлементаСписка));
Если АдресСотрудника.ТипКорпуса = Перечисления.ТипыКорпусов.Корпус Тогда
КодЭлементаПомещения = "1050";
ИначеЕсли АдресСотрудника.ТипКорпуса = Перечисления.ТипыКорпусов.Литера Тогда
КодЭлементаПомещения = "1080";
ИначеЕсли АдресСотрудника.ТипКорпуса = Перечисления.ТипыКорпусов.Строение Тогда
КодЭлементаПомещения = "1060";
КонецЕсли;
НомерКорпуса.Тип = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), КодЭлементаПомещения);
НомерКорпуса.Значение = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), АдресСотрудника.Корпус);
КонецЕсли;
Если ЗначениеЗаполнено(АдресСотрудника.Квартира) Тогда
//Добавим в адрес квартиру
ТипЭлементаСписка = АдресXDTO.Свойства().Получить("ДопАдрЭл").Тип;
КвартираАдреса = АдресXDTO.ДопАдрЭл.Добавить(Сервис.ФабрикаXDTO.Создать(ТипЭлементаСписка));
ТипЭлементаСписка = КвартираАдреса.Свойства().Получить("Номер").Тип;
НомерКвартиры = КвартираАдреса.Номер.Добавить(Сервис.ФабрикаXDTO.Создать(ТипЭлементаСписка));
Если АдресСотрудника.ТипКвартиры = Перечисления.ТипыКвартир.Квартира Тогда
КодЭлементаПомещения = "2010";
ИначеЕсли АдресСотрудника.ТипКвартиры = Перечисления.ТипыКвартир.Комната Тогда
КодЭлементаПомещения = "2050";
ИначеЕсли АдресСотрудника.ТипКвартиры = Перечисления.ТипыКвартир.Офис Тогда
КодЭлементаПомещения = "2030";
ИначеЕсли АдресСотрудника.ТипКвартиры = Перечисления.ТипыКвартир.Помещение Тогда
КодЭлементаПомещения = "2020";
КонецЕсли;
НомерКвартиры.Тип = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), КодЭлементаПомещения);
НомерКвартиры.Значение = Сервис.ФабрикаXDTO.Создать(Сервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), АдресСотрудника.Квартира);
КонецЕсли;
ПроверяемыйАдрес.Address = АдресXDTO;
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("CESU-8", "1.0", Истина);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\curl\request.xml", ПараметрыЗаписиXML);
ЗаписьXML.ЗаписатьНачалоЭлемента("soap:Envelope");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("soap", "http://www.w3.org/2003/05/soap-envelope");
ЗаписьXML.ЗаписатьНачалоЭлемента("soap:Body");
ЗаписьXML.ЗаписатьНачалоЭлемента("m:Analyze");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("m", "http://www.v8.1c.ru/ssl/AddressSystem");
ЗаписьXML.ЗаписатьНачалоЭлемента("m:Values");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
//Сервис.ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, СписокДляПроверки);
Сервис.ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ПроверяемыйАдрес, "Item");
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("m:Locale");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьXML.ЗаписатьТекст("ru");
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("m:CheckAsKladr");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьXML.ЗаписатьТекст("false");
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("m:ConfigurationName");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьXML.ЗаписатьТекст("БухгалтерияПредприятия");
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
ЗапуститьПриложение(
ДирКурл + "\curl -k --cacert " + ДирКурл + "\cacert.pem --tlsv1.2 --header ""content-type: application/soap+xml"" --data @request.xml https://" + Логин + ":" + Пароль + "@api.orgaddress.1c.ru/orgaddress/v1 -o response.xml",
ДирКурл,
Истина,
КодВозврата);
ЧтениеXML = Новый ЧтениеXML;
Попытка
ЧтениеXML.ОткрытьФайл("C:\curl\response.xml");
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось получить ответ.";
Сообщение.Сообщить();
Возврат;
КонецПопытки;
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда Продолжить; КонецЕсли;
Если ЧтениеXML.Имя = "Error" Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ЧтениеXML.ЗначениеАтрибута("Text");
Сообщение.Сообщить();
ИначеЕсли ЧтениеXML.Имя = "Variant" Тогда
УИН_Улицы = ЧтениеXML.ЗначениеАтрибута("ID");
УИН_Дома = ЧтениеXML.ЗначениеАтрибута("HouseID");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать