Millised on peamised nõuded äri rakendustele? Kõige olulisemateks on järgmised ülesanded:
- Rakenduse tööloogika kergesti muutmine/kohandamine muutuvaid äriülesandeid silmas pidades.
- Lihtsus teiste rakendustega integreerimisel.
Esimese ülesande lahendamine 1C-s on lühidalt kirjeldatud jaotises „Kohandamine ja toetamine“; me naaseme selle huvitava teema juurde ühes tulevases artiklis. Täna keskendume teisele ülesandele, integreerimisele. Integreerimisülesanded
Интеграционные задачи
Integreerimisülesanded võivad olla erinevad. Mõned neist, näiteks töötajate nimekirja edastamine panga jaoks palkade plastikkaartide vormistamiseks, nõuavad vaid lihtsat interaktiivset andmevahetust. Suuremate probleemide korral võib osutuda vajalikuks täielikult automatiseeritud andmevahetus, mis võib hõlmata ka välist süsteemi äriloogikaga pöördumist. On ka spetsiifilisemaid ülesandeid, nagu integreerimine välistesse seadmetesse (nt kaubandusseadmed, mobiilsed skannerid jne) või pärand- või kitsalt spetsialiseeritud süsteemidesse (nt RFID-siltide tuvastamissüsteemid). Iga ülesande puhul on äärmiselt oluline valida kõige sobivam integreerimismehhanism.
Integreerimisvõimalused 1C-ga
On olemas erinevaid lähenemisviise 1C rakenduste integreerimise rakendamiseks; millest valida, sõltub ülesande nõuetest.
- Rakendamine põhineb , pakutava platvormi, oma spetsialiseeritud API rakenduse küljel 1C (näiteks Web- või HTTP-teenuste komplekti, mis kutsub kolmandate osapoolte rakendusi 1C rakendusega andmete vahetamiseks). Selle lähenemise eeliseks on API vastupidavus 1C rakenduse rakenduse elluviimise muudatustele. Lähenemise eripära on vajalik muuta 1C tüüplahenduse lähtekoodi, mis võib potentsiaalselt nõuda pingutusi lähtekoodide ühendamisel, kui liikuda uuele konfiguratsiooniversioonile. Sel juhul võib appi tulla uus progressiivne funktsionaalsus — . Laiendused on põhimõtteliselt pistikprogrammi mehhanism, mis võimaldab luua rakenduste lahenduste täiustusi, muutmata ise rakenduste lahendusi. Integratsiooni API viimine konfiguratsiooni laiendusse aitab vältida keerukusi konfiguratsioonide ühinemisel, kui liikuda uuele tüüplahenduse versioonile.
- Platvormi integreerimismehanismide kasutamine, mis tagavad juurdepääsu rakenduse objekti mudelile väljastpoolt ning ei nõua rakenduse muutmist või laienduste loomist. Selle lähenemise pluss on, et 1C rakendust ei pea muutma. Miinus on see, et kui 1C rakendust on muudetud, võivad integraalrakenduses olla vajalikud täiendavad kohandused. Sellise lähenemise näiteks on OData protokolli kasutamine, mis on rakendatud 1C:Ettevõtte platvormi poolel (täiendav teave selle kohta on allpool).
- Valmis rakendusprotokollide kasutamine, mis on rakendatud 1C tüüpilistes lahendustes. Paljud 1C ja partnerite tüüpilised lahendused rakendavad platvormi toetatavate integreerimismehanismide põhjal oma rakendusprotokolle, mis on suunatud konkreetsetele ülesannetele. Nende mehhanismide kasutamisel ei ole vaja kirjutada 1C rakenduses koodi, kuna kasutame rakenduse tavapäraseid võimalusi. 1C rakenduse poolel on meil vaja teha vaid teatud seadistusi.
Integreerimismehanismid 1C:Ettevõtte platvormis
Failide importimine/eksportimine
Kujutame ette ülesande, milleks on kahe suunalise andmevahetuse tagamine 1C rakenduse ja mõne muu rakenduse vahel. Näiteks peame sünkroniseerima kaupade nimekirja (Nomenklatuuri register) 1C rakenduse ja mingi muu rakenduse vahel.

