• خدمات وب. مثال وب سرویس خدمات وب 1s 8.2 چیست

    خوشبختانه هیچ محدودیتی برای کار با وب سرویس ها وجود ندارد.

    افزودن وب سرویس به متادیتا

    درخت پیکربندی، شاخه را باز کنید معمول هستند، به علاوه خدمات وب، یک وب سرویس جدید اضافه کنید (من آن را my_ws می نامم) و مشخصات را همانطور که در شکل نشان داده شده است پر کنید.

    در مورد ویژگی های وب سرویس ها باید چند توضیح داده شود.

    • بسته های XDTO- این فیلد لیستی از بسته های XDTO را مشخص می کند که انواع آنها در مقداری که در نتیجه عملیات وب سرویس برگردانده می شود قابل استفاده است.
    • URI فضای نامرشته ای است که URI فضای نام را برای این وب سرویس مشخص می کند. هر وب سرویس را می توان به طور منحصر به فرد با ترکیب نام و فضای نام آن شناسایی کرد. باید به وضوح درک کرد که این ویژگی هیچ ارتباطی با آدرس فیزیکی وب سرور یا وب سایت سازمان و غیره ندارد. این فقط یک آدرس مجازی است. بنابراین، شما باید یک نام واضح اختصاص دهید که بتواند به عنوان مثال، در مورد منطقه مکان و کاربرد وب سرویس بگوید. به ویژه، ممکن است مخفف پیکربندی استانداردی که وب سرویس به آن تعلق دارد، وجود داشته باشد.

    عملیات وب سرویس

    برای اطمینان از عملکرد یک وب سرویس، لازم است عملیاتی برای آن ایجاد شود که اقدامات خاصی را انجام دهد و در صورت لزوم، داده های لازم را برگرداند.

    به عنوان مثال، بیایید عملیاتی برای وب سرویس خود ایجاد کنیم که عبارت کلاسیک "Hello world!" را برمی گرداند. بیا بهش زنگ بزنیم سلام:

    بیایید یک تابع در ماژول وب سرویس ایجاد کنیم سلام دنیا()، که پیوند به آن در ویژگی مربوط به عملیات درج می شود.

    تابع HelloWorld() بازگشت "Hello world!" ; EndFunction

    اما این عملیات یک ایراد دارد. شما نمی توانید داده های اصلی را به آن منتقل کنید. برای این اهداف، عملیات سرویس های وب از اشیاء فرعی خود استفاده می کنند - گزینه ها.

    بیایید یک عملیات دیگر اضافه کنیم - سلام آقا، و یک پارامتر برای آن ایجاد کنید نام.

    این عملیات با فراخوانی تابع زیر به کاربر تبریک می گوید:

    تابع HelloUser(UserName) بازگشت "Hello, " + Username + "!" ; EndFunction

    انتشار وب سرویس

    اکنون آماده انتشار وب سرویس هستیم. برای انجام این کار، باید با حقوق مدیر وارد پیکربندی شوید. روی میانبر 1C کلیک راست کرده و مورد منوی مناسب را انتخاب کنید:

    از منو انتخاب کنید مدیریت —> انتشار در وب سرور

    در پنجره باز شده، نام نشریه را وارد کرده و کادر را علامت بزنید انتشار خدمات وبو همچنین وب سرویسی را که ایجاد کردیم علامت بزنید:

    لینک های WS

    برای کار با خدمات وب، شی 1C زیر استفاده می شود: پیوند WS. این یک توصیف WSDL از یک وب سرویس است که با وارد کردن از منبعی که وب سرویس در آن قرار دارد به دست می آید. یعنی اول از همه باید آدرسی را بدانیم که در آن می توانیم توضیحات WSDL سرویس وب را دریافت کنیم. در رابطه با مثال ما، مطابق با تنظیماتی که در طول فرآیند ایجاد و انتشار وب سرویس انجام دادیم، این آدرس به شکل زیر خواهد بود:

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

    بیایید ببینیم این آدرس از چه بخش هایی تشکیل شده است.

    • http://localhost/- این آدرس مکان فیزیکی وب سرور را نشان می دهد. از آنجایی که من آن را روی ماشین محلی دارم، لوکال هاست است، اما در عمل این آدرس IP سرور یا نام آن است.
    • حرفه 1cنام نشریه است. ما آن را وارد میدان کردیم نامدر گفتگوی زمانی که وب سرویس منتشر شد
    • ws- نشانه این است که ما به یک وب سرویس دسترسی داریم
    • my_ws.1cws- نام فایل انتشاراتی که هنگام ایجاد وب سرویس در ویژگی ها مشخص کردیم
    • wsdl- پارامتری که نشان می دهد باید توضیحات WSDL را دریافت کنیم

    پس از انتشار یک وب سرویس، برای تأیید اینکه آیا با موفقیت منتشر شده است، می توانید آدرس توضیحات WSDL آن را در نوار آدرس مرورگر خود وارد کنید. در این صورت باید یک فایل XML در پنجره مرورگر با محتوای تقریبا زیر دریافت کنیم:

    1. با استفاده از پیوند پویا ws.
    2. ایجاد یک پیوند ws استاتیک.

    بیایید به هر یک از این روش ها نگاه کنیم.

    لینک های پویا WS

    رویه &روی سرور ConnectOnServer() WSOdefinition = New WSDDefinition( "http://localhost/professia1c/ws/my_ws.1cws?wsdl", "Sidorov" , "" ) ; WSProxy = WSProxy جدید (WSOdefinition, "http://www.site/" , "my_ws" , "my_wsSoap" ) ; VSPProxy. کاربر = "Sidorov" ; VSPProxy. رمز عبور = "" ; TextVS = VSPProxy. HelloUsr("Vasya") ; Message = New MessageToUser; پیام. متن = TextVS; پیام. برای گزارش () ; پایان رویه

    همانطور که ممکن است حدس بزنید، نتیجه این روش متنی در پنجره پیام "سلام، واسیا!"

    پیوندهای استاتیک WS

    به جای ایجاد یک شیء به صورت برنامه ای تعاریف WSمی‌توانیم مستقیماً یک شیء فراداده پیوند WS در درخت پیکربندی ایجاد کنیم. در طول فرآیند ایجاد، پنجره ای نمایش داده می شود که از شما می خواهد آدرس تعریف WSDL را برای وارد کردن آن مشخص کنید:

    سپس می توانیم مستقیماً به این مرجع WS در کد مراجعه کنیم. و روش دسترسی به وب سرویس به شکل زیر خواهد بود:

    رویه &روی سرور ConnectThroughLinkOnServer() VSPProxy = WSLinks. WSlink_my_ws. CreateWSProxy("http://www.site/" , "my_ws" , "my_wsSoap" ) ; VSPProxy. کاربر = "Sidorov" ; VSPProxy. رمز عبور = "" ; TextVS = VSPProxy. HelloUsr("Vasya") ; Message = New MessageToUser; پیام. متن = TextVS; پیام. برای گزارش () ; پایان رویه

    ما به مفاهیم کلی استفاده از مکانیزم نگاه کردیم « وب-خدمات".بیایید کمی دانش را تازه کنیم.

    خدمات وب برای تبادل داده بین سرور و مشتری استفاده می شود. فرمت XML برای "بسته بندی" داده ها به منظور درک متقابل بین هر دو شرکت کننده در ارتباط استفاده می شود.

    فصلمن

    نمونه ای از پیاده سازیوب- خدمات در سیستم 1C: ENTERPRISE

    وظیفه:ایجاد یک وب سرویس ضروری است که با دسترسی به آن مشتریان می توانند تمام اطلاعات لازم را در مورد برنامه های خود تعیین کنند.

    این کار یک نمایش است و تنها به عنوان نمونه ای برای درک و آموزش مکانیسم عمل می کندوب-خدمات.

    راه حل:

    مرحله 1.بیایید یک پایگاه اطلاعاتی جدید بدون پیکربندی ایجاد کنیم تا یک پیکربندی جدید ایجاد کنیم.

    گام 2.بیایید چندین شی جدید به پیکربندی اضافه کنیم

    دایرکتوری "مشتریان"؛

    سند "برنامه"؛

    شمارش "وضعیت درخواست".

    مرحله 3.بیایید یک بسته XDTO جدید ایجاد کنیم.

    چرا و برای چه هدفی یک بسته XDTO ایجاد می کنیم؟ اطلاعات بیشتر در مورد استفاده از مکانیزم XDTO را می‌توانید در «فصل 16. راهنمای توسعه‌دهنده» و .

    اجازه دهید به طور خلاصه توجه کنیم که مکانیسم XDTO یک روش جهانی برای ارائه داده ها برای تعامل با منابع مختلف داده خارجی و سیستم های نرم افزاری است.

    در مورد ما، یک بسته XDTO برای توصیف مقدار بازگشتی وب سرویس ایجاد می شود.

    بیایید شاخه «عمومی» → «بسته‌های XDTO» → افزودن…

    بیایید نام بسته XDTO را مشخص کنیم. اسناد اسناد"و فضای نام آن http://localhost/request یا http://192.168.1.76/request (برای تسهیل درک و فرآیند یادگیری، آدرس IP محلی رایانه ای را که سرور وب در آن نصب شده است نشان می دهیم (سرورهای وب پشتیبانی شده: IIS یا Apache)). هر وب سرویس را می توان به طور منحصر به فرد با نام خود و URI فضای نامی که به آن تعلق دارد شناسایی کرد.

    بسته ما شامل دو نوع شی XDTO است:

    1) مشتری- برای انتقال داده ها از عنصر دایرکتوری "Clients".

    - نام ;

    2) سند- برای انتقال داده ها از سند "برنامه".

    این نوع شی XDTO دارای ویژگی های زیر خواهد بود:

    - مشتری- نوع مشتری از فضای نام http://192.168.1.76/request ; نشان دهنده ارجاع به شی XDTO است که در بالا تعریف کردیم.

    - وضعیت- نوع رشته از فضای نام http://www.w3.org/2001/XMLSchema ;

    - تعداد- نوع رشته از فضای نام http://www.w3.org/2001/XMLSchema.

    مرحله 4.بیایید یک وب سرویس جدید به پیکربندی اضافه کنیم

    بیایید شاخه «عمومی» → «خدمات وب» → افزودن…

    برای سرویس وب، مقادیر ویژگی زیر را مشخص می کنیم:

    نام - اسناد اسناد

    URI فضای نام - http://192.168.1.76/request

    بسته های XDTO - اسناد اسنادیاhttp://192.168.1.76/request

    نام فایل نشریه - درخواست.1cws

    مرحله 5.برای وب سرویس ایجاد شده، عملیات " را تعریف می کنیم GetData»

    مقادیر ویژگی عملیات:

    نوع برگشت - سند (http://192.168.1.76/request)

    مقدار احتمالاً خالی - درست است، واقعی

    نام رویه - GetData.

    مرحله 6.در عملیات GetDataبیایید پارامتر Customer را با مقادیر ویژگی زیر تعریف کنیم:

    نوع ارزش - نوع رشتهاز فضای نام http://www.w3.org/2001/XMLSchema؛

    جهت انتقال - ورودی.

    مرحله 7بیایید ماژول سرویس وب ایجاد شده را باز کنیم و تابع Get() را در آن قرار دهیم که با فراخوانی این وب سرویس اجرا می شود.

    تابع GetData(Customer) // دریافت انواع اشیاء XDTO ClientType = FactoryXDTO.Type("http://192.168.1.76/request", "Customer"); RequestType = FactoryXDTO.Type("http://192.168.1.76/request", "Document"); // دریافت مشتری ClientLink = Directories.Clients.FindByName(Customer); اگر ValueFilled نیست (ClientRef) سپس Undefined را برگردانید. endIf; درخواست = درخواست جدید; Request.Text = "انتخاب TOP 1 | Application.Link، | RERESENTATION(Application.Status) AS وضعیت، | Application.Number |FROM | Document.Request AS Application |WHERE | Application.Client = &Client"; Request.SetParameter("Client", ClientLink); RequestResult = Request.Execute(); اگر QueryResult.Empty() سپس Undefined را برگردانید. endIf; Selection = QueryResult.Select(); Selection.Next(); Document = Selection.Link.GetObject(); // ایجاد یک شی XDTO از یک سفارش Order = FactoryXDTO.Create(OrderType); Application.Numder = Sample.Number; Client = FactoryXDTO.Create(ClientType); Client.Name = ClientLink.Name; Application.Customer = Client; Application.Status = Selection.Status; // بازگشت درخواست بازگشت برنامه; EndFunction

    مرحله 8بیایید وب سرویس ایجاد شده را در وب سرور منتشر کنیم.

    آیتم منو پیکربندی: "Administration" → "Publishing on a Web Server".

    در برگه «Web Services»، کادر «Publish Web Services» را تنظیم کنید و کادر کنار وب سرویس جدید ما را نیز علامت بزنید.

    فصلII

    نمونه ای از توسل بهوب-به 1C: خدمات سیستم سازمانی از یک برنامه شخص ثالث

    هدف اصلی مکانیسم خدمات وب در سیستم 1C: Enterprise انتقال داده های لازم به برنامه های شخص ثالث است.

    بیایید نمونه ای از توسعه یک برنامه کاربردی در دلفی که با سرویس وب ما تماس می گیرد از بخش اول این مقاله در نظر بگیریم.

    مرحله 1.بیایید یک پروژه جدید ایجاد کنیم و چندین کنترل را روی فرم قرار دهیم

    فیلد متنی - برای نمایش اطلاعات دریافتی از وب سرویس استفاده می شود.

    دو دکمه - پاک کردن قسمت متن و دسترسی به وب سرویس.

    فیلد ورودی پارامتری است که به وب سرویس ارسال می شود.

    گام 2.وارد کردن فایل WSDL

    در نتیجه، ما یک ماژول جدید دریافت می کنیم درخواست(این نام را مستقیماً در 1C تعریف کردیم). این ماژول حاوی تمام اطلاعات لازم در وب سرویس است.

    مرحله 3.بیایید یک کنترل کننده تماس سرویس وب بنویسیم

    متغیر DocumentDataPortType قبلاً در ماژول تعریف شده است درخواست

    مرحله 4.برنامه را اجرا کنید و تست را اجرا کنید.

    فصلIII

    نمونه ای از توسل بهوب-خدمات در سیستم 1C: ENTERPRISE

    مرحله 1.بیایید یک پردازش خارجی جدید با نام "WEB_Service" ایجاد کنیم

    گام 2.بیایید یک فرم جدید برای پردازش تعریف کنیم

    مرحله 3.ما چندین جزئیات را در فرم نشان خواهیم داد

    کلاینت - "String" را تایپ کنید

    ClientReturn - "String" را تایپ کنید

    NumberReturn - "String" را تایپ کنید

    StatusReturn - "String" را تایپ کنید.

    ما جزئیات را در فرم نمایش خواهیم داد.

    مرحله 4.بیایید یک دستور فرم اضافه کنیم " برای دریافت داده»

    اجازه دهید کنترل کننده فرمان را مشخص کنیم

    رویه &OnClient GetData(Command) GetDataOnServer(Client); رویه پایان رویه GetDataOnServer(Client) // یک پروکسی WS بر اساس پیوند ایجاد کنید و عملیات Get() را اجرا کنید Definition = New WSDDefinitions("http://192.168.1.76/WEB_Service/ws/request.1cws?wsdl") ; پروکسی = WSPProxy جدید (تعریف، "http://192.168.1.76/request"، "DocumentsData"، "DocumentsDataSoap"); Application Data = Proxy.GetData(Client); اگر Application Data = Undefined سپس ClientReturn = "Undefined"; StatusReturn = "تعریف نشده"; ReturnNumber = "تعریف نشده"; برگشت؛ endIf; CustomerReturn = Application Data.Customer.Name; StatusReturn = Application Data.Status; Return Number = Application Data.Numder; پایان رویه

    سیستم 1C: Enterprise می تواند از خدمات وب ارائه شده توسط سایر ارائه دهندگان به دو روش استفاده کند:

    با استفاده از ایستاپیوندهای ایجاد شده در درخت پیکربندی؛

    "به علاوه":سرعت بالا؛

    "منهای":وارد کردن مجدد توضیحات WSDL با استفاده از پیکربندی و ذخیره پیکربندی تغییر یافته.

    با استفاده از پویاپیوندهای ایجاد شده توسط ابزارهای زبان داخلی

    (به همین ترتیب، "معایب" موارد استاتیک برای پویا "مزایا" هستند)

    فصلIV

    اشکال زدایی سرویس های وب در سیستم 1C: ENTERPRISE

    برای یک وب سرویس محلی شما نیاز دارید:

    مرحله 1.فایل را روی کلاینت جایی که سیستم 1C اجرا می شود قرار دهید webservicecfg.xmlبا مطالب زیر

    گام 2.برای تشکیل پرونده پیش فرض. vrdپیکربندی انتشار خط افزودن

    مرحله 3.در پیکربندی، آیتم منو را انتخاب کنید

    «اشکال‌زدایی» → «اتصال» → «اتصال خودکار» → «سرویس‌های وب روی سرور»

    مرحله 4.بر روی دکمه "OK" کلیک کنید

    برای گزینه سرور نیز باید سرور 1c را در حالت دیباگ با کلید اجرا کنید /debug

    تبادل داده معمولاً با آپلود یک فایل از یک برنامه و بارگذاری آن در برنامه دیگر سازماندهی می شود. برخی از برنامه نویسان برنامه های شخص ثالث را با دسترسی به پایگاه داده 1C SQL (که به نظر می رسد به شدت منع شده است) ارائه می دهند.

    اصطلاح «تبادل داده» همیشه مناسب کار نیست؛ گاهی اوقات بهتر است بگوییم ارائه داده. برای مثال، یک برنامه خارجی باید تشخیص دهد که آیا چنین کلاینت در 1C و موجودی آن وجود دارد یا خیر.

    ارائه دسترسی به داده های 1C به دلایل امنیتی داده نادرست است. آنچه مورد نیاز است، یک مکانیسم تأیید با نام و رمز عبور با بازگشت موجودی بیشتر است.

    این رویکرد رویکرد خدمات نامیده می شود، زمانی که برنامه نه داده، بلکه سرویسی را ارائه می دهد که به شما امکان می دهد مشتری را شناسایی کرده و تعادل او را پیدا کنید.

    چگونه کار می کند؟

    توابع از خارج توسط یک درخواست با استفاده از پروتکل SOAP فراخوانی می شوند (راه اندازی می شوند).

    برای ارسال پارامترها و نتایج استفاده می شود. برای کار با خدمات وب، باید درک اولیه ای از .

    خدمات وب 1C

    سرویس وب 1C روشی است که با استفاده از آن می توانید اجازه دهید برخی از عملکردهای 1C خارج از پایگاه داده 1C، از جمله از برنامه های دیگر یا سایر پایگاه های داده 1C، راه اندازی شوند.

    این بهتر از دسترسی مستقیم به داده های 1C است، زیرا هنگام فراخوانی یک روش (عملکرد) یک سرویس وب 1C، برنامه خارجی به داده ها دسترسی ندارد. یک تابع در زبان 1C به طور مستقل حق یک برنامه خارجی برای دریافت مقدار مشخصی از داده ها را بر اساس پارامترهای ارسال شده (مثلاً نام و رمز عبور) تعیین می کند.

    در بسیاری از موارد، شما نمی توانید بسته XDTO خود را ایجاد کنید، اما با انتخاب بسته www.sample-package.org از لیست، از بسته پیش فرض استفاده کنید.

    روش های وب سرویس 1C

    پس از این، باید لیستی از توابع (روش های سرویس وب 1C) را که به صورت خارجی ارائه می شود اضافه کنید. بهتر است آنها را به زبان انگلیسی صدا کنید. یک تابع می تواند پارامترهایی داشته باشد.

    انواع اساسی برای استفاده:

    • رشته – رشته
    • int یا integer - عدد کامل
    • عدد واقعی – کسری
    • تاریخ – تاریخ

    برای هر تابع اضافه شده به وب سرویس 1C، باید آن را در ویژگی ها ایجاد کنید، درست مانند کاری که در آن انجام دادیم و غیره.

    این تابع 1C است که هنگام فراخوانی روش وب سرویس 1C اجرا می شود. فراموش نکنید که در سرور 1C انجام خواهد شد. حالت فایل کار با خدمات وب 1C توصیه نمی شود.

    یک تابع معمولاً برخی از داده ها را برمی گرداند. به طور معمول نوع رشته است و یک رشته XML برگردانده می شود.

    یک رشته XML را می توان با استفاده از اشیاء زبان 1C برای ایجاد کرد، یا می توانید به سادگی یک رشته متن ایجاد کنید که متن XML در آن ذخیره می شود.

    انتشار وب سرویس 1C

    همانطور که قبلاً گفتیم، سایر برنامه ها باید "بدانند" که وب سرویس 1C وجود دارد، دارای چنین لیستی از روش ها و غیره است.

    توضیحات باید در وب سایت باشد. برای انجام این کار شما نیاز دارید:

    • وب سایت داشته باشید
    • در ویژگی های وب سرویس 1C، نام فایل را با پسوند 1cws که پیوندی به توضیحات WSDL است مشخص کنید.
    • با استفاده از آیتم منوی Administration/Publish on web server، این فایل را به وب سایت در پیکربندی آپلود کنید.

    مرورگر باید نوعی فایل XML را نمایش دهد (نمونه ای از یک فایل WSDL در اینجا http://ru.wikipedia.org/wiki/WSDL) و نه یک خطا، نه صفحه خالی و نه متن نامفهوم در هر کدگذاری.

    پس از انتشار موفقیت آمیز، می توان از وب سرویس 1C استفاده کرد. برای انجام این کار، در برنامه دیگری باید از این آدرس اینترنتی برای پیوند به سرویس وب 1C استفاده کنید.

    به عنوان مثال، ویژوال استودیو به هر زبانی (C++، C#، Visual Basic) اجازه می دهد تا یک وب سرویس 1C را مطابق با توضیحات WSDL خود در پروژه قرار دهد و یک کلاس برای استفاده از وب سرویس 1C ایجاد کند.

    خدمات وب در 1C

    این مقاله در مورد ادغام 1C با وب سرویس های موجود و استفاده از خود 1C به عنوان یک وب سرویس بحث می کند.

    در این حالت، وب سرویس‌ها به عنوان سیستم‌هایی تلقی می‌شوند که در اینترنت کار می‌کنند و تعامل با آنها را نه تنها از طریق SOAP (که دقیقاً یک وب سرویس است)، بلکه به روش‌های دیگر، از جمله درخواست‌های HTTP(S) معمولی، فراهم می‌کنند.


    خطرات استفاده از خدمات وب 1C

    پلت فرم 1C81 پیاده سازی خدمات وب را معرفی کرد.

    اما استفاده از آنها مملو از خطرات است:

    1. 1C8 روی HTTPS به خوبی کار نمی کند، هیچ ابزار تشخیصی وجود ندارد، بنابراین گاهی اوقات درک این موضوع غیرممکن است که چرا، حتی اگر گواهی وجود داشته باشد، سرویس نمی خواهد روی HTTPS کار کند. راه حل این است که خدمات وب را از طریق CURL پیاده سازی کنید یا یک تونل HTTPS را بالا ببرید.
    2. 1C8 به قوانین خود برای اعتبارسنجی طرحواره های WSDL پایبند است. گاهی اوقات، به دلایل غیرقابل توضیح، طرح WSDL نمی خواهد در پیوند WS بارگذاری شود. شما می توانید دلیل را فقط در انجمن شریک از یک متخصص دریابید. هیچ ابزار تشخیصی طرحواره WSDL وجود ندارد، حتی دلیل یا خطی که در آن بارگیری طرحواره قطع شده است، نشان داده نشده است.

    قوانین خدمات فروش ساختمان

    تنها در صورت موفقیت آمیز بودن تراکنش خدمات، سند فروش (رسید) برای مشتری صادر می شود. در غیر این صورت، شرایطی ممکن است که مشتری چک دریافت کند و مطمئن باشد که خدماتی دریافت کرده است، اما در واقع این کار را نکرده است.

    استفاده از خدمات SOAP خارجی

    سرویس های وب SOAP از طرحواره های WSDL و اشیاء XDTO برای نمایش داده ها استفاده می کنند.

    در حال بارگیری WSDL

    برای استفاده از یک سرویس خارجی، باید طرح WSDL آن را دانلود کنید.

    بررسی اعتبار طرحواره WSDL

    گاهی اوقات طرح WSDL در 1C بارگذاری نمی شود. می توانید اعتبار (صحت) طرح را با استفاده از هر اعتبارسنجی طرحواره WSDL، به عنوان مثال http://www.validwsdl.com/ بررسی کنید.

    شما باید طرح را در برخی از سایت های http آپلود کنید (می توانید از ftp استفاده کنید) و آدرس فایلی که طرح در آن بارگذاری شده است را مشخص کنید:

    ویژگی های بارگذاری WSDL در 1C

    ویژگی بارگیری WSDL در 1C این است که طرحواره های معتبر ممکن است بارگیری نشوند. هیچ اعتبار سنجی داخلی وجود ندارد، بنابراین باید با استفاده از تجزیه و تحلیل مخرب به دنبال خطا باشید و به طور متوالی تعداد عناصر موجود در مدار را کاهش دهید. برای مثال می توانید توضیحات وب سرویس را حذف کنید.

    پردازش برای آزمایش یک وب سرویس خارجی در حال اجرا

    برای آزمایش یک سرویس وب خارجی فعال، از پردازش "Test ArbitraryWebService.epf" از بسته مربوط به این مقاله استفاده کنید.

    آزمایش را می توان با استفاده از مثال سرویس Morpher استفاده کرد که نام ها را رد می کند (آدرس سرویس http://www.morpher.ru/WebServices/Morpher.asmx?WSDL):

    به این ترتیب، می توانید هر سرویسی را که دارای نقاط ورودی ساده حاوی پارامترهایی از انواع ساده است آزمایش کنید: عدد، تاریخ، رشته.

    در طول پردازش، همچنین می توانید ورود و رمز عبوری را که برای مجوز دسترسی به وب سرویس مورد نیاز است، مشخص کنید.

    ابزارهای استاندارد برای رفع اشکال خدمات

    برای اشکال زدایی می توانید از برنامه SoapUI استفاده کنید که می تواند درخواست دلخواه را به یک وب سرویس ارسال کند و از آن پاسخ دریافت کند.

    SOAP و 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 سرویس های وب در دایرکتوری مناسب وب سرور با تنظیمات مناسب برای وب سرور خلاصه می شود. به منظور انتشار خدمات وب، باید دستور منوی «Administration | را اجرا کنید انتشار خدمات وب."

    در نتیجه اجرای این دستور، پنجره انتشار خدمات وب باز می شود.

    پنجره انتشار خدمات وب شامل مسیر سرور وب و دو لیست است:

    • "خدمات وب" - لیستی از سرویس های وب پیکربندی؛
    • "انتشار" - لیستی از خدمات وب منتشر شده در وب سرور مشخص شده.

    با استفاده از دکمه "اتصال..."، باید وب سروری را که می خواهید خدمات وب را در آن منتشر کنید، مشخص کنید.

    پنجره انتخاب مسیر وب سرور به شما امکان می دهد مسیر را به دو روش مشخص کنید:

    • در برگه "Files" - این روش زمانی استفاده می شود که انتشار در همان رایانه ای که وب سرور روی آن نصب شده است انجام می شود. مسیر یک دایرکتوری محلی است که مربوط به صفحه اینترنتی است که وب سرور منتشر شده از آن فراخوانی می شود.
    • در برگه "سایت FTP" - این روش زمانی استفاده می شود که شما نیاز به انتشار یک سرویس وب در یک کامپیوتر راه دور دارید. برای انتشار، باید پارامترهای اتصال FTP به رایانه راه دور و دایرکتوری که وب سرویس در آن منتشر می شود را مشخص کنید.

    سرویس وب انتخاب شده با استفاده از دکمه "انتشار" منتشر می شود

    برای لغو انتشار یک سرویس وب، از دکمه "حذف" استفاده کنید.

    می توانید در یک فهرست محلی یا از طریق FTP منتشر کنید. همچنین اگر سرور راه دور بخشی از شبکه محلی باشد، می توانید از طریق یک مسیر UNC در یک سرور راه دور منتشر کنید.

    پس از انتشار، وب سرویس در آدرس "http://localhost/test.1cws" یا "http://xxx.ru/test.1cws" در دسترس است، که در آن xxx.ru آدرس سرور راه دور و لوکال هاست است. آدرس معمولی سرور محلی است.

    مجوز به وب سرویس 1C

    برای دسترسی به این سرویس باید احراز هویت را پاس کنید.

    مسائل مربوط به مجوز در اینجا به خوبی پرداخته می شود: http://www.forum.mista.ru/topic.php?id=341168 و در فایل مستندات:///c:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81. htm

    به طور معمول، یک وب سرویس تحت یک کاربر خاص (معمولاً یک کاربر خاص) اجرا می شود. می‌توانید یک کاربر 1C را با استفاده از احراز هویت Windows به کاربر Windows IUSR_ «ضمیمه» کنید (مجوز 1C را برای کاربر غیرفعال کنید). از طرف دیگر، می توانید لیست کاربران 1C را پاک کنید، سپس مجوز لازم نیست.

    اگر چندین کاربر مورد نیاز است، می توانید چندین لاگین برای وب سرور ایجاد کنید، یک کاربر ویندوز را به هر یک از آنها اختصاص دهید و بر این اساس، دسترسی به کاربران ویندوز را در 1C ثبت کنید.

    در ویژگی های User و Password شی WSProxy، از ورود 1C استفاده نمی شود، بلکه ورود کاربر وب سرور است.

    تست وب سرویس 1C

    برای آزمایش 1C به عنوان یک وب سرویس، از پردازش "Test ArbitraryWebService.epf" استفاده کنید، همانطور که در بخش "تست یک سرویس وب خارجی در حال اجرا" توضیح داده شده است.

    فایل 1cws شرح WSDL از وب سرویس 1C است.

    استفاده از خدمات در خرده فروشی

    به طور معمول، خدمات خرده فروشی برای ارائه خدمات مختلف به مردم استفاده می شود - پذیرش پرداخت، بازپرداخت وام، انتقال پول، خرید نرم افزار و غیره.

    در این حالت، یک رسید در 1C برای سرویس ارائه شده ایجاد می شود که در آن پارامترهای تراکنش ذخیره می شوند. پس از آن این رسید با اطلاعات دقیق در مورد خدمات ارائه شده برای مشتری چاپ می شود. امکان چاپ چک اولیه وجود دارد تا مشتری اطلاعات وارد شده از کلمات خود را با امضای خود تایید کند.

    این سرویس را می توان به روش های مختلف در یک برنامه خرده فروشی نوشته شده به زبان 1C (UT، Retail و دیگران) ادغام کرد:

    1. پردازش یا کد را می توان به زبان 1C نوشت که تمام کارها را با سرویس انجام می دهد.
    2. می توان از برنامه ای استفاده کرد که با سرویس کار می کند و در 1C فقط اطلاعات را برای چک های پانچ ارسال می کند.

    سازماندهی داده های سرویس در 1C

    برای ذخیره اطلاعات مربوط به یک تراکنش در یک رسید، باید یک بخش جدولی اضافی "فروش پیچیده" با جزئیات ایجاد کنید:

    • نامگذاری - پیوند به نام چک.
    • پارامتر - پیوند به کتاب مرجع "فروش مجتمع: پارامترها".
    • مقدار - مقدار پارامتر، یک نوع پیچیده. نمایش رشته باید کاملاً طولانی باشد (1024 کاراکتر) تا متن چک را در خود جای دهد.

    فهرست "فروش پیچیده: پارامترها" حاوی لیستی از پارامترهای تراکنش است.

    استفاده از قسمت جدولی سود بیشتری نسبت به مجموعه ای از جزئیات دارد، زیرا یک تراکنش ممکن است تعداد زیادی از آنها را داشته باشد و در سایر چک های غیر مرتبط با سرویس، از این جزئیات استفاده نمی شود و فضای اضافی را اشغال می کند. علاوه بر این، چنین راه حلی برای هر سرویس جهانی است و نیازی به بازسازی داده ها پس از اجرای یک سرویس جدید ندارد.

    به فروشنده یک نشانک جداگانه (یا یک فرم چاپ شده برای تغییر پیکربندی) داده می شود که در آن می تواند پلاک جزئیات معامله را برای چک مشاهده کند.

    استفاده از پردازش در زبان 1C

    بیایید به مثال سرویس مشروط Paym برای پیکربندی "Retail" نگاه کنیم.

    1. بیایید یک عنصر از پیش تعریف شده از فهرست نامگذاری "Paym" در 1C ایجاد کنیم. در حالت 1C: Enterprise، پس از به روز رسانی پیکربندی، باید نوع محصول "سرویس" را به آن اختصاص دهید.
    2. در روش «افزودن مورد به جدول. بخشی از ماژول فرم "ثبت فروش" را پردازش کار با سرویس می نامیم که به زبان 1C نوشته شده است. در صورت موفقیت آمیز بودن پرداخت، چک را ثبت و پست می کنیم:
    اگر (Nomenclature = Directories.Nomenclature.Paym) AND (نوع معامله انتقال. انواع عملیات بررسی KKM. بازگشت) سپس پردازش پرداخت = توابع. پردازش خارجی ("پرداخت") را ارائه دهید. PaymentForm = PaymentProcessing.GetForm(); نتیجه = PaymentForm.OpenModal(); If Result = Undefined then Return; endIf; ThisObject.Write(DocumentWriteMode.Post); endIf;
    1. پردازش باید رسید اولیه را چاپ کند (در صورت نیاز)، قسمت جدولی فروش پیچیده را پر کرده و متن چاپ چک را در ویژگی از پیش تعریف شده "PaymCheckText" آماده کند.
    2. در روش "پست و چاپ رسید" ماژول رسید، نام محصول را با نامی که در جزئیات برای رسید ذخیره شده است جایگزین می کنیم. متن فقط برای فروش جایگزین می شود، برای بازگشت، به طور معمول نام سرویس چاپ می شود.
    در غیر این صورتاگر نوع تراکنش انتقال.انواع عملیات بررسی KKM.Return And Selection.NomenclatureLink = Directories.Nomenclature.Paym سپس //Osipov PaymMaster ComplexSales Line = ComplexSales.Find(Directories.ComplexSalesParametersTeperexties. اگر خط فروش مجتمع تعریف نشده باشد، سپس Product.Name = مختصر LP(خط فروش پیچیده. ارزش); endIf;

    یک سوال جداگانه این است که چگونه می توان از تکمیل معامله اطمینان حاصل کرد. آن ها اگر تراکنش در سرویس انجام شده باشد، چگونه می توان مطمئن شد که در 1C گم نشده است. بهینه ترین راه تطبیق رجیسترها است. اما این موضوع برای بررسی جداگانه است.

    استفاده از برنامه هایی که با 1C ادغام می شوند

    XDTO

    XDTO اغلب در وب سرویس ها استفاده می شود. در اینجا مهمترین نکات و دستور العمل های استفاده از XDTO در 1C آورده شده است.

    XDTO در پلتفرم 1C

    بسته های XDTO که در شاخه "اشیاء XDTO" پیکربندی توضیح داده شده است، برای ایجاد انواع و اشیاء در کارخانه جهانی XDTO Factory در دسترس هستند. این بلافاصله آشکار نیست.

    برخی از انواع در طرحواره نامی ندارند، برای دریافت آنها باید سلسله مراتب نوع را طی کنید.

    مثال یک لیست سیستم حاوی ساختارهای XDTO را توصیف می کند. برای ایجاد خود ساختار، باید نوع آن را به صورت زیر بدست آورید:

    Type = Factory.Type("urn:my.ru:MasterData:Business"، "Business").Properties.Get("System").Type;

    مشکلات رایج XDTO

    فرمت های مختلف طرحواره XSD

    در برخی از فرمت ها، برچسب ها xs:، در برخی xsd: نامیده می شوند، اما 1C با خیال راحت هر دو فرمت را درک می کند. زمانی موقعیتی پیش آمد که XSD به طور معمول بدون خطا به 1C وارد شد، اما یک بسته واحد ایجاد نکرد. دلیلش نبود صفت بود فضای نام targetبر این اساس، در برچسب، 1C نمی دانست که نمودار را در کدام بسته قرار دهد، اما خطا ایجاد نکرد.

    پشتیبانی خدمات

    با توجه به اینکه سرویس ترکیبی از دو سیستم - 1C و خارجی است، ممکن است خطاهایی در هر دو سیستم رخ دهد که باعث کاهش قابلیت اطمینان کلی عملیات می شود.

    برای سهولت درک دلایل خرابی سرویس، توصیه می شود از مجموعه ای از اقدامات استفاده کنید.

    ثبت درخواست ها

    پیوندها

    • XDTO
      • توضیحات خوب XDTO http://pro1c.org.ua/index.php?showtopic=214
    • خدمات وب جالب رایگان:
      • Aeroflot - اطلاعات در مورد برنامه پرواز
      • Morpher - انحراف نام ها http://www.morpher.ru/WebServices/Morpher.aspx
    • مونتاژ نشده:
      • نصب و استفاده از خدمات وب
        • v8: چگونه فایل پیکربندی آپاچی را تغییر دهیم؟
        • v8: ادامه موضوع با وب سرویس - من نمی توانم وب سرویس را وصل کنم
        • v8: من به خزیدن از طریق سرویس های وب ادامه می دهم - نمی توانم یک پروکسی ایجاد کنم...
        • کتاب دانش: v8: استفاده از خدمات وب خارجی در 1C: Enterprise 8.

    ما کتاب جدیدی منتشر کرده‌ایم، بازاریابی محتوای رسانه‌های اجتماعی: چگونه به درون سر دنبال‌کنندگان خود وارد شوید و آنها را عاشق برند خود کنید.

    وب سرویس (سرویس) برنامه ای است که تعامل بین سایت ها را سازماندهی می کند. اطلاعات یک پورتال به پورتال دیگر منتقل می شود.

    مثلاً یک شرکت هواپیمایی وجود دارد. او پروازهای زیادی دارد، یعنی بلیط های زیادی دارد. این اطلاعات را از طریق یک وب سرویس به یک سایت جمع آوری سفر منتقل می کند. کاربری که به جمع‌آوری دسترسی پیدا می‌کند، می‌تواند مستقیماً بلیط این خط هوایی را از آنجا خریداری کند.

    نمونه دیگری از خدمات وب سایت ردیابی آب و هوا است که حاوی اطلاعاتی در مورد شرایط آب و هوایی در یک شهر یا کشور خاص به طور کلی است. این اطلاعات نیز اغلب توسط اشخاص ثالث استفاده می شود.

    اطلاعات در اینترنت متنوع است. سایت ها توسط سیستم های مختلف مدیریت می شوند. پروتکل های مختلف انتقال و رمزگذاری استفاده می شود. وب سرویس ها تبادل اطلاعات بین سایت های مختلف را ساده می کنند.

    معماری و پروتکل های خدمات وب

    شما می توانید 3 مرجع را تعریف کنید که با یکدیگر تعامل دارند: کاتالوگ، پیمانکار و مشتری. پس از ایجاد سرویس، پیمانکار آن را در کاتالوگ ثبت می کند و مشتری سرویس را در آنجا پیدا می کند.

    مکانیسم تبادل داده در توضیحات خدمات وب شکل گرفته است. این مشخصاتی است که فرمت های ارسال، انواع محتوا، پروتکل های حمل و نقل را پوشش می دهد که در فرآیند تبادل اطلاعات بین مشتری و حمل کننده خدمات استفاده می شود.

    امروزه چندین فناوری بیشتر برای پیاده سازی وب سرویس های مختلف مورد استفاده قرار می گیرند:

    1. TCP/IP پروتکلی است که تقریباً توسط هر تجهیزات شبکه، از پردازنده مرکزی گرفته تا دستگاه های قابل حمل و PDA، قابل درک است.
    2. HTML یک زبان نشانه گذاری جهانی است که برای نمایش محتوا در دستگاه های مصرف کننده استفاده می شود.
    3. XML یک ابزار جهانی برای پردازش انواع داده ها است. سایر پروتکل های تبادل اطلاعات می توانند بر اساس آن کار کنند: SOAP و WSDL.
    4. UDDI منبع جهانی تشخیص، ادغام و توصیف است. به طور معمول در شبکه های خصوصی کار می کند و هنوز توزیع کافی پیدا نکرده است.

    تطبیق پذیری فناوری های ارائه شده مبنایی برای درک خدمات وب است. آنها بر اساس فناوری های استانداردی که مستقل از ارائه دهندگان برنامه کاربردی و دیگر منابع شبکه هستند، کار می کنند. قابل استفاده در هر سیستم عامل، سرور برنامه، زبان برنامه نویسی و غیره.

    مزایای

    • ایجاد شرایط لازم برای تعامل اجزای نرم افزار بدون توجه به پلتفرم.
    • وب سرویس ها بر اساس پروتکل های استاندارد باز هستند. با توجه به معرفی XML، ایجاد و پیکربندی خدمات وب ساده شده است.
    • استفاده از HTTP تعامل سیستم ها را از طریق دسترسی به اینترنت تضمین می کند.

    ایرادات

    • عملکرد پایین و حجم زیاد ترافیک در مقایسه با سیستم های RMI، CORBA، DCOM به دلیل استفاده از پیام های XML در متن متن.
    • سطح امنیت همه سرویس های وب مدرن باید کدگذاری را پیاده سازی کنند و نیاز به مجوز کاربر دارند. اینکه آیا HTTPS در اینجا کافی است یا به پروتکل های قابل اعتماد بیشتری نیاز است، مانند رمزگذاری XML، SAML و غیره، در طول توسعه تصمیم گیری می شود.

    وظایف خدمات وب

    خدمات وب در بسیاری از زمینه ها قابل استفاده است.

    معاملات B2B

    ادغام فرآیندها بلافاصله و بدون مشارکت مردم اتفاق می افتد. به عنوان مثال، به روز رسانی کاتالوگ فروشگاه اینترنتی با محصولات جدید. آنها به انبار آورده می شوند و انباردار ورود به پایگاه داده را یادداشت می کند. اطلاعات به طور خودکار به فروشگاه آنلاین منتقل می شود. و خریدار به جای اینکه روی کارت محصول علامت "Out of Stock" را بزند، مقدار آن را می بیند.

    ادغام خدمات سازمانی

    اگر شرکت از برنامه های شرکتی استفاده می کند، وب سرویس به تنظیم کار مشترک آنها کمک می کند.

    ایجاد یک سیستم مشتری-سرور

    از خدمات برای پیکربندی عملکرد مشتری و سرور استفاده می شود. این مزایایی را ارائه می دهد:

    • شما می توانید نه خود نرم افزار را بفروشید، بلکه می توانید به وب سرویس دسترسی پولی داشته باشید.
    • حل مشکلات با استفاده از نرم افزار شخص ثالث آسان تر است.
    • سازماندهی دسترسی به محتوا و مواد سرور آسان تر است.

    وب سرویس برنامه ای است که تنظیمات فنی تعامل منابع را ساده می کند.