วิธีการปรับใช้บริการเว็บบนอินเทอร์เน็ต บริการเว็บ ให้ฟังก์ชันการทำงานผ่านบริการบนเว็บ

ชื่อกระทู้เป็นคำถามจริงๆ เพราะ... ฉันเองก็ไม่รู้ว่ามันคืออะไรและเป็นครั้งแรกที่ฉันจะพยายามทำงานกับมันภายใต้กรอบของบทความนี้ สิ่งเดียวที่ฉันรับประกันได้ก็คือโค้ดที่แสดงด้านล่างจะใช้งานได้ แต่วลีของฉันจะเป็นเพียงการคาดเดาและการคาดเดาว่าฉันเข้าใจทั้งหมดนี้ได้อย่างไร ไปกันเลย...

การแนะนำ

เราต้องเริ่มต้นด้วยสาเหตุที่แนวคิดของบริการเว็บถูกสร้างขึ้น เมื่อแนวคิดนี้ปรากฏขึ้นในโลก เทคโนโลยีก็มีอยู่แล้วที่อนุญาตให้แอปพลิเคชันโต้ตอบในระยะไกล โดยที่โปรแกรมหนึ่งสามารถเรียกวิธีการบางอย่างในอีกโปรแกรมหนึ่ง ซึ่งสามารถเปิดใช้งานบนคอมพิวเตอร์ที่ตั้งอยู่ในเมืองอื่นหรือแม้แต่ประเทศอื่นได้ ทั้งหมดนี้เรียกสั้น ๆ ว่า RPC (การเรียกขั้นตอนระยะไกล) ตัวอย่าง ได้แก่ เทคโนโลยี CORBA และสำหรับ Java - RMI (Remote Method Invoking) และทุกอย่างดูเหมือนจะดีในตัวพวกเขา โดยเฉพาะใน CORBA เพราะ... คุณสามารถทำงานกับมันในภาษาการเขียนโปรแกรมใดก็ได้ แต่ยังมีบางอย่างขาดหายไป ฉันเชื่อว่าข้อเสียของ CORBA คือมันทำงานผ่านตัวมันเองบางส่วนได้ โปรโตคอลเครือข่ายแทนที่จะเป็น HTTP แบบธรรมดาซึ่งจะผ่านไฟร์วอลล์ใดก็ได้ แนวคิดของบริการเว็บคือการสร้าง RPC ที่จะแทรกลงในแพ็กเก็ต HTTP จึงเริ่มมีการพัฒนามาตรฐาน แนวคิดพื้นฐานของมาตรฐานนี้คืออะไร:
  1. สบู่- ก่อนที่จะเรียกขั้นตอนระยะไกล คุณต้องอธิบายการโทรนี้ก่อน ไฟล์ XMLรูปแบบ e SOAP SOAP เป็นเพียงหนึ่งในมาร์กอัป XML จำนวนมากที่ใช้ในบริการเว็บ ทุกอย่างที่เราต้องการส่งที่ไหนสักแห่งผ่าน HTTP จะถูกแปลงเป็นคำอธิบาย XML SOAP ก่อน จากนั้นจึงยัดลงในแพ็กเก็ต HTTP และส่งไปยังคอมพิวเตอร์เครื่องอื่นบนเครือข่ายผ่าน TCP/IP
  2. WSDL- มีบริการเว็บเช่น โปรแกรมที่สามารถเรียกวิธีการจากระยะไกลได้ แต่มาตรฐานกำหนดให้โปรแกรมนี้ต้องมีคำอธิบายว่า "ใช่ คุณพูดถูก นี่คือบริการทางเว็บจริงๆ และคุณสามารถเรียกใช้วิธีการดังกล่าวได้จากบริการดังกล่าว" คำอธิบายนี้แสดงด้วยไฟล์ XML อื่นซึ่งมีรูปแบบที่แตกต่างกัน คือ WSDL เหล่านั้น. WSDL เป็นเพียงไฟล์ XML ที่อธิบายบริการบนเว็บและไม่มีอะไรเพิ่มเติม
ทำไมคุณถามสั้น ๆ ? คุณไม่สามารถเจาะจงมากขึ้นได้ไหม? อาจเป็นไปได้ แต่การทำเช่นนี้ คุณจะต้องหันไปหาหนังสือเช่น T. Mashnin, “Java Web Services” ที่นั่นตลอด 200 หน้าแรกก็มี คำอธิบายโดยละเอียดแต่ละแท็กของมาตรฐาน SOAP และ WSDL มันคุ้มค่าที่จะทำไหม? ในความคิดของฉัน ไม่ เพราะ... ทั้งหมดนี้ถูกสร้างขึ้นโดยอัตโนมัติใน Java และคุณเพียงแค่ต้องเขียนเนื้อหาของวิธีการที่ควรจะเรียกจากระยะไกลเท่านั้น ดังนั้น API เช่น JAX-RPC จึงปรากฏใน Java หากใครไม่ทราบ เมื่อพวกเขาบอกว่า Java มี API เช่นนั้น นั่นหมายความว่ามีแพ็คเกจที่มีชุดคลาสที่ห่อหุ้มเทคโนโลยีดังกล่าวไว้ JAX-RPC พัฒนาไปตามกาลเวลาจากเวอร์ชันสู่เวอร์ชันและในที่สุดก็กลายเป็น JAX-WS เห็นได้ชัดว่า WS ย่อมาจาก WebService และคุณอาจคิดว่านี่เป็นเพียงการเปลี่ยนชื่อ RPC เป็นคำศัพท์ยอดนิยมในปัจจุบัน ซึ่งไม่เป็นความจริงเพราะว่า ขณะนี้บริการทางเว็บได้ย้ายออกไปจากแนวคิดดั้งเดิม และช่วยให้คุณไม่เพียงแต่เรียกวิธีการระยะไกลเท่านั้น แต่ยังส่งข้อความเอกสารในรูปแบบ SOAP ได้อีกด้วย ฉันยังไม่รู้ว่าทำไมถึงจำเป็น ไม่น่าเป็นไปได้ที่คำตอบในที่นี้จะเป็น "ในกรณีที่จำเป็น" ตัวฉันเองต้องการเรียนรู้จากสหายที่มีประสบการณ์มากกว่า และสุดท้าย JAX-RS ก็ปรากฏขึ้นสำหรับสิ่งที่เรียกว่าบริการเว็บ RESTful แต่นี่คือหัวข้อของบทความแยกต่างหาก การแนะนำตัวจะจบลงเพียงเท่านี้ เพราะ... ต่อไปเราจะเรียนรู้การทำงานกับ JAX-WS

แนวทางทั่วไป

ในบริการบนเว็บจะมีไคลเอนต์และเซิร์ฟเวอร์อยู่เสมอ เซิร์ฟเวอร์คือบริการบนเว็บของเรา และบางครั้งเรียกว่าจุดสิ้นสุด (เช่นเดียวกับใน จุดสิ้นสุดที่ข้อความ SOAP จากไคลเอนต์ไปถึง) เราจำเป็นต้องทำสิ่งต่อไปนี้:
  1. อธิบายอินเทอร์เฟซของบริการบนเว็บของเรา
  2. ใช้อินเทอร์เฟซนี้
  3. เปิดตัวบริการเว็บของเรา
  4. เขียนไคลเอนต์และเรียกใช้วิธีการบริการเว็บที่ต้องการจากระยะไกล