Selle ülesande lahendamiseks on võimalik kirjutada laiendus, mis eksportib Nomenklatuuri registri teatud formaadis faili (teksti, XML, JSON jne) ja oskab seda formaati lugeda.
Platvormil on rakendatud mehhanism rakendusobjektide serialiseerimiseks XML-i nii otse, kasutades globaalse konteksti meetodeid ЗаписатьXML/ЧтениеXML, kui ka abitoote XDTO (XML Data Transfer Objects) abil.
Iga objekt 1C:Ettevõtte süsteemis saab serialiseerida XML-esitlusse ja vastupidi.
See funktsioon tagastab objekti esitlemise XML-is:
Funktsioon Objekti_XML(Objekt)
ЗаписьXML = Uus ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, Objekt);
Tagasta ЗаписьXML.Закрыть();
LõppFunktsioon
Niimoodi näeb välja Nomenklatuuri registri eksport XML-i abil XDTO kaudu:
<НаСервере>
Проtseduur ЭкспортXMLНаСервере()
НовыйСериализаторXDTO = СериализаторXDTO;
НоваяЗаписьXML = Новый ЗаписьXML();
НоваяЗаписьXML.ОткрытьФайл("C:DataНоменклатура.xml", "UTF-8");
НоваяЗаписьXML.ЗаписатьОбъявлениеXML();
НоваяЗаписьXML.ЗаписатьНачалоЭлемента("СправочникНоменклатура");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
ОбъектНоменклатура = Выборка.ПолучитьОбъект();
НовыйСериализаторXDTO.ЗаписатьXML(НоваяЗаписьXML, ОбъектНоменклатура, НазначениеТипаXML.Явное);
КонецЦикла;
НоваяЗаписьXML.ЗаписатьКонецЭлемента();
НоваяЗаписьXML.Закрыть();
КонецПроцедуры
Lihtsa ümbertegemise kaudu ekspordime registri JSON-iks. Kaubad salvestatakse massiivi; mitmekesisuse huvides toome ingliskeelse süntaksi versiooni:
&AtServer
Procedure ExportJSONOnServer()
NewXDTOSerializer = XDTOSerializer;
NewJSONWriter = New JSONWriter();
NewJSONWriter.OpenFile("C:DataNomenklatuur.json", "UTF-8");
NewJSONWriter.WriteStartObject();
NewJSONWriter.WritePropertyName("KataloogNomenklatuur");
NewJSONWriter.WriteStartArray();
Selection = Catalogs.Nomenkatuur.Select();
While Selection.Next() Do
NomenclatureObject = Selection.GetObject();
NewJSONWriter.WriteStartObject();
NewJSONWriter.WritePropertyName("Nomenkatuur");
NewXDTOSerializer.WriteJSON(NewJSONWriter, NomenclatureObject, XMLTypeAssignment.Implicit);
NewJSONWriter.WriteEndObject();
EndDo;
NewJSONWriter.WriteEndArray();
NewJSONWriter.WriteEndObject();
NewJSONWriter.Close();
EndProcedure
Järgmiseks tuleb andmed edastada lõppkasutajale. 1C:Enterprise platvorm toetab peamisi internetiprotokolle nagu HTTP, FTP, POP3, SMTP, IMAP, sealhulgas nende turvalisi versioone. Samuti saab andmete edastamiseks kasutada HTTP ja/või veebiteenuseid.
HTTP- ja veebiteenused

1C rakendused saavad rakendada oma HTTP- ja veebiteenuseid ning kutsuda esile teiste rakenduste loodud HTTP- ja veebiteenuseid.
REST liides ja OData protokoll
Alates versioonist 8.3.5 suudab 1C:Enterprise platvorm automaatselt kogu rakenduse lahenduse jaoks. Iga seadistuse objekt (register, dokument, andmete register jne) saab muuta kättesaadavaks andmete saamiseks ja muutmiseks REST liidese kaudu. Access protokollina kasutab platvorm protokolli versioon 3.0. OData teenuste avaldamine toimub Konfiguratori menüüst „Halduse -> Avaldamine veebiserverisse”, ruut „Avalda OData standardliides” peab olema märgitud. Toetatakse formaate atom/XML ja JSON. Pärast rakenduse avaldamist veebiserveris saavad kolmandate osapoolte süsteemid sellele ligi pääseda REST liidese kaudu HTTP-päringute abil. OData protokolliga 1C rakenduse kasutamiseks ei ole 1C poolset programmeerimist vajalik.
Seega URL vormis http:////odata/standard.odata/Catalog_Номенклатура tagastab meile Nomenklatuuri katalooge sisu XML formaadis — elementide entry kogumi (sõnumi pealkiri on lühiduse tõttu välja jäetud):
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')
2016-06-06T16:42:17
35d1f6e4-289b-11e6-8ba4-e03f49b16074
AAAAAgAAAAA=
false
000000001
Kondeer Mitsubishi
Võimsus 2,5 kW, töörežiimid: soojus/külm
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
Lisades URL-ile string «?$format=application/json», saame Kataloog Nomenklatuur sisu JSON formaadis (URL vorm) http:////odata/standard.odata/Catalog_Номенклатура?$format=application/json ):
{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Nomenklatuur",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Mitsubishi kliimaseade",
"Описание": "Võimsus 2,5 kW, töörežimid: sooja/külma"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Daikin kliimaseade",
"Описание": "Võimsus 3 kW, töörežimid: sooja/külma"
}, …
Välistest andmeallikatest

