• Ağ hizmetleri. Web hizmeti nedir Web hizmetleri 1s 8.2 örneği

    Neyse ki web servisleriyle çalışma konusunda herhangi bir kısıtlama yoktur.

    Meta Verilere Web Hizmeti Ekleme

    Yapılandırma ağacını, dalını açın Yaygındır, Daha öte Ağ hizmetleri, yeni bir web hizmeti ekleyin (ben buna my_ws diyeceğim) ve özellikleri şekilde gösterildiği gibi doldurun.

    Web servislerinin özellikleri hakkında birkaç açıklama yapmak gerekiyor.

    • XDTO Paketleri- Bu alan, web servis işlemleri sonucunda döndürülen değerde türleri kullanılabilecek XDTO paketlerinin listesini belirtir.
    • Ad alanı URI'si bu web hizmetinin ad alanı URI'sini belirten bir dizedir. Herhangi bir web hizmeti, adı ve ad alanının birleşimiyle benzersiz bir şekilde tanımlanabilir. Bu özelliğin web sunucusunun fiziksel adresi veya kuruluşun web sitesi vb. ile hiçbir ilgisi olmadığını açıkça anlamak gerekir. Bu sadece sanal bir adres. Bu nedenle, örneğin web hizmetinin konumu ve uygulaması hakkında bilgi verebilecek net bir ad atamanız gerekir. Özellikle web servisinin ait olduğu standart konfigürasyonun kısaltması olabilir.

    Web Servis Operasyonları

    Bir web hizmetinin işleyişini sağlamak için, onun için belirli eylemleri gerçekleştirecek ve gerekirse gerekli verileri döndürecek işlemler oluşturmak gerekir.

    Örnek olarak web hizmetimiz için klasik "Merhaba dünya!" ifadesini döndürecek bir işlem oluşturalım. Hadi onu arayalım Merhaba:

    Web servis modülünde bir fonksiyon oluşturalım Selam Dünya(), işlemin ilgili özelliğine eklenecek olan bağlantı.

    HelloWorld() Fonksiyonu Dönüş "Merhaba dünya!" ; Son Fonksiyon

    Ancak bu operasyonun bir dezavantajı var. Orijinal verileri ona aktaramazsınız. Bu amaçlar için, web hizmetlerinin operasyonları alt nesnelerini kullanır - Seçenekler.

    Bir işlem daha ekleyelim - MerhabaUsr ve bunun için bir parametre oluşturun İsim.

    Bu işlem, aşağıdaki işlevi çağırarak kullanıcıya bir karşılama mesajı döndürecektir:

    İşlev MerhabaKullanıcı(KullanıcıAdı) Return "Merhaba, " + KullanıcıAdı + "!" ; Son Fonksiyon

    Bir Web Hizmetini Yayımlama

    Artık web servisimizi yayınlamaya hazırız. Bunu yapmak için yapılandırıcıda yönetici haklarıyla oturum açmanız gerekir. 1C kısayoluna sağ tıklayın ve uygun menü öğesini seçin:

    Menüden seçin Yönetim —> Bir web sunucusuna yayınlama

    Açılan pencerede yayının adını girin ve kutuyu işaretleyin Web Hizmetlerini Yayınlayın ve ayrıca oluşturduğumuz web hizmetini işaretleyin:

    WS bağlantıları

    Web hizmetleriyle çalışmak için aşağıdaki 1C nesnesi kullanılır: WS bağlantısı. Web hizmetinin bulunduğu kaynaktan içe aktarılarak elde edilen bir web hizmetinin WSDL açıklamasıdır. Yani öncelikle web servisin WSDL açıklamasını alabileceğimiz adresi bilmemiz gerekiyor. Örneğimize göre web servisini oluşturma ve yayınlama sürecinde yaptığımız ayarlara uygun olarak bu adres şu şekilde görünecektir:

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

    Gelin bu adresin hangi bölümlerden oluştuğuna bakalım.

    • http://localhost/- Bu adres web sunucusunun fiziksel konumunu gösterir. Yerel makinede bulunduğum için localhost'tur, ancak pratikte bu ya sunucunun IP adresi ya da adıdır
    • profesyonel1c yayının adıdır. Sahaya girdik İsim web hizmeti yayınlandığında iletişim kutusunda
    • ws- bir web hizmetine eriştiğimizi gösteren bir işaret
    • my_ws.1cws— web hizmetini oluştururken özelliklerde belirttiğimiz yayın dosyasının adı
    • ?wsdl- bir WSDL açıklaması almamız gerektiğini belirten bir parametre

    Bir web servisini yayınladıktan sonra, başarılı bir şekilde yayınlandığını doğrulamak için, WSDL açıklamasının adresini tarayıcınızın adres çubuğuna girebilirsiniz. Bu durumda, tarayıcı penceresinde yaklaşık olarak aşağıdaki içeriğe sahip bir XML dosyası almalıyız:

    1. Dinamik bir ws bağlantısı kullanma.
    2. Statik bir ws bağlantısı oluşturma.

    Bu yöntemlerin her birine bakalım.

    Dinamik WS bağlantıları

    &OnServer Prosedürü ConnectOnServer() WSOdefinition = New WSDefinition( "http://localhost/professia1c/ws/my_ws.1cws?wsdl", "Sidorov" , "" ); WSProxy = Yeni WSProxy(WSOdefinition, "http://www.site/" , "my_ws" , "my_wsSoap" ) ; VSProxy. Kullanıcı = "Sidorov"; VSProxy. Şifre = ""; TextVS = VSProxy. MerhabaUsr("Vasya" ) ; Mesaj = Yeni MesajToKullanıcı; İleti. Metin = MetinVS; İleti. Rapor etmek() ; Prosedürün Sonu

    Tahmin edebileceğiniz gibi bu prosedürün sonucu mesaj penceresindeki metin olacaktır: "Merhaba Vasya!"

    Statik WS bağlantıları

    Programlı olarak bir nesne oluşturmak yerine WS Tanımları yapılandırma ağacında doğrudan bir WS-link meta veri nesnesi oluşturabiliriz. Oluşturma işlemi sırasında, içe aktarılacak WSDL tanımının adresini belirtmenizi isteyen bir pencere görüntülenecektir:

    Daha sonra koddaki bu WS referansına doğrudan başvurabiliriz. Ve web servisine erişim prosedürü aşağıdaki formu alacaktır:

    &OnServer Prosedürü ConnectThroughLinkOnServer() VSProxy = WSLinks. WSlink_my_ws. CreateWSProxy("http://www.site/" , "my_ws" , "my_wsSoap" ) ; VSProxy. Kullanıcı = "Sidorov"; VSProxy. Şifre = ""; TextVS = VSProxy. MerhabaUsr("Vasya" ) ; Mesaj = Yeni MesajToKullanıcı; İleti. Metin = MetinVS; İleti. Rapor etmek() ; Prosedürün Sonu

    Mekanizmayı kullanmanın genel kavramlarına baktık « -Hizmetler". Biraz bilgimizi tazeleyelim.

    Web hizmetleri, bir sunucu ile istemci arasında veri alışverişi yapmak için kullanılır; XML formatı, iletişimdeki her iki katılımcı arasında karşılıklı anlayış amacıyla verileri "paketlemek" için kullanılır.

    BÖLÜMBEN

    UYGULAMA ÖRNEĞİ- 1C:ENTERPRISE SİSTEMİNDE HİZMET

    GÖREV:İstemcilerin uygulamalarına ilişkin gerekli tüm bilgileri belirleyebilecekleri, erişilerek bir web hizmeti oluşturmak gerekir.

    Görev bir gösteridir ve yalnızca mekanizmayı anlamak ve öğretmek için bir örnek olarak hizmet eder-Hizmetler.

    ÇÖZÜM:

    Aşama 1. Yeni bir konfigürasyon geliştirmek için konfigürasyonsuz yeni bir bilgi tabanı oluşturalım.

    Adım 2. Yapılandırmaya birkaç yeni nesne ekleyelim

    Dizin "Müşteriler";

    "Uygulama" belgesi;

    Numaralandırma "İstek Durumları".

    Aşama 3. Yeni bir XDTO paketi oluşturalım.

    XDTO paketini neden ve hangi amaçla oluşturuyoruz? XDTO mekanizmasının kullanımına ilişkin daha fazla bilgiye "Bölüm 16. Geliştirici Kılavuzu" ve bölümünden ulaşılabilir.

    XDTO mekanizmasının, çeşitli harici veri kaynakları ve yazılım sistemleriyle etkileşim için veri sunmanın evrensel bir yolu olduğunu kısaca belirtelim.

    Bizim durumumuzda web hizmetinin dönüş değerini açıklamak için bir XDTO paketi oluşturuldu.

    “Genel” şubesini genişletelim → “XDTO paketleri” → Ekle…

    XDTO paketinin adını belirtelim" BelgelerVeriler"ve ad alanı http://localhost/request veya http://192.168.1.76/request (anlamayı ve öğrenme sürecini kolaylaştırmak için, web sunucusunun kurulu olduğu bilgisayarın yerel IP adresini belirtiriz (desteklenen web sunucuları: IIS veya Apache)). Her Web hizmeti, adı ve ait olduğu ad alanının URI'si ile benzersiz bir şekilde tanımlanabilir.

    Paketimiz iki tür XDTO nesnesi içerir:

    1) Müşteri- “Müşteriler” dizin öğesinden veri aktarmak için.

    - İsim ;

    2) Belge- “Uygulama” belgesinden veri aktarmak için

    Bu XDTO nesne türü aşağıdaki özellikleri içerecektir:

    - Müşteri- http://192.168.1.76/request ad alanından müşteri türü; yukarıda tanımladığımız XDTO nesnesine bir referansı temsil eder;

    - Durum- http://www.w3.org/2001/XMLSchema ad alanından dize türü;

    - Numara- http://www.w3.org/2001/XMLSchema ad alanından dize türü.

    Adım 4. Konfigürasyona yeni bir Web servisi ekleyelim

    “Genel” → “Web hizmetleri” → Ekle dalını genişletelim…

    Web hizmeti için aşağıdaki özellik değerlerini belirtiyoruz:

    İsim - BelgelerVeriler

    Ad alanı URI'si - http://192.168.1.76/istek

    XDTO Paketleri - BelgelerVerilerveyahttp://192.168.1.76/istek

    Yayın dosyası adı - istek.1cws

    Adım 5. Oluşturulan Web servisi için “işlemini tanımlayacağız” Veri Al»

    Operasyon özelliği değerleri:

    İade türü - Belge (http://192.168.1.76/request)

    Muhtemelen boş değer - Doğru

    Prosedür adı - Veri Al.

    Adım 6. Operasyonda Veri Al Müşteri parametresini aşağıdaki özellik değerleriyle tanımlayalım:

    Değer türü - tür sicim http://www.w3.org/2001/XMLSchema ad alanından;

    İletim yönü - giriş.

    Adım 7 Oluşturulan Web hizmetinin modülünü açalım ve içine bu Web hizmeti çağrıldığında yürütülecek olan Get() fonksiyonunu yerleştirelim.

    Function GetData(Customer) // XDTO nesnelerinin türlerini alın ClientType = FactoryXDTO.Type("http://192.168.1.76/request", "Customer"); requestType = FactoryXDTO.Type("http://192.168.1.76/request", "Belge"); // İstemciyi alın ClientLink = Directoryes.Clients.FindByName(Customer); ValueFilled(ClientRef) Değilse Sonra Tanımsız Döndür; endIf; Talep = Yeni Talep; request.Text = "TOP 1'i SEÇ | Application.Link, | TEMSİL(Application.Status) AS Durumu, | Application.Number |FROM | Document.Request AS Uygulaması |NEREDE | Application.Client = &Client"; request.SetParameter("İstemci", ClientLink); requestResult = request.Execute(); If QueryResult.Empty() Then Return UnDefinition; endIf; Seçim = QueryResult.Select(); Selection.Next(); Belge = Selection.Link.GetObject(); // Bir siparişin XDTO nesnesini oluşturun Order = FactoryXDTO.Create(OrderType); Uygulama.Numder = Örnek.Number; İstemci = FactoryXDTO.Create(ClientType); Client.Name = ClientLink.Name; Application.Customer = İstemci; Uygulama.Durum = Seçim.Durum; // İsteği geri gönder Başvuruyu İade Et; Son Fonksiyon

    Adım 8 Oluşturduğumuz Web servisini web sunucusunda yayınlayalım.

    Yapılandırıcı menü öğesi: “Yönetim” → “Web sunucusunda yayınlama”.

    “Web Hizmetleri” sekmesinde “Web Hizmetlerini Yayınla” onay kutusunu işaretleyin ve ayrıca yeni Web hizmetimizin yanındaki kutuyu işaretleyin.

    BÖLÜMII

    İTİRAZ ÖRNEĞİ-ÜÇÜNCÜ TARAF UYGULAMADAN 1C:KURUMSAL SİSTEM HİZMETİNE

    1C:Enterprise sistemindeki Web servisleri mekanizmasının temel amacı, gerekli verileri üçüncü taraf uygulamalara aktarmaktır.

    Bu makalenin ilk bölümünde Delphi'de web hizmetimizi çağıran bir uygulama geliştirme örneğini ele alalım.

    Aşama 1. Yeni bir proje oluşturalım ve forma çeşitli kontroller yerleştirelim

    Metin alanı - web hizmetinden alınan bilgileri görüntülemek için kullanılır;

    İki düğme - metin alanını temizlemek ve web hizmetine erişmek;

    Giriş alanı, web servisine iletilen bir parametredir.

    Adım 2. Bir WSDL dosyasını içe aktarma

    Sonuç olarak yeni bir modül elde ediyoruz rica etmek(bu adı doğrudan 1C'de tanımladık). Bu modül web servisinde gerekli tüm bilgileri içerir.

    Aşama 3. Bir web hizmeti çağrı işleyicisi yazalım

    DocumentDataPortType değişkeni modülde zaten tanımlıdır rica etmek

    Adım 4. Uygulamayı başlatın ve testi çalıştırın.

    BÖLÜMIII

    İTİRAZ ÖRNEĞİ-1C:ENTERPRISE SİSTEMİNDE HİZMET

    Aşama 1."WEB_Service" adında yeni bir harici işlem oluşturalım

    Adım 2.İşleme için yeni bir form tanımlayalım

    Aşama 3. Formda birkaç ayrıntıyı göstereceğiz

    İstemci - "Dize" yazın

    ClientReturn - "Dize" yazın

    NumberReturn - "Dize" yazın

    StatusReturn - “Dize” yazın.

    Detayları formda göstereceğiz.

    Adım 4. Bir form komutu ekleyelim " Veri almak için»

    Komut işleyicisini belirtelim

    &OnClient Prosedürü GetData(Command) GetDataOnServer(Client); Prosedür Sonu Prosedürü GetDataOnServer(Client) // Bağlantıya dayalı olarak bir WS proxy'si oluşturun ve Get() işlemini gerçekleştirin Tanım = New WSDefinitions("http://192.168.1.76/WEB_Service/ws/request.1cws?wsdl") ; Proxy = Yeni WSProxy(Tanım, "http://192.168.1.76/request", "DocumentsData", "DocumentsDataSoap"); Uygulama Verileri = Proxy.GetData(Client); Uygulama Verisi = Tanımsız ise ClientReturn = "Tanımsız"; StatusReturn = "Tanımlanmamış"; ReturnNumber = "Tanımsız"; Geri dönmek; endIf; Müşteri İadesi = Uygulama Verisi.Müşteri.Adı; StatusReturn = Uygulama Verileri.Durum; Dönüş Numarası = Uygulama Verisi.Numder; Prosedürün Sonu

    1C:Enterprise sistemi, diğer sağlayıcılar tarafından sağlanan web hizmetlerini iki şekilde kullanabilir:

    Kullanarak statik konfigürasyon ağacında oluşturulan bağlantılar;

    "artı": yüksek hız;

    "eksi": yapılandırıcıyı kullanarak WSDL açıklamasını yeniden içe aktarma ve değiştirilen yapılandırmayı kaydetme.

    Kullanarak dinamik yerleşik dil araçları tarafından oluşturulan bağlantılar

    (buna bağlı olarak, statik olanların dinamik olanlara göre “eksileri” “artılarıdır”)

    BÖLÜMIV

    1C:ENTERPRISE SİSTEMİNDE WEB HİZMETLERİNDE HATA AYIKLAMA

    Yerel bir web hizmeti için ihtiyacınız olan:

    Aşama 1. Dosyayı 1C sisteminin çalıştığı istemciye yerleştirin webservicecfg.xml aşağıdaki içerikle

    Adım 2. Dosyalamak varsayılan. vrd yapılandırma ekleme satırını yayınla

    Aşama 3. Yapılandırıcıda menü öğesini seçin

    “Hata ayıklama” → “Bağlantı” → “Otomatik bağlantı” → “Sunucudaki web hizmetleri”

    Adım 4.“Tamam” butonuna tıklayın

    Sunucu seçeneği için ayrıca 1c sunucusunu hata ayıklama modunda tuşuyla çalıştırmanız gerekir. /hata ayıklama

    Veri alışverişi genellikle bir dosyanın bir programdan yüklenip diğerine yüklenmesiyle düzenlenir. Bazı programcılar üçüncü taraf programlara 1C SQL veritabanına erişim sağlar (bu kesinlikle önerilmez gibi görünüyor).

    “Veri alışverişi” tabiri her zaman bu amaca uygun olmuyor, bazen veri sağlama demek daha doğru oluyor. Örneğin, harici bir programın böyle bir müşterinin 1C'de var olup olmadığını ve bakiyesini tanımlaması gerekir.

    1C verilerine erişim sağlamak, veri güvenliği nedeniyle yanlıştır. İhtiyaç duyulan şey, daha fazla bakiye getirisi sağlayan, isme ve şifreye göre bir doğrulama mekanizmasıdır.

    Program veri değil, müşteriyi tanımlamanıza ve dengesini bulmanıza olanak tanıyan bir hizmet sağladığında bu yaklaşıma hizmet yaklaşımı denir.

    Nasıl çalışır?

    Dışarıdan gelen işlevler, SOAP protokolünü kullanan bir istek tarafından çağrılır (başlatılır).

    Parametreleri ve sonuçları iletmek için kullanılır. Web hizmetleriyle çalışmak için temel bir anlayışa sahip olmanız gerekir.

    Web hizmetleri 1C

    1C Web hizmeti, bazı 1C işlevlerinin, diğer programlar veya diğer 1C veritabanları da dahil olmak üzere 1C veritabanı dışında başlatılmasına izin verebileceğiniz bir yöntemdir.

    Bu, 1C verilerine doğrudan erişim sağlamaktan daha iyidir, çünkü 1C web hizmetinin bir yöntemini (işlevini) çağırırken harici programın verilere erişimi yoktur. 1C dilindeki bir işlev, harici bir programın iletilen parametrelere (örneğin, ad ve şifre) dayalı olarak belirli miktarda veri alma hakkını bağımsız olarak belirler.

    Çoğu durumda kendi XDTO paketinizi oluşturamazsınız ancak listeden www.sample-package.org paketini seçerek varsayılan paketi kullanabilirsiniz.

    1C web hizmeti yöntemleri

    Bundan sonra, harici olarak sağlanacak işlevlerin (1C web hizmetinin yöntemleri) bir listesini eklemeniz gerekir. Onları İngilizce olarak aramak daha iyidir. Bir fonksiyonun parametreleri olabilir.

    Kullanılacak temel türler:

    • dize – dize
    • int veya tamsayı – tam sayı
    • gerçek – kesirli sayı
    • tarih – tarih.

    1C web hizmetinin eklenen her işlevi için, onu tıpkı bizim yaptığımız gibi özelliklerde oluşturmanız gerekir.

    1C web hizmeti yöntemini çağırırken yürütülecek olan bu 1C işlevidir. 1C sunucusunda gerçekleştirileceğini unutmayın. 1C web hizmetleriyle çalışmanın dosya modu önerilmez.

    Bir fonksiyon genellikle bazı verileri döndürür. Genellikle tür dizedir ve bir XML dizesi döndürülür.

    için 1C dil nesneleri kullanılarak bir XML dizesi oluşturulabilir veya yalnızca XML metninin depolandığı bir metin dizesi oluşturabilirsiniz.

    1C web hizmetini yayınlama

    Daha önce de söylediğimiz gibi, diğer programların 1C web hizmetinin var olduğunu, böyle bir yöntem listesine sahip olduğunu vb. "bilmesi" gerekir.

    Açıklama sitede yer almalıdır. Bunu yapmak için ihtiyacınız olan:

    • Bir web siteniz olsun
    • 1C web hizmetinin özelliklerinde, WSDL açıklamasına bağlantı olan 1cws uzantılı dosya adını belirtin
    • Bu dosyayı, Web sunucusunda Yönetim/Yayınla menü öğesini kullanarak yapılandırıcıdaki web sitesine yükleyin.

    Tarayıcı bir tür XML dosyası görüntülemeli (burada bir WSDL dosyası örneği http://ru.wikipedia.org/wiki/WSDL), bir hata değil, boş bir sayfa değil ve herhangi bir kodlamada bulanık metin olmamalıdır.

    Başarılı bir şekilde yayınlandıktan sonra 1C web hizmeti kullanılabilir. Bunu yapmak için, başka bir programda 1C web hizmetine bağlantılar için bu İnternet adresini kullanmanız gerekir.

    Örneğin, Visual Studio herhangi bir dilin (C++, C#, Visual Basic) WSDL açıklamasına göre bir projeye 1C web hizmeti eklemesine ve 1C web hizmetini kullanmak için bir sınıf oluşturmasına olanak tanır.

    1C'de web hizmetleri

    Bu makale 1C'nin mevcut web hizmetleriyle entegrasyonunu ve 1C'nin kendisinin bir web hizmeti olarak kullanımını tartışacaktır.

    Bu durumda web hizmetleri, İnternet üzerinde çalışan ve yalnızca SOAP (tam olarak bir web hizmeti olan) aracılığıyla değil, aynı zamanda düzenli HTTP(S) istekleri de dahil olmak üzere başka yollarla da etkileşim sağlayan sistemler olarak anlaşılacaktır.


    1C web hizmetlerini kullanmanın riskleri

    1C81 platformu web hizmetlerinin uygulanmasını başlattı.

    Ancak bunların kullanımı risklerle doludur:

    1. 1C8 HTTPS üzerinde iyi çalışmıyor, herhangi bir teşhis aracı yok, bu nedenle bazen bir sertifika olsa bile hizmetin neden HTTPS üzerinden çalışmak istemediğini anlamak imkansızdır. Çözüm, web hizmetlerini CURL aracılığıyla uygulamak veya bir HTTPS tüneli oluşturmaktır.
    2. 1C8, WSDL şemalarını doğrulama kurallarına uyar. Bazen açıklanamayan nedenlerden dolayı WSDL şeması WS bağlantısına yüklenmek istemez. Sebebini yalnızca ortak forumda bir uzmandan öğrenebilirsiniz. WSDL şema tanılama aracı yok, şema yüklemesinin kesintiye uğradığı neden veya satır bile gösterilmiyor.

    Satış hizmetleri oluşturma kuralları

    Müşteriye yalnızca hizmet işleminin başarılı olması durumunda bir satış belgesi (makbuz) verilir. Aksi takdirde, müşterinin çek aldığı ve hizmet aldığından emin olduğu ancak aslında almadığı bir durum mümkündür.

    Harici SOAP hizmetlerini kullanma

    SOAP web hizmetleri, verileri temsil etmek için WSDL şemalarını ve XDTO nesnelerini kullanır.

    WSDL yükleniyor

    Harici bir hizmeti kullanmak için WSDL şemasını indirmeniz gerekir.

    WSDL şemasının geçerliliğinin kontrol edilmesi

    Bazen WSDL şeması 1C'ye yüklenmez. Herhangi bir WSDL şema doğrulayıcısını (örneğin, http://www.validwsdl.com/) kullanarak şemanın geçerliliğini (doğruluğunu) kontrol edebilirsiniz.

    Şemayı bir http sitesine yüklemeniz (ftp kullanabilirsiniz) ve şemanın yüklendiği dosyanın adresini belirtmeniz gerekir:

    WSDL'yi 1C'ye yükleme özellikleri

    WSDL'yi 1C'ye yüklemenin özelliği, geçerli şemaların yüklenemeyebilmesidir. Yerleşik bir doğrulayıcı yoktur, bu nedenle yıkıcı analiz kullanarak bir hatayı aramanız ve devredeki öğelerin sayısını art arda azaltmanız gerekir. Örneğin web hizmeti açıklamasını silebilirsiniz.

    Çalışan bir harici web hizmetini test etmek için işleme

    Çalışan bir harici web hizmetini test etmek için bu makalenin paketindeki “Test ArbitraryWebService.epf” işlemini kullanın.

    Test, adları reddeden Morpher hizmeti örneği kullanılarak kullanılabilir (hizmet adresi http://www.morpher.ru/WebServices/Morpher.asmx?WSDL):

    Bu şekilde, basit türdeki parametreleri içeren basit giriş noktalarına sahip herhangi bir hizmeti test edebilirsiniz: sayı, tarih, dize.

    İşleme sırasında, web hizmetine erişime izin vermek için gereken kullanıcı adını ve şifreyi de belirleyebilirsiniz.

    Hata ayıklama hizmetleri için standart araçlar

    Hata ayıklama için, bir web hizmetine isteğe bağlı bir istek gönderebilen ve ondan yanıt alabilen SoapUI programını kullanabilirsiniz.

    SABUN ve HTTPS

    Ne yazık ki, 1C'deki SOAP, HTTPS protokolü üzerinden çalışırken oldukça kaprisli davranıyor; uygulama, platformda olasılık bildirilmesine rağmen bir HTTPS bağlantısı kurmanın imkansız olduğunu gösteriyor. Bağlantının kurulamamasının nedenlerini bulmaya yönelik tanılama ve hata ayıklama araçlarının eksikliği, olumsuz sonuçlar doğuruyor. Bu nedenle SOAP'ın CURL üzerinden kullanılması uygundur.

    HTTPS kullanımına ilişkin yerleşik mekanizma, tüm sertifikaların 1C program dizinindeki ortak bir pem dosyasında yayınlanması gerektiğini ima eder.

    1C'yi hizmet olarak kullanma

    1C'ye dayalı bir hizmet geliştirme kuralları

    Merhaba Operasyonu

    İyi form kuralı, hizmette, hizmetin kullanılabilir olduğunu bildiren bir işlem oluşturmaktır. Bu entegratörler için hayatı kolaylaştıracak, servisle iletişimin kurulup kurulmadığını kontrol etmeleri kolaylaşacaktır.

    Örneğin, yalnızca True Boolean değerini döndüren Hello işlemini parametreler olmadan kullanabilirsiniz.

    Bir web hizmeti yayınlama

    Prosedür belgelerde iyi bir şekilde açıklanmıştır: file:///C:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167634:

    Web hizmetlerini yayınlama görevi, Web hizmetlerinin *.1cws yapılandırma dosyalarını web sunucusunun uygun dizinine, web sunucusu için uygun ayarlarla yerleştirmekten ibarettir. Web servislerini yayınlamak için “Yönetim | Web hizmetlerini yayınlamak."

    Bu komutun yürütülmesi sonucunda Web hizmetleri yayınlama penceresi açılacaktır.

    Web hizmetleri yayınlama penceresi, web sunucusunun yolunu ve iki listeyi içerir:

    • “Web hizmetleri” - yapılandırma web hizmetlerinin listesi;
    • “Yayın” - belirtilen web sunucusunda yayınlanan Web hizmetlerinin listesi.

    "Bağlantı..." butonunu kullanarak Web servislerini yayınlamak istediğiniz web sunucusunu belirtmelisiniz.

    Web sunucusu yolu seçim penceresi, yolu iki şekilde belirtmenize olanak tanır:

    • “Dosyalar” sekmesinde - bu yöntem, web sunucusunun kurulu olduğu bilgisayarda yayınlama işlemi gerçekleştirildiğinde kullanılır. Yol, yayınlanan Web sunucusunun çağrılacağı İnternet sayfasına karşılık gelen yerel bir dizindir;
    • “FTP sitesi” sekmesinde - bu yöntem, uzak bir bilgisayarda bir Web hizmeti yayınlamanız gerektiğinde kullanılır. Yayımlamak için uzak bilgisayara olan FTP bağlantısının parametrelerini ve Web hizmetinin yayınlanacağı dizini belirtmeniz gerekir.

    Seçilen Web hizmeti “Yayınla” butonu kullanılarak yayınlanır

    Bir Web hizmetinin yayınlanmasını iptal etmek için “Sil” düğmesini kullanın.

    Yerel bir dizine veya FTP yoluyla yayınlayabilirsiniz. Uzak sunucunun yerel ağın bir parçası olması durumunda, UNC yolu aracılığıyla uzak sunucuya da yayınlayabilirsiniz.

    Yayınlandıktan sonra web hizmeti “http://localhost/test.1cws” veya “http://xxx.ru/test.1cws” adresinde kullanılabilir; burada xxx.ru, uzak sunucunun ve localhost'un adresidir. yerel sunucunun tipik adresidir.

    1C web hizmetine yetkilendirme

    Hizmete erişmek için kimlik doğrulamasını geçmeniz gerekir.

    Yetkilendirme sorunları burada ayrıntılı olarak ele alınmıştır: http://www.forum.mista.ru/topic.php?id=341168 ve dokümantasyon dosyasında:///c:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81. htm

    Genellikle bir web hizmeti belirli bir kullanıcı (genellikle özel olarak oluşturulmuş bir kullanıcı) altında çalışır. Windows kimlik doğrulamasını kullanarak bir 1C kullanıcısını IUSR_ Windows kullanıcısına "ekleyebilirsiniz" (kullanıcı için 1C yetkilendirmesini devre dışı bırakın). Alternatif olarak, 1C kullanıcılarının listesini temizleyebilirsiniz, ardından yetkilendirme gerekli değildir.

    Birkaç kullanıcıya ihtiyaç duyulursa, web sunucusu için birkaç oturum açma bilgisi oluşturabilir, her birine bir Windows kullanıcısı atayabilir ve buna göre 1C'de Windows kullanıcılarına erişimi kaydedebilirsiniz.

    WSProxy nesnesinin Kullanıcı ve Parola özelliklerinde, kullanılan 1C oturum açma adı değil, web sunucusu kullanıcı oturum açma adıdır.

    1C web hizmetini test etme

    1C'yi bir web hizmeti olarak test etmek için, "Çalışan bir harici web hizmetini test etme" bölümünde açıklandığı gibi "ArbitraryWebService.epf'yi Test Et" işlemini kullanın.

    1cws dosyası, 1C web hizmetinin WSDL açıklamasıdır.

    Perakendede hizmetleri kullanma

    Tipik olarak perakende hizmetleri, nüfusa çeşitli hizmetler sağlamak için kullanılır - ödemelerin kabul edilmesi, kredilerin geri ödenmesi, para transferleri, yazılım satın alınması vb.

    Bu durumda, sağlanan hizmet için 1C'de işlem parametrelerinin kaydedildiği bir makbuz oluşturulur. Daha sonra bu makbuz, verilen hizmetle ilgili ayrıntılı bilgi içeren müşteriye yazdırılır. Müşterinin kendi sözlerinden girilen verileri imzasıyla onaylaması için ön kontrol çıktısı alınması mümkündür.

    Hizmet, 1C dilinde (UT, Perakende ve diğerleri) yazılmış bir perakende programına farklı şekillerde entegre edilebilir:

    1. Hizmetle ilgili tüm işleri gerçekleştiren 1C dilinde işlem veya kod yazılabilir.
    2. Hizmetle çalışan bir program kullanılabilir ve 1C'de yalnızca kontrollerin delinmesi için bilgi iletir.

    1C'de servis verilerinin organizasyonu

    Bir işlemle ilgili bilgileri makbuzda saklamak için, ayrıntıları içeren ek bir "Karmaşık satışlar" tablo bölümü oluşturmanız gerekir:

    • İsimlendirme - çekin isimlendirmesine bağlantı.
    • Parametre - “Karmaşık satışlar: Parametreler” referans kitabına bağlantı.
    • Değer - parametrenin değeri, karmaşık bir tür. Dize gösterimi, kontrol metnine uyum sağlamak için oldukça uzun (1024 karakter) olmalıdır.

    “Karmaşık Satışlar: Parametreler” dizini işlem parametrelerinin bir listesini içerir.

    Bir dizi ayrıntı yerine tablo kısmını kullanmak daha karlı çünkü bir işlemde bunlardan çok sayıda bulunabilir ve hizmetle ilgili olmayan diğer kontrollerde bu ayrıntılar kullanılmayacak ve fazladan yer kaplayacaktır. Ayrıca böyle bir çözüm, herhangi bir hizmet için evrenseldir ve yeni bir hizmetin uygulanmasından sonra verilerin yeniden yapılandırılmasını gerektirmez.

    Satıcıya, çekin işlem ayrıntıları plakasını görebileceği ayrı bir yer imi (veya yapılandırmayı değiştirmemek için basılı bir form) verilir.

    1C dilinde işlemeyi kullanma

    “Perakende” yapılandırması için Paym koşullu hizmeti örneğine bakalım.

    1. 1C'de “Paym” isimlendirme dizininin önceden tanımlanmış bir öğesini oluşturalım. 1C:Enterprise modunda, konfigürasyonu güncelledikten sonra buna “Servis” ürün tipinin atanması gerekir.
    2. “Tabloya öğe ekle” prosedüründe. "Satış Kaydı" form modülünün "bölümünde", işin 1C dilinde yazılmış hizmetle işlenmesini diyoruz. Ödeme başarılı olursa çeki kaydedip göndeririz:
    If (Nomenklatür = Dizinler.Nomenklatür.Ödeme) VE (Transfer İşlem Türü. İşlem Türleri KKM'yi Kontrol Edin. İade) O halde Ödeme İşleme = Fonksiyonlar.Harici İşleme Verin ("Ödeme"); PaymentForm = PaymentProcessing.GetForm(); Sonuç = PaymentForm.OpenModal(); Sonuç = Tanımsız ise Geri Dön; endIf; ThisObject.Write(DocumentWriteMode.Post); endIf;
    1. İşleme, ön makbuzu yazdırmalı (gerekiyorsa), karmaşık satışların tablo kısmını doldurmalı ve önceden tanımlanmış "PaymCheckText" özelliğinde çek yazdırma metnini hazırlamalıdır.
    2. Makbuz modülünün "Fiş gönder ve yazdır" prosedüründe, ürünün adını, makbuz ayrıntılarında kayıtlı olan adla değiştiririz. Metin yalnızca satışlarda değiştirilir; iadelerde ise her zamanki gibi yalnızca hizmetin adı yazdırılır.
    Aksi takdirde Transfer İşlem Türü.İşlem TürleriKontrol KKM.Return And Selection.NomenclatureLink = Directoryes.Nomenclature.Paym Then //Osipov PaymMaster ComplexSales Line = ComplexSales.Find(Directories.ComplexSalesParameters.PaymReceiptText, "Properties"); Karmaşık Satış Hattı tanımsızsa Ürün.Adı = Kısaltılmış LP(Karmaşık Satış Hattı. Değer); endIf;

    Ayrı bir soru, işlemin tamamlanmasının nasıl sağlanacağıdır. Onlar. İşlem hizmette gerçekleştiyse, 1C'de kaybolmadığından nasıl emin olunur? En uygun yol kayıtları uzlaştırmaktır. Ancak bu ayrı olarak ele alınması gereken bir konudur.

    1C ile entegre olan programları kullanma

    XDTO

    XDTO genellikle web hizmetlerinde kullanılır. İşte XDTO'yu 1C'de kullanmak için en önemli ipuçları ve tarifler.

    1C platformunda XDTO

    Yapılandırmanın "XDTO nesneleri" dalında açıklanan XDTO paketleri, küresel fabrika XDTO Factory'de türler ve nesneler oluşturmak için kullanılabilir. Bu hemen belli olmuyor.

    Şemadaki bazı türlerin bir adı yoktur; bunları elde etmek için tür hiyerarşisinden geçmeniz gerekir.

    Örnek, XDTO yapılarını içeren bir Sistem listesini tanımlıyordu. Yapının kendisini oluşturmak için türünü şu şekilde almanız gerekiyordu:

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

    XDTO ile ilgili yaygın sorunlar

    Farklı XSD Şema Formatları

    Bazı formatlarda etiketlere xs:, bazılarında xsd: adı verilir, ancak 1C her iki formatı da güvenli bir şekilde anlar. Bir zamanlar XSD'nin 1C'ye normalde hatasız olarak aktarıldığı ancak tek bir paket oluşturmadığı bir durum vardı. Sebebi bir özelliğin olmamasıydı hedefAd alanı buna göre etikette 1C, diyagramı hangi pakete yerleştireceğini bilmiyordu, ancak hata üretmedi.

    Servis desteği

    Hizmetin iki sistemin (1C ve harici) birleşimi olduğu göz önüne alındığında, her iki sistemde de hatalar meydana gelebilir ve bu da genel çalışma güvenilirliğini azaltır.

    Hizmet arızalarının nedenlerini anlamayı kolaylaştırmak için bir dizi önlemin kullanılması önerilir.

    İstekleri günlüğe kaydetme

    Bağlantılar

    • XDTO
      • XDTO'nun iyi bir açıklaması http://pro1c.org.ua/index.php?showtopic=214
    • Ücretsiz ilginç web hizmetleri:
      • Aeroflot - uçuş tarifeleri hakkında bilgi
      • Morpher - adların çekimi http://www.morpher.ru/WebServices/Morpher.aspx
    • Demonte:
      • Web hizmetlerini yükleme ve kullanma
        • v8: apache yapılandırma dosyası nasıl değiştirilir?
        • v8: web servisleri ile konunun devamı - web servisine bağlanamıyorum
        • v8: Web hizmetlerinde gezinmeye devam ediyorum - proxy oluşturamıyorum...
        • Bilgi Kitabı: v8: 1C:Enterprise 8'de harici web servislerinin kullanılması;

    Sosyal Medya İçerik Pazarlaması: Takipçilerinizin Aklına Nasıl Girilir ve Onları Markanıza Aşık Etmek adlı yeni bir kitap yayınladık.

    Web hizmeti (hizmet), siteler arasındaki etkileşimi düzenleyen bir programdır. Bir portaldaki bilgiler diğerine aktarılır.

    Mesela bir havayolu şirketi var. Çok sayıda uçuşu var, bu da çok fazla bileti olduğu anlamına geliyor. Bilgileri bir web hizmeti aracılığıyla bir seyahat toplayıcı sitesine iletir. Toplayıcıya erişen bir kullanıcı, bu havayolu şirketinin biletlerini doğrudan buradan satın alabilecek.

    Web hizmetlerine başka bir örnek, belirli bir şehirdeki veya bir bütün olarak ülkedeki hava koşulları hakkında bilgi içeren bir hava durumu izleme sitesidir. Bu bilgiler sıklıkla üçüncü şahıslar tarafından da kullanılmaktadır.

    İnternetteki bilgiler çeşitlidir. Siteler farklı sistemler tarafından yönetilmektedir. Farklı iletim ve şifreleme protokolleri kullanılır. Web hizmetleri farklı siteler arasında bilgi alışverişini kolaylaştırır.

    Web hizmetleri mimarisi ve protokolleri

    Birbiriyle etkileşim halinde olan 3 yetkiliyi tanımlayabilirsiniz: katalog, yüklenici ve müşteri. Yüklenici hizmeti oluşturduktan sonra kataloğa kaydeder ve müşteri hizmeti orada bulur.

    Veri alışverişi mekanizması Web Hizmetleri Açıklamasında oluşturulur. Müşteri ile hizmet taşıyıcısı arasındaki bilgi alışverişi sürecinde kullanılan iletim formatlarını, içerik türlerini, taşıma protokollerini kapsayan bir spesifikasyondur.

    Günümüzde çeşitli web hizmetlerini uygulamak için en sık çeşitli teknolojiler kullanılmaktadır:

    1. TCP/IP, ana bilgisayarlardan taşınabilir cihazlara ve PDA'lara kadar hemen hemen her ağ ekipmanı tarafından anlaşılan bir protokoldür.
    2. HTML, tüketici cihazlarında içerik görüntülemek için kullanılan evrensel bir biçimlendirme dilidir.
    3. XML, her türlü veriyi işlemek için evrensel bir araçtır. Diğer bilgi alışverişi protokolleri bu temelde çalışabilir: SOAP ve WSDL.
    4. UDDI evrensel bir tanıma, entegrasyon ve açıklama kaynağıdır. Kural olarak özel ağlarda çalışır ve henüz yeterli dağıtım bulamadı.

    Sunulan teknolojilerin çok yönlülüğü web servislerini anlamanın temelini oluşturur. Uygulama sağlayıcılarından ve diğer ağ kaynaklarından bağımsız standart teknolojiler üzerinde çalışırlar. Herhangi bir işletim sisteminde, uygulama sunucusunda, programlama dilinde vb. kullanılabilir.

    Avantajları

    • Platformdan bağımsız olarak yazılım bileşenlerinin etkileşimi için gerekli koşulları oluşturmak.
    • Web hizmetleri açık standart protokollere dayanmaktadır. XML'in kullanıma sunulması nedeniyle web hizmetlerinin oluşturulması ve yapılandırılması basitleştirilmiştir.
    • HTTP kullanımı, ağlar arası erişim yoluyla sistemlerin etkileşimini garanti eder.

    Kusurlar

    • XML mesajlarının metin bağlamında kullanılması nedeniyle RMI, CORBA, DCOM sistemleriyle karşılaştırıldığında düşük performans ve büyük trafik hacmi.
    • Güvenlik seviyesi. Tüm modern web servisleri kodlama uygulamalı ve kullanıcı yetkilendirmesi gerektirmelidir. Burada HTTPS'nin yeterli olup olmadığına veya XML Şifreleme, SAML vb. gibi daha güvenilir protokollere ihtiyaç duyulup duyulmadığına geliştirme sırasında karar verilir.

    Web Hizmetleri Görevleri

    Web servisleri birçok alanda kullanılabilmektedir.

    B2B işlemleri

    Süreçlerin entegrasyonu, insanların katılımı olmadan anında gerçekleşir. Örneğin, çevrimiçi mağaza kataloğunun yeni ürünlerle güncellenmesi. Depoya getirilirler ve depo sahibi gelişi veri tabanına not eder. Bilgiler otomatik olarak çevrimiçi mağazaya aktarılır. Alıcı da ürün kartına “Stokta Yok” işaretlemek yerine adedini görüyor.

    Kurumsal hizmetlerin entegrasyonu

    Şirket kurumsal programlar kullanıyorsa, web hizmeti ortak çalışmalarının kurulmasına yardımcı olacaktır.

    İstemci-sunucu sistemi oluşturma

    Hizmetler, istemci ve sunucunun çalışmasını yapılandırmak için kullanılır. Bu şu faydaları sağlar:

    • Yazılımın kendisini satamazsınız ancak web hizmetine ücretli erişim sağlayabilirsiniz;
    • Üçüncü taraf yazılımları kullanarak sorunları çözmek daha kolaydır;
    • sunucunun içeriğine ve materyallerine erişimi düzenlemek daha kolaydır.

    Web hizmeti, kaynak etkileşiminin teknik kurulumunu basitleştiren bir uygulamadır.