สามารถเปิดใช้บริการเว็บได้ ในรูปแบบที่แตกต่างกัน: อธิบายคลาสด้วยวิธีการหลักและเรียกใช้บริการเว็บโดยตรงในฐานะเซิร์ฟเวอร์ หรือปรับใช้กับเซิร์ฟเวอร์เช่น Tomcat หรืออื่น ๆ ในกรณีที่สอง เราไม่ได้เปิดเซิร์ฟเวอร์ใหม่และไม่ได้เปิดพอร์ตอื่นบนคอมพิวเตอร์ แต่เพียงบอกคอนเทนเนอร์เซิร์ฟเล็ต Tomcat ว่า “เราได้เขียนคลาสบริการเว็บที่นี่ โปรดเผยแพร่เพื่อให้ทุกคนที่ติดต่อคุณสามารถ ใช้บริการเว็บของเรา" ไม่ว่าเราจะเปิดบริการเว็บด้วยวิธีใดเราก็จะมีลูกค้ารายเดียวกัน

เซิร์ฟเวอร์

มาเปิดตัว IDEA และสร้างกัน โครงการใหม่ สร้างโครงการใหม่- มาระบุชื่อกันเถอะ สวัสดีเว็บเซอร์วิสและกดปุ่ม ต่อไปจากนั้นกดปุ่ม เสร็จ- ในโฟลเดอร์ srcมาสร้างแพ็คเกจกันดีกว่า ru.javarush.ws- ในแพ็คเกจนี้เราจะสร้างอินเทอร์เฟซ HelloWebService: package ru ชวารัช เป็น; // สิ่งเหล่านี้คือคำอธิบายประกอบ เช่น วิธีทำเครื่องหมายชั้นเรียนและวิธีการของเรา // เกี่ยวข้องกับเทคโนโลยีบริการเว็บนำเข้า javax. เจดับบลิว. Webวิธีการ; นำเข้า javax. เจดับบลิว. บริการเว็บ;นำเข้า javax. เจดับบลิว. สบู่. การผูกสบู่; // เราบอกว่าอินเทอร์เฟซของเราจะทำงานเป็นบริการบนเว็บ@บริการเว็บ // เราบอกว่าเว็บเซอร์วิสจะใช้ในการเรียกเมธอด@SOAPBinding (style = SOAPBinding.Style.RPC) อินเทอร์เฟซสาธารณะ HelloWebService ( // เราบอกว่าวิธีนี้สามารถเรียกจากระยะไกลได้@WebMethod สตริงสาธารณะ getHelloString (ชื่อสตริง); ) ในโค้ดนี้ คลาส WebService และ WebMethod เรียกว่าคำอธิบายประกอบและไม่ทำอะไรเลยนอกจากทำเครื่องหมายอินเทอร์เฟซของเราและวิธีการของมันเป็นบริการเว็บ เช่นเดียวกับคลาส SOAPBinding ข้อแตกต่างเพียงอย่างเดียวคือ SOAPBinding เป็นคำอธิบายประกอบพร้อมพารามิเตอร์ ในกรณีนี้ พารามิเตอร์ style ใช้กับค่าที่ระบุว่าบริการเว็บจะไม่ทำงานผ่านข้อความเอกสาร แต่เป็น RPC แบบคลาสสิกเช่น เพื่อเรียกวิธีการ ลองใช้ตรรกะอินเทอร์เฟซของเราและสร้างคลาส HelloWebServiceImpl ในแพ็คเกจของเรา โดยวิธีการที่ฉันทราบว่าการสิ้นสุดคลาสด้วย Impl เป็นแบบแผนใน Java ตามที่กำหนดการใช้งานอินเทอร์เฟซ (Impl - จากคำว่า การใช้งาน เช่น การใช้งาน) นี่ไม่ใช่ข้อกำหนดและคุณมีอิสระที่จะตั้งชื่อคลาสตามที่คุณต้องการ แต่ต้องมีมารยาทที่ดี: package ru ชวารัช เป็น; // คำอธิบายประกอบแบบเดียวกับเมื่ออธิบายอินเทอร์เฟซ นำเข้า javax. เจดับบลิว. บริการเว็บ;// แต่ที่นี่ใช้กับพารามิเตอร์ endpointInterface// บ่งชี้ ชื่อเต็มคลาสอินเทอร์เฟซของบริการบนเว็บของเรา @บริการเว็บ (endpointInterface="ru.javarush.ws.HelloWebService" src) คลาสสาธารณะ HelloWebServiceImpl ใช้ HelloWebService ( @Override public String getHelloString (ชื่อสตริง) ( // แค่กลับมาทักทายกลับ "สวัสดี" + ชื่อ + "!" - ) ) มาเปิดตัวบริการเว็บของเราในฐานะเซิร์ฟเวอร์อิสระเช่น โดยไม่ต้องมีส่วนร่วมของ Tomcat และเซิร์ฟเวอร์แอปพลิเคชันใด ๆ (นี่คือหัวข้อสำหรับการสนทนาแยกต่างหาก) เมื่อต้องการทำเช่นนี้ในโครงสร้างโครงการในโฟลเดอร์ มาสร้างแพ็คเกจ ru.javarush.endpoint กัน และในนั้นเราจะสร้างคลาส HelloWebServicePublisher ด้วยเมธอด main: package ru ชวารัช จุดสิ้นสุด;นำเข้า ru. ชวารัช ส. สวัสดีWebServiceImpl; HelloWebServicePublisher ระดับสาธารณะ ( public static void main (String... args) ( // เริ่มเว็บเซิร์ฟเวอร์บนพอร์ต 1986 // และไปยังที่อยู่ที่ระบุในอาร์กิวเมนต์แรก// เริ่มบริการเว็บที่ส่งผ่านในอาร์กิวเมนต์ที่สอง จุดสิ้นสุด เผยแพร่("http://localhost:1986/wss/hello" , HelloWebServiceImpl ใหม่ () ;) ) ทีนี้เรามาเริ่มคลาสนี้กันดีกว่าโดยคลิก

กะ+F10