Mõnedel juhtudel andmevahetus läbi võib osutuda optimaalseks lahenduseks. Välistingimustes andmeallikad on 1C konfiguratsiooni rakendusobjekt, mis võimaldab suhelda mis tahes ODBC ühilduva andmebaasiga nii lugemise kui ka kirjutamise jaoks. Välistingimustes andmeallikad on saadaval nii Windowsis kui ka Linuxis.
Andmevahetuse mehhanism
on mõeldud nii 1C:Ettevõtte põhjal territoriaalselt jaotatud süsteemide loomiseks kui ka andmevahetuse korraldamiseks teiste teabehaldussüsteemide, mis ei põhine 1C:Ettevõttel.
See mehhanismi kasutatakse aktiivselt 1C rakendustes ja sellega kaasnevate ülesannete spekter on üsna ulatuslik. See hõlmab andmete vahetust 1C rakenduste vahel, mis on paigaldatud organisatsiooni filiaalides, andmete vahetust 1C rakenduse ja e-poe vahel ning andmete vahetust serveri 1C rakenduse ja mobiilikliendi (mis on loodud 1C:Ettevõtte mobiilplatvormi abil) vahel, ja palju muud.
Üks andmevahetuse mehhanismi võtmekontseptsioone on vahetusplaan. Vahetusplaan on 1C rakenduse platvormi eriline objekti tüüp, mis määratleb eelkõige andmete koostise, mis osaleb vahetuses (millised täpselt registrid, dokumendid, registrid jne). Vahetusplaan sisaldab samuti teavet vahetuses osalejate (nii nimetatud vahetuspunktide) kohta.
Teine andmete vahetamise mehhanismi komponent on muudatuste registreerimise mehhanism. See mehhanism jälgib automaatselt süsteemis andmete muutusi, mis tuleb edastada lõppkasutajatele andmevahetusplaani raames. Selle mehhanismi abil jälgib platvorm muutusi, mis on toimunud alates viimasest sünkroonimisest, ning võimaldab minimeerida andmemahtu, mis edastatakse järgmise sünkroonimise seansi käigus.
Andmete vahetus toimub kindla struktuuriga XML-sõnumite kaudu. Sõnum sisaldab andmeid, mis on muutunud alates viimase sünkroneerimise hetkest sõlmega, samuti teatud teenindusteavet. Sõnumite struktuur toetab sõnumite numeerimist ja võimaldab saada kinnitusi sõlme-vastuvõtjalt sõnumite vastuvõtmise kohta. Selline kinnitus on igas sõnumis, mis tuleb sõlme-vastuvõtjalt, viimase vastu võetud sõnumi numbri kujul. Sõnumite numeerimine aitab platvormil mõista, millised andmed on juba edukalt edastatud sõlme-vastuvõtjale, ja vältida korduvat edastamist, edastades ainult andmed, mis on muutunud alates viimase sõnumi vastuvõtmisest, millega sõlme-vastuvõtja sai kviitungi. Sellise töötsükli korral tagatakse garanteeritud kohaletoimetamine isegi ebausaldusväärsete edastuskanalite korral ja sõnumite kaotamise korral.
Välised komponendid
Mõnedes olukordades, integreerimiste ülesannete lahendamisel, tuleb silmitsi seista spetsiifiliste nõudmistega, nagu näiteks suhtlusprotokollid ja andmeformaatide töötlemine, millele 1C:Enterprise platvorm ei oma toetust. Selleks on platvormis ettenähtud , mis võimaldab luua dünaamiliselt ühendatavaid mooduleid, mis laiendavad 1C:Enterprise funktsionaalsust.
Tüüpiliseks näiteks selliste nõudmistega seotud ülesandest on 1C rakenduse integreerimine kaubandusseadmetega, alustades kaaludest ning lõpetades kassaseadmete ja triipkoodiskanneritega. Välised komponendid võivad olla ühendatud nii 1C:Enterprise serveri küljes kui ka kliendi poolel (sealhulgas veebikliendi ja 1C:Enterprise). Väliste komponentide tehnoloogia näeb ette piisavalt lihtsa ja arusaadava programmeerimise (C++) liidese, millega komponent peab suhtlema 1C:Enterprise platvormiga, mis tuleb teostada arendaja poolt.
Välist komponentide kasutamisel avanevad võimalused on väga laiad. Saate rakendada suhtlemist spetsiifilise andmevahetusprotokolliga välistest seadmetest ja süsteemidest, sisestada spetsiifilisi andmetöötlusalgoritme ja andmeformaatide osas jne.
Aegunud integreerimismehhanismid
Platvormil on saadaval integreerimismehhanismid, mida ei soovitata uutes lahendustes kasutada; need on jäetud koos tagurpidis ühilduvuse põhjused, samuti juhuks, kui teine pool ei saa töötada kaasaegsemate protokollidega. Üks neist on DBF formaadi failidega töötamine (toetatakse integreeritud keeles objekti XBase abil).
Teine aegunud integratsiooni mehhanism on COM-tehnoloogia kasutamine (saadaval ainult Windows platvormil). 1C:Enterprise pakub Windowsile kahte integratsiooni meetodit, mis kasutavad COM-tehnoloogiat: Automation-server ja Väline ühendus. Need on väga sarnased, kuid üheks peamiseks erinevuseks on see, et Automation-serveri puhul käivitatakse täieõiguslik 1C:Enterprise 8 kliendirakendus, samas kui väline ühendus käivitab suhteliselt väikese protsessidevahelise COM-serveri. Seega, kui kasutatakse Automation-serverit, on võimalik kasutada kliendirakenduse funktsionaalsust, sooritada toiminguid, mis on sarnased kasutaja interaktiivsetele toimingutele. Välist ühendust kasutades võib kasutada ainult äriloogika funktsioone, mida saab sooritada kas ühenduse kliendipoolsel küljel, kus luuakse protsessidevaheline COM-server, või äriloogika kutsumist 1C:Enterprise serveri poole.
COM-tehnoloogiat saab kasutada ka välissüsteemidele pääsemiseks 1C:Enterprise'i rakenduse koodist. Sellisel juhul toimib 1C rakendus COM-klientina. Tuleb aga meeles pidada, et need mehhanismid töötavad ainult juhul, kui 1C server töötab Windows keskkonnas.
Tüüpiliste konfiguratsioonide integreerimismehhanismid
EnterpriseData formaat

