Дръпни-2! Достъп до уеб услуги с помощта на наличните инструменти
Добър ден на всички. Не съм писал от дълго време, защото решавах задачи от национално значение и нямаше време за мъдро морализиране на по-младото поколение))) Нека да разгледаме как да създадем услуга и да я издърпаме с помощта на прекрасното хромирано разширение Boomerang.
Напоследък все по-често се сблъсквам със ситуация, при която клиент се нуждае от интеграция и той иска да създаде уеб услуга в 1C за това. Активно подкрепям и подхранвам такива идеи с клиентите, като се съгласявам с тях и изразявам с всичките си изрази основателността на подобен подход. При това, разбира се, осъзнавайки, че освен мен, не са много хората, които правят подобни неща с лекотата на вродената лекота. Много миряни откровено отслабват от подобни задачи. За да обърна тенденцията и да преодолея вътрешните си комплекси, пиша статиите си в този сайт.
КАКВО Е УЕБ УСЛУГА
Всъщност уеб услугата е вид дефиниция на списък от функции и техните параметри чрез XSD схема, получена от външно приложение чрез HTTP заявка към HTTP сървър. В контекста на 1C това е списък с функции, дефинирани в 1C като уеб услуга, които са публикувани на HTTP сървър (apach2 / apache2.2 / IIS) и са достъпни за външни системи чрез съответната HTTP връзка. 1C прикачва своята библиотека към конфигурациите на сървъра, който се свързва с 1C, изтегляйки една или друга функция на уеб услугата, описана в 1C.
Тези. диаграмата е проста:
1. Програмистът 1C създава обект за конфигуриране на уеб услуга в 1C с желаното име. Освен това в уеб услугата се създават функции и се дефинират техните параметри.
2. Администраторът публикува уеб услугата от 1C конфигуратора на уеб сървъра, след което уеб сървърът се рестартира.
4. Външна програма може да извика функция на уеб услуга, като изпрати тяло на заявка за функция с параметри и параметри чрез POST заявка.получавате в отговор резултата от функцията, който тази функция на езика 1C връща с помощта на командата "return my_result".
НИЕ ЗАВАРЯВАМЕ ПРОСТА УСЛУГА
Така че, за да изградим примитивна услуга, можем да създадем нова конфигурация и просто да добавим нова услуга. Нека го наречем TestWs. След това добавете към него операция, наречена OperationTestWs, в която указваме параметъра "ParameterTestWs" с тип String. Като цяло си струва да се отбележи, че параметрите на уеб услугите и стойностите, върнати от тях, се описват от типовете XDTO пакети. Параметърът тип "низ" (по подразбиране) ще бъде описан като "низ (http://www.w3.org/2001/XMLSchema)".
Всъщност получихме нещо подобно:
Искам да ви предупредя веднага: ако щракнете върху иконата "Отвори" в полето "Име на процедурата", преди да създадете параметър, функцията ще бъде създадена без параметри. И ако добавите параметър след това, той няма да влезе автоматично във функцията - ще трябва или да изтриете функцията, да изчистите полето "Име на процедурата" и да щракнете отново върху "Отвори" или ръчно да добавите името на параметъра към функционалния модул.
И така, тук създадохме услуга и функция. Нека сега добавим прост код, който връща текущите дата и час:
ПУБЛИКАЦИЯ
Тези, които използват операционна система Windows, могат да отидат на уеб сървъра в конфигуратора и да щракнат нещо там. Но тъй като По принцип не използвам Windows на уеб сървъри, 1C сървъри и сървъри за бази данни, тогава аз, като истински мъж, ще направя всичко от командния ред (би било нещо да се направи.). Затова пиша:
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" base="/testws" ib="Srvr=192.168.1.5;Ref=testws;" enable="false">
След това рестартирам уеб сървъра:
За да извикате уеб услуга, можете да инсталирате разширението за Google Chrome - Boomerang. За да направите това, в менюто „Още инструменти“ изберете „Разширения“, там щракнете върху „Още разширения“ и напишете „Бумеранг“ в лентата за търсене. Инсталирайте го и стартирайте. След това добавете нов проект:
Натиснете OK. В прозореца, който се отваря, щракнете върху единствения бутон, предлагащ създаване на услуга.
Напишете http://localhost/testws/ws/testws.1cws?wsdl в горния ред и името на услугата в долния ред.
В резултат на това вляво ще имате името на услугата и функцията "OperationTestWs". След това трябва да създадете заявка. За да направите това, вдясно от Service Function щракнете върху "стрелката", която отваря падащото меню. Изберете „Създаване на заявка“ от това меню.
В резултат на това ще видите заявка към услугата вдясно:
В заявката, вместо "?" трябва да посочите сервизния параметър, който ще му бъде предаден. След това щракнете върху бутона „Изпрати“ вдясно, след което услугата ще ви върне исканите данни:
Всъщност тук имаме дата и час - като в аптека.
Ще се спра малко на последните две скрийншота. Първият има раздел AUTH - можете да посочите потребителско име и парола за услугата в него. Останалите раздели не ми работеха. За да посочите параметрите, предадени на уеб услугата, използвайте генерираната заявка и заменете параметъра вместо знака "?".
На втората екранна снимка виждаме отговора на услугата. Отляво има три превключвателя за опции за показване: активен - квадрат - пълен резултат от заявката. Око - показване на директния резултат. И нещо като триъгълник-самолет - пълен RAW отговор със сървърни заглавки. Разделът „HEADERS“ съдържа отделни заглавки на отговора на сървъра. По-вдясно е информацията за дължината.заявка, време на изпълнение, отговор на сървъра (200 - успех). След това отметка с молба и отметка с отговор. В горната част, в менюто "POST", можете да изберете типа заявка (GET / PATCH / PUT / DELETE.) - всичко това може да работи за REST-API 1C.
Надявам се, че тази публикация ще бъде полезна и ще хвърли малко светлина върху темата за уеб услугите и достъпа до тях, като направи услугите за тестване прости и разбираеми.