- จะไม่ปรากฏในคอนโซล แต่เซิร์ฟเวอร์กำลังทำงานอยู่ คุณสามารถตรวจสอบได้โดยพิมพ์บรรทัด http://localhost:1986/wss/hello?wsdl ในเบราว์เซอร์ของคุณ ในทางกลับกัน หน้าที่เปิดขึ้นมาจะพิสูจน์ได้ว่าเรามีเว็บเซิร์ฟเวอร์ (http://) ที่ทำงานบนพอร์ต 1986 บนคอมพิวเตอร์ของเรา (localhost) และในทางกลับกัน แสดงคำอธิบาย WSDL ของบริการบนเว็บของเรา หากคุณหยุดแอปพลิเคชัน คำอธิบายจะไม่สามารถใช้งานได้ เช่นเดียวกับบริการบนเว็บ ดังนั้นเราจะไม่ทำเช่นนี้ แต่ดำเนินการเขียนไคลเอ็นต์ต่อไป srcลูกค้า ในโฟลเดอร์โครงการ มาสร้างแพ็คเกจ ru.javarush.client และในคลาส HelloWebServiceClient ด้วยวิธีการหลัก: package ru ชวารัช ลูกค้า;// จำเป็นต้องได้รับคำอธิบาย wsdl และผ่านมัน // เข้าถึงบริการเว็บเองนำเข้าจาวา สุทธิ. URL; // ข้อยกเว้นนี้จะเกิดขึ้นเมื่อทำงานกับวัตถุ URL นำเข้าจาวา สุทธิ. URLException มีรูปแบบไม่ถูกต้อง;// คลาสเพื่อแยกวิเคราะห์ xml พร้อมคำอธิบาย wsdl // และไปถึงแท็กบริการในนั้นนำเข้า javax. xml. เนมสเปซ ชื่อคิว; นำเข้า javax. xml. ส. บริการ; // อินเทอร์เฟซของบริการเว็บของเรา (เราต้องการมากกว่านี้)นำเข้า ru. ชวารัช ส. สวัสดีเว็บเซอร์วิส; HelloWebServiceClient คลาสสาธารณะ ( โมฆะสาธารณะคงหลัก (String args) พ่น MalformedURLException () ; // สร้างลิงก์ไปยังคำอธิบาย wsdl URL URL = URL ใหม่ ("http://localhost:1986/wss/hello?wsdl" // เราดูที่พารามิเตอร์ของตัวสร้างถัดไปในแท็กแรกของคำอธิบาย WSDL - คำจำกัดความ // ดูอาร์กิวเมนต์ที่ 1 ในแอตทริบิวต์ targetNamespace// ดูอาร์กิวเมนต์ที่ 2 ในแอตทริบิวต์ชื่อ QName qname = QName ใหม่ ("http://ws.site/" , "HelloWebServiceImplService" ) ; // ตอนนี้เราสามารถเข้าถึงแท็กบริการในคำอธิบาย wsdl แล้วการบริการ = บริการ สร้าง (url, qname) ;ระบบ. ออก. println (สวัสดี getHelloString ( "JavaRush" ) ) ;

) ) ฉันให้ความคิดเห็นสูงสุดเกี่ยวกับรหัสในรายการ ฉันไม่มีอะไรจะเพิ่ม ดังนั้นมาเริ่มกันเลย (Shift+F10) เราควรเห็นข้อความในคอนโซล: สวัสดี JavaRush! หากคุณไม่เห็น แสดงว่าคุณอาจลืมเริ่มบริการเว็บ

บทสรุป หัวข้อนี้เป็นการอธิบายสั้นๆ เกี่ยวกับบริการทางเว็บ ฉันจะพูดอีกครั้งว่าสิ่งที่ฉันเขียนส่วนใหญ่เป็นการเดาของฉันว่ามันทำงานอย่างไร ดังนั้นคุณไม่ควรเชื่อใจฉันมากเกินไป ฉันจะขอบคุณถ้าผู้รอบรู้คอยตักเตือนฉัน เพราะเมื่อนั้นฉันจะได้เรียนรู้อะไรบางอย่าง

รปภ.

บริการเว็บใน 1C

บทความนี้จะกล่าวถึงการรวม 1C กับบริการเว็บที่มีอยู่และการใช้ 1C เป็นบริการเว็บ


ในกรณีนี้ บริการเว็บจะเข้าใจว่าเป็นระบบที่ทำงานบนอินเทอร์เน็ต และให้การโต้ตอบกับบริการเหล่านั้นไม่เพียงแต่ผ่าน SOAP (ซึ่งก็คือบริการบนเว็บ) แต่ยังรวมถึงวิธีอื่น ๆ รวมถึงคำขอ HTTP(S) ปกติด้วย

ความเสี่ยงของการใช้บริการเว็บ 1C

แพลตฟอร์ม 1C81 แนะนำการใช้งานบริการเว็บ

  1. แต่การใช้งานนั้นเต็มไปด้วยความเสี่ยง:
  2. 1C8 ทำงานได้ไม่ดีบน HTTPS ไม่มีเครื่องมือวินิจฉัย ดังนั้นบางครั้งจึงเป็นไปไม่ได้ที่จะเข้าใจว่าทำไม แม้ว่าจะมีใบรับรอง แต่บริการก็ไม่ต้องการทำงานบน HTTPS วิธีแก้ไขคือใช้บริการเว็บผ่าน CURL หรือเพิ่มอุโมงค์ HTTPS

1C8 ปฏิบัติตามกฎในการตรวจสอบสคีมา WSDL ในบางครั้ง ด้วยเหตุผลที่ไม่สามารถอธิบายได้ สคีมา WSDL จึงไม่ต้องการโหลดลงในลิงก์ WS คุณสามารถหาเหตุผลได้จากฟอรัมพันธมิตรจากผู้เชี่ยวชาญเพียงคนเดียวเท่านั้น ไม่มีเครื่องมือวินิจฉัยสคีมา WSDL แม้จะระบุเหตุผลหรือบรรทัดที่การโหลดสคีมาถูกขัดจังหวะก็ตาม

กฎเกณฑ์สำหรับการสร้างบริการการขาย

ลูกค้าจะออกเอกสารการขาย (ใบเสร็จรับเงิน) เฉพาะในกรณีที่ธุรกรรมการบริการสำเร็จ มิฉะนั้นสถานการณ์อาจเกิดขึ้นได้เมื่อลูกค้าได้รับเช็คและมั่นใจว่าเขาได้รับบริการ แต่ในความเป็นจริงเขาไม่ได้รับ

การใช้บริการ SOAP ภายนอก

บริการเว็บ SOAP ใช้สคีมา WSDL และออบเจ็กต์ XDTO เพื่อแสดงข้อมูล

กำลังโหลด WSDL

หากต้องการใช้บริการภายนอก คุณต้องดาวน์โหลดสคีมา WSDL

การตรวจสอบความถูกต้องของสกีมา WSDL

บางครั้งสคีมา WSDL ไม่โหลดลงใน 1C คุณสามารถตรวจสอบความถูกต้อง (ความถูกต้อง) ของสคีมาได้โดยใช้เครื่องมือตรวจสอบสคีมา WSDL ใดๆ เช่น http://www.validwsdl.com/

คุณต้องอัปโหลดโครงร่างไปยังไซต์ http บางแห่ง (คุณสามารถใช้ ftp) และระบุที่อยู่ของไฟล์ที่โหลดโครงร่าง:

ลักษณะเฉพาะของการโหลด WSDL ใน 1C คือไม่สามารถโหลดสคีมาที่ถูกต้องได้ ไม่มีเครื่องมือตรวจสอบความถูกต้องในตัว ดังนั้นคุณต้องค้นหาข้อผิดพลาดโดยใช้การวิเคราะห์เชิงทำลาย ซึ่งจะลดจำนวนองค์ประกอบในวงจรอย่างต่อเนื่อง ตัวอย่างเช่น คุณสามารถลบคำอธิบายบริการเว็บได้

การประมวลผลสำหรับการทดสอบบริการเว็บภายนอกที่ทำงานอยู่

หากต้องการทดสอบบริการเว็บภายนอกที่ใช้งานได้ ให้ใช้การประมวลผล "Test ArbitraryWebService.epf" จากแพ็คเกจสำหรับบทความนี้