Mõnes 1C konfiguratsioonis (allpool olev nimekiri) on rakendatud olemasolev mehhanism väliste rakendustega andmete vahetamiseks, kasutades eespool kirjeldatud platvormimehhanismi, ilma et oleks vaja muuta konfiguratsioonide lähtekoodi (andmete vahetuseks ettevalmistamine toimub rakenduste seadetes):
- «1C:ERP Ettevõtte juhtimine 2.0»
- «Kohustuslik automatiseerimine 2»
- «Ettevõtte raamatupidamine», väljaanne 3.0
- «Ettevõtte raamatupidamine KORP», väljaanne 3.0
- «Jaekaubandus», väljaanne 2.0
- «Kaubanduse juhtimine, põhiversioon», väljaanne 11
- «Kaubanduse juhtimine», väljaanne 11
- «Palga- ja personalihaldus KORP», väljaanne 3
Andmete vahetamiseks kasutatakse formaati , mis põhineb XML-il. Vorming on ärile suunatud – kirjeldatud andmestruktuurid vastavad ärilikele objektidele (dokumentidele ja registrielementidele), mis on esindatud 1C programmides, näiteks: teostatud töö akt, laekumiskassa orden, lepinguosaline, kaubavalik jne.
Andmevahetus 1C rakenduse ja kolmanda osapoole rakenduse vahel võib toimuda:
- eraldiseisva failikatalooge kaudu
- FTP katalooge kaudu
- veebiteenuse kaudu, mis on rakendatud 1C rakenduse poole. Andmefail edastatakse veebimeetodite parameetrina
- elektroonilise posti kaudu
Kui andmevahetus toimub veebiteenuse kaudu, käivitab kolmanda osapoole rakendus andmevahetuse seansi, kutsudes esile vastavad 1C rakenduse veebimeetodid. Teistes juhtudel on andmevahetuse algatajaks 1C rakendus (kas paigutades andmefail vastavasse katalooge või saates andmefail määratud e-posti aadressile).
Samuti seadistatakse 1C-s, kui sageli toimub sünkroniseerimine (failide vahetamise katalooge ja elektroonilise posti variantide puhul):
- ajakavaliselt (kindla ajavahemiku jooksul)
- käsitööna; kasutaja peab iga kord, kui seda vajab, käsitsi sünkroonimist käivitama
Sõnumite kviteerimine
1C rakendused jälgivad saadetud ja saadud sünkroonimissõnumeid ning ootavad sama kolmandate osapoolte rakendustelt. See võimaldab kasutada sõnumite nummerdamise mehhanismi, nagu on kirjeldatud eespool jaotises "Andmevahetusmehhanism".
1C rakendused edastavad sünkroniseerimise käigus vaid teavet muudatustest, mis on toimunud äriüksustes alates viimasest sünkroniseerimisest (kuna see aitab vähendada edastatava teabe hulka). Esmase sünkroniseerimise käigus laadib 1C rakendus kõik äriüksused (näiteks kaubanduse registri elemendid) välja EnterpriseData formaadis XML-faili (kuna need on välisele rakendusele "uued"). Kolmas osapool peab töötlema teavet, mis tuli 1C XML-failist, ja järgmise sünkroniseerimise seansi ajal lisama 1C-le saadetavasse faili spetsiaalsesse XML-osasse teavet selle kohta, et teade numbriga 1C on edukalt vastu võetud. Kviitungiteade on 1C rakenduse signaaliks, et kõik äriüksused on edukalt töödeldud välist rakendust ja nende kohta teavet edastada enam ei ole vaja. Lisaks kviitungile võib kolmanda osapoole XML-fail sisaldada ka andmeid rakenduse poolelt sünkroniseerimiseks (nt kaupade ja teenuste teostamise dokumendid).
Pärast maksekorralduse saamist märgib 1C rakendus kõik eelnevas sõnumis edastatud muudatused kui edukalt sünkroonitud. Ainult sünkroonimata muudatused ärimudelite osas (uusate mudelite loomine, olemasolevate muutmine ja kustutamine) saadetakse järgmisel sünkroonimisseansil välisrakendusele.

Andmete edastamine välisrakendusest 1C rakendusse muudab olukorda vastupidiseks. Välisrakendus peab täitma XML-faili kvitatsiooniosakonna vastavalt ning paigutama äridokumendid sünkroonimiseks oma süsteemi poolelt formaadis EnterpriseData.

Lihtsustatud andmevahetus ilma kvitseerimiseta
Lihtsal integratsioonil, kus piisab vaid teabe edastamisest kolmanda osapoole rakendusest 1C rakendusse ning tagasiviidud andmeid 1C rakendusest kolmanda osapoole rakendusse ei nõuta (näiteks online-poe integreerimine, mis edastab müügiinfo "1C:Raamatupidamisele"), on olemas lihtsustatud tööviis veebiteenuse kaudu (ilma kvitseerimiseta), mis ei nõua seadistusi 1C rakenduses.
Spetsialiseeritud integreerimislahendused
On olemas tüüpiline lahendus „1C:Andmete konverteerimine”, mis kasutab platvormi mehhanisme andmete konverteerimiseks ja vahetamiseks 1C tüüplahenduste vahel, kuid seda saab kasutada ka kolmandate osapoolte rakendustega integreerimiseks.
Integreerimine panganduslahendustega
Standart , mille on välja töötanud 1C spetsialistid üle 10 aasta tagasi, on Venemaa tööstuses saanud de facto standardiks. Järgmine samm selles suunas on tehnoloogia , mis võimaldab saata pangale maksedokumente ja saada pangast väljavõtteid otse 1C:Ettevõtte süsteemi programmist, vajutades ühte nuppu 1C programmis; samal ajal ei ole vaja kliendi arvutisse lisarakendusi installida ja käivitada.
On ka .
Muud
Tuleb mainida , kaubandusliku teabe vahetuse standard (välja töötatud koostöös Microsofti, Inteli, Price.ru ja teiste ettevõtetega), .
Allikas: habr.com