สามารถใช้การทดสอบโดยใช้ตัวอย่างของบริการ Morpher ซึ่งปฏิเสธชื่อ (ที่อยู่บริการ http://www.morpher.ru/WebServices/Morpher.asmx?WSDL):

ด้วยวิธีนี้ คุณสามารถทดสอบบริการใดๆ ที่มีจุดเข้าใช้งานแบบธรรมดาที่มีพารามิเตอร์ได้ ประเภทง่ายๆ: ตัวเลข, วันที่, สตริง

ในระหว่างการประมวลผล คุณยังสามารถระบุข้อมูลเข้าสู่ระบบและรหัสผ่านที่จำเป็นในการอนุญาตการเข้าถึงบริการเว็บได้

เครื่องมือมาตรฐานสำหรับบริการแก้ไขข้อบกพร่อง

สำหรับการดีบักคุณสามารถใช้โปรแกรม SoapUI ซึ่งสามารถส่งคำขอที่กำหนดเองไปยังบริการเว็บและรับการตอบกลับได้

สบู่และ HTTPS

น่าเสียดายที่ SOAP ใน 1C ทำงานค่อนข้างไม่แน่นอนเมื่อทำงานผ่านโปรโตคอล HTTPS การฝึกฝนแสดงให้เห็นว่าเป็นไปไม่ได้ที่จะบรรลุการเชื่อมต่อ HTTPS แม้ว่าจะมีการประกาศความเป็นไปได้ในแพลตฟอร์มก็ตาม การไม่มีเครื่องมือวินิจฉัยและแก้ไขจุดบกพร่องเพื่อค้นหาสาเหตุที่ทำให้การเชื่อมต่อไม่สำเร็จกำลังส่งผลกระทบอย่างหนัก ดังนั้นจึงสะดวกในการใช้ SOAP ผ่าน CURL

กลไกในตัวสำหรับการใช้ HTTPS หมายความว่าใบรับรองทั้งหมดจะต้องได้รับการเผยแพร่ ไฟล์ที่ใช้ร่วมกัน pem ในไดเร็กทอรีโปรแกรม 1C

การใช้ 1C เป็นบริการ

กฎสำหรับการพัฒนาบริการตาม 1C

ปฏิบัติการ สวัสดี

แนวทางปฏิบัติที่ดีคือการสร้างการดำเนินการในบริการที่แจ้งว่ามีบริการแล้ว สิ่งนี้ทำให้ชีวิตง่ายขึ้นสำหรับผู้ประกอบระบบ และจะง่ายขึ้นสำหรับพวกเขาในการตรวจสอบว่ามีการสื่อสารกับบริการหรือไม่

ตัวอย่างเช่น คุณสามารถใช้การดำเนินการ Hello โดยไม่มีพารามิเตอร์ ซึ่งจะคืนค่าบูลีนเป็น True

การเผยแพร่บริการเว็บ

ขั้นตอนมีการอธิบายไว้อย่างดีในเอกสารประกอบ: file:///C:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167634:

งานเผยแพร่บริการบนเว็บอยู่ที่การวางไฟล์การกำหนดค่า *.1cws ของบริการบนเว็บในไดเร็กทอรีที่เหมาะสมของเว็บเซิร์ฟเวอร์พร้อมกับการตั้งค่าที่เหมาะสมสำหรับเว็บเซิร์ฟเวอร์ ในการเผยแพร่บริการบนเว็บ คุณควรดำเนินการคำสั่งเมนู “การดูแลระบบ | การเผยแพร่บริการบนเว็บ”

จากผลของการดำเนินการคำสั่งนี้ หน้าต่างการเผยแพร่บริการบนเว็บจะเปิดขึ้น

หน้าต่างการเผยแพร่บริการบนเว็บประกอบด้วยเส้นทางไปยังเว็บเซิร์ฟเวอร์และสองรายการ:

  • “ บริการเว็บ” - รายการบริการเว็บกำหนดค่า
  • “สิ่งพิมพ์” - รายการบริการเว็บที่เผยแพร่บนเว็บเซิร์ฟเวอร์ที่ระบุ

การใช้ปุ่ม "การเชื่อมต่อ..." คุณควรระบุเว็บเซิร์ฟเวอร์ที่คุณต้องการเผยแพร่บริการบนเว็บ

หน้าต่างการเลือกเส้นทางเว็บเซิร์ฟเวอร์ช่วยให้คุณสามารถระบุเส้นทางได้สองวิธี:

  • บนแท็บ "ไฟล์" - วิธีการนี้ใช้เมื่อทำการเผยแพร่บนคอมพิวเตอร์เครื่องเดียวกับที่ติดตั้งเว็บเซิร์ฟเวอร์ เส้นทางเป็นไดเร็กทอรีในเครื่องที่สอดคล้องกับหน้าอินเทอร์เน็ตซึ่งจะมีการเรียกเว็บเซิร์ฟเวอร์ที่เผยแพร่
  • บนแท็บ "ไซต์ FTP" - วิธีการนี้ใช้เมื่อคุณต้องการเผยแพร่บริการเว็บบนคอมพิวเตอร์ระยะไกล หากต้องการเผยแพร่ คุณต้องระบุพารามิเตอร์การเชื่อมต่อ FTP ด้วย คอมพิวเตอร์ระยะไกลและไดเร็กทอรีที่จะเผยแพร่บริการเว็บ

บริการเว็บที่เลือกจะถูกเผยแพร่โดยใช้ปุ่ม "เผยแพร่"

หากต้องการยกเลิกการเผยแพร่บริการบนเว็บ ให้ใช้ปุ่ม "ลบ"

คุณสามารถเผยแพร่ไปยังไดเร็กทอรีในเครื่องหรือผ่านทาง FTP คุณยังสามารถเผยแพร่ไปยังเซิร์ฟเวอร์ระยะไกลผ่านเส้นทาง UNC ได้ หากเซิร์ฟเวอร์ระยะไกลเป็นส่วนหนึ่งของเครือข่ายท้องถิ่น

หลังจากการเผยแพร่ บริการเว็บจะพร้อมใช้งานตามที่อยู่ “http://localhost/test.1cws” หรือ “http://xxx.ru/test.1cws” โดยที่ xxx.ru คือที่อยู่ของเซิร์ฟเวอร์ระยะไกลและ localhost คือที่อยู่ทั่วไปของเซิร์ฟเวอร์ภายในเครื่อง

การอนุญาตบริการเว็บ 1C

ในการเข้าถึงบริการคุณต้องผ่านการรับรองความถูกต้อง

ปัญหาการอนุญาตได้รับการแก้ไขอย่างดีที่นี่: http://www.forum.mista.ru/topic.php?id=341168 และในไฟล์เอกสาร :///c:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81 htm

โดยทั่วไปแล้ว บริการเว็บจะทำงานภายใต้ผู้ใช้เฉพาะรายเดียว (โดยปกติจะเป็นผู้ใช้ที่สร้างขึ้นเป็นพิเศษ) คุณสามารถ "แนบ" ผู้ใช้ 1C โดยใช้การรับรองความถูกต้องของ Windows กับผู้ใช้ Windows IUSR_ (ปิดใช้งานการให้สิทธิ์ 1C สำหรับผู้ใช้) หรือคุณสามารถล้างรายชื่อผู้ใช้ 1C ได้ โดยไม่ต้องมีการอนุญาต

หากจำเป็นต้องมีผู้ใช้หลายคน คุณสามารถสร้างข้อมูลเข้าสู่ระบบได้หลายครั้งสำหรับเว็บเซิร์ฟเวอร์และผูกเข้ากับแต่ละข้อมูลได้ ผู้ใช้วินโดวส์และลงทะเบียนการเข้าถึงผู้ใช้ Windows ใน 1C

ในคุณสมบัติผู้ใช้และรหัสผ่านของวัตถุ WSProxy ไม่ใช่การเข้าสู่ระบบ 1C ที่ใช้ แต่เป็นการเข้าสู่ระบบของผู้ใช้เว็บเซิร์ฟเวอร์

ทดสอบบริการเว็บ 1C

หากต้องการทดสอบ 1C เป็นบริการบนเว็บ ให้ใช้การประมวลผล "Test ArbitraryWebService.epf" ตามที่อธิบายไว้ในส่วน "การทดสอบบริการเว็บภายนอกที่ทำงานอยู่"

ไฟล์ 1cws เป็นคำอธิบาย WSDL ของบริการเว็บ 1C

การใช้บริการในการขายปลีก

โดยทั่วไปแล้ว บริการค้าปลีกจะใช้เพื่อให้บริการต่างๆ แก่ประชาชน เช่น การรับชำระเงิน การชำระคืนเงินกู้ การโอนเงิน การจัดซื้อ ซอฟต์แวร์ฯลฯ

ในกรณีนี้ ใบเสร็จจะถูกสร้างขึ้นใน 1C สำหรับบริการที่มีให้ ซึ่งจะบันทึกพารามิเตอร์ธุรกรรม หลังจากนั้นเช็คนี้จะถูกพิมพ์ไปยังไคลเอนต์ด้วย ข้อมูลรายละเอียดเกี่ยวกับการให้บริการ สามารถพิมพ์เช็คเบื้องต้นเพื่อให้ลูกค้ายืนยันข้อมูลที่ป้อนจากคำพูดของเขาพร้อมลายเซ็นของเขา

บริการสามารถรวมเข้ากับโปรแกรมการขายปลีกที่เขียนด้วยภาษา 1C ได้หลายวิธี (UT, การค้าปลีกและอื่น ๆ ):

  1. การประมวลผลหรือโค้ดสามารถเขียนด้วยภาษา 1C ซึ่งทำงานทั้งหมดกับบริการ
  2. สามารถใช้โปรแกรมที่ทำงานร่วมกับบริการได้และใน 1C จะส่งเฉพาะข้อมูลสำหรับการตรวจสอบการเจาะเท่านั้น

การจัดระเบียบข้อมูลบริการใน 1C

หากต้องการจัดเก็บข้อมูลธุรกรรมไว้ในใบเสร็จรับเงิน คุณต้องสร้างข้อมูลเพิ่มเติม ส่วนที่เป็นตาราง“การขายที่ซับซ้อน” โดยมีรายละเอียด:

  • ระบบการตั้งชื่อ - เชื่อมโยงกับระบบการตั้งชื่อของเช็ค
  • พารามิเตอร์ - ลิงก์ไปยังหนังสืออ้างอิง "การขายที่ซับซ้อน: พารามิเตอร์"
  • ค่า - ค่าของพารามิเตอร์ซึ่งเป็นประเภทที่ซับซ้อน การแสดงสตริงต้องค่อนข้างยาว (1,024 อักขระ) เพื่อรองรับข้อความเช็ค

ไดเร็กทอรี "การขายที่ซับซ้อน: พารามิเตอร์" มีรายการพารามิเตอร์ธุรกรรม

การใช้ส่วนที่เป็นตารางมีประโยชน์มากกว่าชุดรายละเอียดเพราะว่า ธุรกรรมอาจมีจำนวนมาก และในการตรวจสอบอื่น ๆ ที่ไม่เกี่ยวข้องกับบริการ รายละเอียดเหล่านี้จะไม่ถูกนำมาใช้และจะถูกนำมาใช้ พื้นที่พิเศษ- นอกจากนี้ โซลูชันดังกล่าวยังเป็นสากลสำหรับบริการใดๆ และไม่จำเป็นต้องมีการปรับโครงสร้างข้อมูลใหม่หลังการใช้งานบริการใหม่

ผู้ขายจะได้รับบุ๊กมาร์กแยกต่างหาก (หรือแบบฟอร์มที่พิมพ์ออกมาเพื่อไม่ให้เปลี่ยนการกำหนดค่า) ซึ่งเขาสามารถดูแผ่นรายละเอียดธุรกรรมสำหรับเช็คได้

การใช้การประมวลผลในภาษา 1C

ลองดูตัวอย่างบริการแบบมีเงื่อนไขของ Paym สำหรับการกำหนดค่า "ขายปลีก"

  1. มาสร้างองค์ประกอบที่กำหนดไว้ล่วงหน้าของไดเร็กทอรีระบบการตั้งชื่อ "Paym" ใน 1C ในโหมด 1C:Enterprise หลังจากอัปเดตการกำหนดค่าแล้ว จะต้องกำหนดประเภทผลิตภัณฑ์ "บริการ"
  2. ในขั้นตอน “เพิ่มรายการลงในตาราง ส่วน" ของโมดูลแบบฟอร์ม "การลงทะเบียนการขาย" เราเรียกว่าการประมวลผลงานกับบริการที่เขียนด้วยภาษา 1C หากการชำระเงินสำเร็จ เราจะบันทึกและผ่านรายการเช็ค:
ถ้า (ระบบการตั้งชื่อ = Directories.Nomenclature.Paym) และ (ประเภทของธุรกรรมการโอน ประเภทของการดำเนินการตรวจสอบ KKM. Return) จากนั้น การประมวลผลการชำระเงิน = ให้การประมวลผลภายนอก ("Paym");
  1. PaymentForm = PaymentProcessing.GetForm();
  2. ผลลัพธ์ = PaymentForm.OpenModal();
ถ้าผลลัพธ์ = ไม่ได้กำหนดไว้ ให้ส่งคืน;

สิ้นสุดถ้า;

ThisObject.Write (DocumentWriteMode.Post); สิ้นสุดถ้า;

การประมวลผลควรพิมพ์ใบเสร็จรับเงินเบื้องต้น (หากจำเป็น) กรอกส่วนที่เป็นตารางของการขายที่ซับซ้อน และเตรียมข้อความการพิมพ์เช็คในแอตทริบิวต์ "PaymCheckText" ที่กำหนดไว้ล่วงหน้า

ในขั้นตอน "ลงรายการบัญชีและพิมพ์ใบเสร็จ" ของโมดูลใบเสร็จ เราจะเปลี่ยนชื่อของผลิตภัณฑ์ด้วยชื่อที่บันทึกไว้ในรายละเอียดสำหรับใบเสร็จ ข้อความจะถูกแทนที่สำหรับการขายเท่านั้น สำหรับการส่งคืน เพียงชื่อของบริการจะถูกพิมพ์ตามปกติ

มิฉะนั้นหากประเภทของธุรกรรมการโอนประเภทของการดำเนินการตรวจสอบ KKM การส่งคืนและการเลือก NomenclatureLink = Directories.Nomenclature.Paym จากนั้น //Osipov PaymMaster ComplexSales Line = ComplexSales.Find(Directories.ComplexSalesParameters.PaymReceiptText, "Properties");

หากไม่ได้กำหนดบรรทัดการขายที่ซับซ้อน ดังนั้น Product.Name = LP แบบย่อ (Complex Sales Line. Value);

สิ้นสุดถ้า;

คำถามอีกประการหนึ่งคือจะแน่ใจได้อย่างไรว่าธุรกรรมจะเสร็จสมบูรณ์ เหล่านั้น. หากธุรกรรมเกิดขึ้นในบริการ จะแน่ใจได้อย่างไรว่าจะไม่สูญหายใน 1C วิธีที่ดีที่สุดคือการกระทบยอดรีจิสเตอร์ แต่นี่เป็นหัวข้อสำหรับการพิจารณาแยกต่างหาก

การใช้โปรแกรมที่ทำงานร่วมกับ 1C

เอ็กซ์ดีทีโอ

XDTO มักใช้ในบริการเว็บ เคล็ดลับและสูตรที่สำคัญที่สุดสำหรับการใช้ XDTO ใน 1C มีดังนี้

XDTO ในแพลตฟอร์ม 1C แพ็คเกจ XDTO ที่อธิบายไว้ในสาขา "วัตถุ XDTO" ของการกำหนดค่า พร้อมใช้งานสำหรับการสร้างประเภทและวัตถุในโรงงาน XDTO ทั่วโลก สิ่งนี้ไม่ชัดเจนในทันทีบางประเภทในสคีมาไม่มีชื่อ คุณต้องผ่านลำดับชั้นของประเภทเพื่อให้ได้มา

ตัวอย่างนี้อธิบายรายการระบบที่มีโครงสร้าง XDTO หากต้องการสร้างโครงสร้าง คุณจะต้องได้ประเภทดังนี้:

เมื่อพิจารณาว่าบริการเป็นการรวมกันของสองระบบ - 1C และภายนอก ข้อผิดพลาดอาจเกิดขึ้นได้ในทั้งสองระบบ ซึ่งจะลดความน่าเชื่อถือโดยรวมของการทำงาน

เพื่อให้เข้าใจสาเหตุของความล้มเหลวในการบริการได้ง่ายขึ้น ขอแนะนำให้ใช้ชุดมาตรการ

คำขอบันทึก

ลิงค์

  • เอ็กซ์ดีทีโอ
    • คำอธิบายที่ดีของ XDTO http://pro1c.org.ua/index.php?showtopic=214
  • บริการเว็บที่น่าสนใจฟรี:
    • แอโรฟลอต - ข้อมูลเกี่ยวกับตารางเที่ยวบิน
    • Morpher - การปฏิเสธชื่อ http://www.morpher.ru/WebServices/Morpher.aspx
  • ยังไม่ได้ประกอบ:
    • การติดตั้งและการใช้บริการเว็บ
      • v8: จะเปลี่ยนไฟล์การกำหนดค่า apache ได้อย่างไร?
      • v8: ความต่อเนื่องของหัวข้อด้วยบริการบนเว็บ - ฉันไม่สามารถเชื่อมต่อบริการเว็บได้
      • v8: ฉันยังคงรวบรวมข้อมูลผ่านบริการบนเว็บ - ฉันไม่สามารถสร้างพร็อกซีได้...
      • หนังสือความรู้: v8: การใช้บริการเว็บภายนอกใน 1C:Enterprise 8;

บริการเว็บเป็นหนึ่งในกลไกแพลตฟอร์มที่ใช้ในการบูรณาการกับระบบสารสนเทศอื่น เป็นวิธีการสนับสนุน SOA (Service-Oriented Architecture) ซึ่งเป็นสถาปัตยกรรมเชิงบริการที่เป็นมาตรฐานสมัยใหม่สำหรับการบูรณาการแอปพลิเคชันและระบบข้อมูล

ข้อได้เปรียบที่สำคัญของสถาปัตยกรรมเชิงบริการคือช่วยให้คุณสามารถพัฒนาโครงสร้างพื้นฐานขององค์กรในลักษณะเดียวกัน โดยไม่ทำลายโซลูชันที่มีอยู่ การใช้งานช่วยให้คุณลดต้นทุนลงได้โดยการผสานรวมระบบที่ต่างกันและแบบเดิมเข้ากับภูมิทัศน์องค์กรสมัยใหม่ ช่วยให้คุณสามารถใช้ส่วนประกอบซอฟต์แวร์ที่เชื่อมต่ออย่างหลวม ๆ เพื่อเพิ่มการนำกลับมาใช้ใหม่ให้เกิดประโยชน์สูงสุด

สถาปัตยกรรมเชิงบริการได้รับการพัฒนาและสนับสนุนอย่างเข้มข้นโดยผู้จำหน่ายรายใหญ่ มันถูกสร้างขึ้นบนพื้นฐานของบริการ อัตโนมัติหรือได้รับการจัดการจากภายนอก วิธีที่ต้องการในการใช้งานคือผ่านบริการบนเว็บ เป็นแพลตฟอร์มที่เป็นอิสระ สแตนด์อโลน และได้รับการสนับสนุนทุกที่

โซลูชันแอปพลิเคชัน 1C:Enterprise 8 สามารถเป็นได้ทั้งผู้ให้บริการเว็บและผู้ใช้บริการเว็บที่เผยแพร่โดยผู้ให้บริการรายอื่น

ระบบที่ใช้ฮาร์ดแวร์ที่กำหนดเองและ แพลตฟอร์มซอฟต์แวร์- เทคโนโลยีบริการเว็บเป็นอิสระจากแพลตฟอร์ม


การใช้งานทางเทคนิคของบริการเว็บ

หากโซลูชันแอปพลิเคชันเป็นผู้ให้บริการเว็บ ดังนั้นในโหมดการทำงานทั้งไฟล์และไคลเอ็นต์-เซิร์ฟเวอร์ การโต้ตอบระหว่างโซลูชันแอปพลิเคชันและผู้ใช้บริการเว็บจะดำเนินการผ่านเว็บเซิร์ฟเวอร์ โดยใช้โมดูลส่วนขยายเว็บเซิร์ฟเวอร์

ในกรณีนี้ เมื่อผู้บริโภคเข้าถึงบริการเว็บของโซลูชันแอปพลิเคชัน โมดูลบริการเว็บจะถูกดำเนินการ โมดูลนี้มีอยู่ในการกำหนดค่าและมีขั้นตอนที่ดำเนินการเมื่อเรียกใช้การดำเนินการบริการเว็บบางอย่าง

ในกรณีของงานเวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์ โมดูลนี้จะถูกดำเนินการในคลัสเตอร์ ในกรณีของเวอร์ชันไฟล์ของงาน - ในโมดูลส่วนขยายของเว็บเซิร์ฟเวอร์

หากโซลูชันแอปพลิเคชันเป็นผู้บริโภคของผู้ให้บริการเว็บบุคคลที่สาม ในกรณีนี้ จะมีการดำเนินการโต้ตอบระหว่างโซลูชันแอปพลิเคชันและผู้ให้บริการเว็บ

การแลกเปลี่ยนข้อมูลมักจะถูกจัดระเบียบโดยการอัพโหลดไฟล์จากโปรแกรมหนึ่งแล้วโหลดไปยังอีกโปรแกรมหนึ่ง โปรแกรมเมอร์บางคนจัดให้ โปรแกรมของบุคคลที่สามเข้าถึง ฐานข้อมูล SQL 1C (ซึ่งดูเหมือนจะไม่แนะนำอย่างยิ่ง)

คำว่า “การแลกเปลี่ยนข้อมูล” ไม่เหมาะกับงานเสมอไป บางครั้งการบอกว่าจัดเตรียมข้อมูลจะถูกต้องกว่า ตัวอย่างเช่น โปรแกรมภายนอกจำเป็นต้องระบุว่ามีไคลเอ็นต์ดังกล่าวอยู่ใน 1C และยอดคงเหลือหรือไม่

การให้การเข้าถึงข้อมูล 1C ไม่ถูกต้องเนื่องจากเหตุผลด้านความปลอดภัยของข้อมูล แต่สิ่งที่จำเป็นต้องมีคือกลไกการตรวจสอบโดยใช้ชื่อและรหัสผ่านพร้อมทั้งคืนยอดคงเหลือเพิ่มเติม

วิธีการนี้เรียกว่าแนวทางการบริการเมื่อโปรแกรมไม่ได้ให้ข้อมูล แต่เป็นบริการที่ช่วยให้คุณสามารถระบุลูกค้าและค้นหายอดเงินคงเหลือได้

มันทำงานอย่างไร?

ฟังก์ชั่นจากภายนอกถูกเรียก (เปิดตัว) โดยการร้องขอโดยใช้โปรโตคอล SOAP

ใช้เพื่อส่งผ่านพารามิเตอร์และผลลัพธ์ หากต้องการทำงานกับบริการทางเว็บ คุณต้องมีความเข้าใจพื้นฐานเกี่ยวกับ .

บริการเว็บ 1C

บริการเว็บ 1C เป็นวิธีการที่คุณสามารถอนุญาตให้ฟังก์ชัน 1C บางอย่างเปิดใช้งานนอกฐานข้อมูล 1C รวมถึงจากโปรแกรมอื่นหรือฐานข้อมูล 1C อื่น ๆ

ดีกว่าการให้การเข้าถึงข้อมูล 1C โดยตรง เนื่องจากเมื่อเรียกใช้เมธอด (ฟังก์ชัน) ของบริการเว็บ 1C โปรแกรมภายนอกจะไม่สามารถเข้าถึงข้อมูลได้ ฟังก์ชั่นในภาษา 1C จะกำหนดสิทธิ์อย่างอิสระ โปรแกรมภายนอกรับข้อมูลจำนวนหนึ่งตามพารามิเตอร์ที่ส่งผ่าน (เช่น ชื่อผู้ใช้และรหัสผ่าน)

ในหลายกรณี คุณไม่สามารถสร้างแพ็คเกจ XDTO ของคุณเองได้ แต่ใช้แพ็คเกจเริ่มต้นโดยเลือกแพ็คเกจ www.sample-package.org จากรายการ

วิธีการบริการเว็บ 1C

หลังจากนี้คุณจะต้องเพิ่มรายการฟังก์ชัน (วิธีการของบริการเว็บ 1C) ที่จะให้บริการภายนอก เป็นการดีกว่าที่จะเรียกพวกเขาเป็นภาษาอังกฤษ ฟังก์ชันสามารถมีพารามิเตอร์ได้

ประเภทพื้นฐานที่จะใช้:

  • สตริง - สตริง
  • int หรือจำนวนเต็ม - จำนวนเต็ม
  • จริง – จำนวนเศษส่วน
  • วันที่ – วันที่

สำหรับแต่ละฟังก์ชั่นเพิ่มเติมของบริการเว็บ 1C คุณต้องสร้างมันในคุณสมบัติเช่นเดียวกับที่เราทำในและอื่น ๆ

เป็นฟังก์ชัน 1C นี้ที่จะดำเนินการเมื่อเรียกใช้วิธีบริการเว็บ 1C อย่าลืมว่าจะดำเนินการบนเซิร์ฟเวอร์ 1C ไม่แนะนำให้ใช้โหมดไฟล์สำหรับการทำงานกับบริการเว็บ 1C

ฟังก์ชันมักจะส่งคืนข้อมูลบางส่วน โดยทั่วไปแล้วประเภทจะเป็นสตริงและสตริง XML จะถูกส่งกลับ

สตริง XML สามารถสร้างขึ้นได้โดยใช้อ็อบเจ็กต์ภาษา 1C สำหรับ หรือคุณสามารถสร้างสตริงข้อความสำหรับจัดเก็บข้อความ XML ก็ได้

การเผยแพร่บริการเว็บ 1C

ดังที่เราได้กล่าวไว้ก่อนหน้านี้ โปรแกรมอื่น ๆ จะต้อง "รู้" ว่ามีบริการเว็บ 1C อยู่ มีรายการวิธีการดังกล่าว และอื่น ๆ

คำอธิบายควรอยู่บนเว็บไซต์ ในการทำเช่นนี้คุณต้องมี:

  • มีเว็บไซต์
  • ในคุณสมบัติของบริการเว็บ 1C ให้ระบุชื่อไฟล์ด้วยนามสกุล 1cws ซึ่งเป็นลิงก์ไปยังคำอธิบาย WSDL
  • อัปโหลดไฟล์นี้ไปยังเว็บไซต์ในตัวกำหนดค่าโดยใช้รายการเมนู การดูแลระบบ/เผยแพร่บนเว็บเซิร์ฟเวอร์

เบราว์เซอร์ควรแสดงไฟล์ XML บางประเภท (ตัวอย่างไฟล์ WSDL ที่นี่ http://ru.wikipedia.org/wiki/WSDL) และไม่ใช่ข้อผิดพลาด ไม่ใช่หน้าว่าง และไม่มีข้อความเบลอในการเข้ารหัสใดๆ

หลังจากเผยแพร่สำเร็จแล้วสามารถใช้บริการเว็บ 1C ได้ หากต้องการทำสิ่งนี้ในโปรแกรมอื่นคุณต้องใช้ อินเทอร์เน็ตนี้ที่อยู่สำหรับลิงก์ไปยังบริการเว็บ 1C

ตัวอย่างเช่น, วิชวลสตูดิโออนุญาตสำหรับทุกภาษา (C ++, C #, วิชวลเบสิก) – รวมบริการเว็บ 1C ในโครงการตามคำอธิบาย WSDL และสร้างคลาสสำหรับการใช้บริการเว็บ 1C

โชคดีที่ไม่มีข้อจำกัดในการทำงานกับบริการบนเว็บ

การเพิ่มบริการเว็บให้กับข้อมูลเมตา

เปิดแผนผังการกำหนดค่า สาขา ทั่วไป, ไกลออกไป บริการเว็บให้เพิ่มเว็บเซอร์วิสใหม่ (ผมจะเรียกว่า my_ws) แล้วกรอกคุณสมบัติตามรูป

จำเป็นต้องมีการชี้แจงบางประการเกี่ยวกับคุณสมบัติของบริการบนเว็บ

  • แพ็คเกจ XDTO- ฟิลด์นี้ระบุรายการแพ็คเกจ XDTO ที่สามารถใช้ประเภทในค่าที่ส่งคืนอันเป็นผลมาจากการดำเนินการบริการเว็บ
  • URI เนมสเปซเป็นสตริงที่ระบุ URI เนมสเปซ ของบริการบนเว็บนี้- บริการเว็บใดๆ สามารถระบุได้โดยไม่ซ้ำกันโดยใช้ชื่อและเนมสเปซผสมกัน จำเป็นต้องเข้าใจอย่างชัดเจนว่าทรัพย์สินนี้ไม่เกี่ยวข้องกับที่อยู่ทางกายภาพของเว็บเซิร์ฟเวอร์ หรือกับเว็บไซต์ขององค์กร ฯลฯ มันเป็นเพียงที่อยู่เสมือน ดังนั้นจึงต้องกำหนดชื่อให้ชัดเจนที่สามารถบอกได้ เช่น พื้นที่ของตำแหน่งและการใช้งานเว็บเซอร์วิส โดยเฉพาะอาจมีคำย่ออยู่ด้วย การกำหนดค่าทั่วไปที่เป็นของบริการเว็บ

การดำเนินงานบริการเว็บ

เพื่อให้มั่นใจถึงการทำงานของบริการเว็บ จำเป็นต้องสร้างการดำเนินการสำหรับการดำเนินการบางอย่าง และส่งคืนข้อมูลที่จำเป็นหากจำเป็น

ตัวอย่างเช่น เรามาสร้างการดำเนินการสำหรับบริการบนเว็บของเราที่จะส่งคืนวลีคลาสสิก “Hello world!” มาโทรหาเธอกันเถอะ สวัสดี:

มาสร้างฟังก์ชั่นในโมดูลบริการเว็บกันดีกว่า สวัสดีชาวโลก()ลิงก์ที่เราจะแทรกลงในคุณสมบัติที่เกี่ยวข้องของการดำเนินการ

HelloWorld() ฟังก์ชันส่งคืน "Hello world!" - EndFunction

แต่การดำเนินการนี้มีข้อเสียเปรียบประการหนึ่ง คุณไม่สามารถถ่ายโอนข้อมูลต้นฉบับไปยังมันได้ เพื่อวัตถุประสงค์เหล่านี้ การดำเนินงานของบริการเว็บจะใช้ออบเจ็กต์รอง - ตัวเลือก.

มาเพิ่มการดำเนินการอีกหนึ่งอย่าง - สวัสดีคุณและสร้างพารามิเตอร์ให้กับมัน ชื่อ.

การดำเนินการนี้จะส่งคืนคำทักทายให้กับผู้ใช้โดยการเรียกใช้ฟังก์ชันต่อไปนี้:

ฟังก์ชั่น HelloUser(ชื่อผู้ใช้) กลับ "สวัสดี " + ชื่อผู้ใช้ + "!" - EndFunction

การเผยแพร่บริการเว็บ

ตอนนี้เราพร้อมที่จะเผยแพร่บริการทางเว็บแล้ว ในการดำเนินการนี้ คุณจะต้องเข้าสู่ระบบตัวกำหนดค่าด้วยสิทธิ์ของผู้ดูแลระบบ คลิกที่ทางลัด 1C คลิกขวาและเลือกรายการเมนูที่เหมาะสม:

เลือกจากเมนู การบริหาร —> การเผยแพร่ไปยังเว็บเซิร์ฟเวอร์

ในหน้าต่างที่เปิดขึ้น ให้ป้อนชื่อสิ่งพิมพ์และทำเครื่องหมายในช่อง เผยแพร่บริการทางเว็บและทำเครื่องหมายบริการเว็บที่เราสร้างขึ้นด้วย:

ลิงค์ WS

ในการทำงานกับบริการเว็บจะใช้วัตถุ 1C ต่อไปนี้: WS-ลิงค์- เป็นคำอธิบาย WSDL ของบริการเว็บที่ได้รับจากการนำเข้าจากแหล่งที่มาซึ่งมีบริการเว็บอยู่ นั่นคือก่อนอื่น เราต้องทราบที่อยู่ที่เราสามารถรับคำอธิบาย WSDL ของบริการเว็บได้ ตามตัวอย่างของเรา ตามการตั้งค่าที่เราทำระหว่างกระบวนการสร้างและเผยแพร่บริการเว็บ ที่อยู่นี้จะมีลักษณะดังนี้:

http://localhost/professia1c/ws/my_ws.1cws?wsdl

มาดูกันว่าที่อยู่นี้ประกอบด้วยส่วนใดบ้าง

  • http://localhost/- ที่อยู่นี้ระบุตำแหน่งทางกายภาพของเว็บเซิร์ฟเวอร์ เนื่องจากฉันมีมันอยู่บนเครื่องท้องถิ่น มันเป็น localhost แต่ในทางปฏิบัติ นี่อาจเป็นที่อยู่ IP ของเซิร์ฟเวอร์หรือชื่อของมัน
  • โปรเฟสเซีย1ซีคือชื่อของสิ่งพิมพ์ เราเข้าไปในสนาม ชื่อในกล่องโต้ตอบเมื่อมีการเผยแพร่บริการบนเว็บ
  • - สัญญาณว่าเรากำลังเข้าถึงบริการบนเว็บ
  • my_ws.1cws— ชื่อของไฟล์สิ่งพิมพ์ที่เราระบุในคุณสมบัติเมื่อสร้างบริการเว็บ
  • ?wsdl- พารามิเตอร์ที่ระบุว่าเราจำเป็นต้องได้รับคำอธิบาย WSDL

หลังจากเผยแพร่บริการทางเว็บแล้ว เพื่อให้แน่ใจว่าเผยแพร่ได้สำเร็จ คุณสามารถป้อนที่อยู่ของคำอธิบาย WSDL ลงไปได้ แถบที่อยู่เบราว์เซอร์ ในกรณีนี้ เราควรได้รับไฟล์ XML ในหน้าต่างเบราว์เซอร์ที่มีเนื้อหาโดยประมาณดังต่อไปนี้:

  1. การใช้ ws-link แบบไดนามิก
  2. การสร้างลิงก์ ws แบบคงที่

ลองดูแต่ละวิธีเหล่านี้

ลิงก์ WS แบบไดนามิก

&ขั้นตอน OnServer ConnectOnServer() WSDefinition = WSDefinition ใหม่ ( "http://localhost/professia1c/ws/my_ws.1cws?wsdl", "ซิโดรอฟ" , "" ) ;

WSProxy = WSProxy ใหม่ (WSProxy, "http://www.site/" , "my_ws" , "my_wsSoap" ) ;

VSProxy. ผู้ใช้ = "ซิโดรอฟ" ;

VSProxy. รหัสผ่าน = "" ; TextVS = VSProxy HelloUsr("วาสยา" );ข้อความ = MessageToUser ใหม่;

ข้อความ. ข้อความ = TextVS;

ข้อความ. รายงาน() ; สิ้นสุดขั้นตอน