Koji su najvažniji zahtjevi za poslovne aplikacije? Među najvažnijima su sljedeći zadaci:
- Lakoća promjene/adaptacije logike rada aplikacije uz promjenjive poslovne zadatke.
- Lakoća integracije s drugim aplikacijama.
Način na koji se u 1C rješava prvi zadatak kratko je opisan u odjeljku „Prilagodba i podrška“ ; ponovno ćemo se vratiti na ovu zanimljivu temu u jednom od budućih članaka. Danas ćemo govoriti o drugom zadatku, integraciji.
Integracijski zadaci
Integracijski zadaci mogu biti različiti. Za neke je dovoljno jednostavno interaktivno razmjenjivanje podataka – na primjer, za slanje popisa zaposlenika banci za izdavanje plaćanjskih kartica. Za složenije zadatke može biti potreban potpuno automatiziran prijenos podataka, moguće uz pozivanje poslovne logike vanjskog sustava. Postoje zadaci specijalizirane prirode, kao što je integracija s vanjskom opremom (na primjer, trgovinskom opremom, mobilnim skenerima itd.) ili s naslijeđenim ili specijaliziranim sustavima (na primjer, sa sustavima prepoznavanja RFID oznaka). Izuzetno je važno za svaki zadatak odabrati najprikladniji mehanizam integracije.
Mogućnosti integracije s 1C
Postoje različiti pristupi za ostvarenja integracije s 1C aplikacijama, a koji od njih odabrati ovisi o zahtjevima zadatka.
- Implementacija temeljem , koje pruža platforma, ili vlastitog specijaliziranog API-ja sa strane aplikacije 1C (na primjer, skupa Web- ili HTTP-servisa koji će pozivati vanjske aplikacije za razmjenu podataka s aplikacijom 1C). Prednost ovog pristupa je otpornost API-ja na promjene implementacije sa strane aplikacije 1C. Osobina pristupa je da je potrebno mijenjati izvorni kod tipičnog rješenja 1C, što potencijalno može zahtijevati napore prilikom spajanja izvornih kodova pri prelasku na novu verziju konfiguracije. U tom slučaju može pomoći nova progresivna funkcionalnost — . Ekstenzije su, u suštini, mehanizam dodataka koji omogućava stvaranje dodataka aplikacijskim rešenjima bez promene samih aplikacijskih rešenja. Izdvajanje integracijskog API-ja u ekstenziju konfiguracije omogućava izbegavanje složenosti prilikom spajanja konfiguracija prilikom prelaska na novu verziju standardnog rešenja.
- Korišćenje mehanizama integracije platforme, koji omogućavaju spoljašnji pristup objektnoj modelu aplikacije i ne zahtevaju doradu aplikacije ili kreiranje ekstenzije. Prednost ovog pristupa je to što nije potrebno menjati aplikaciju 1C. Nedostatak je što, ako je aplikacija 1C doradjena, možda će biti potrebne dorade u integriranoj aplikaciji. Primer ovog pristupa je korišćenje OData protokola za integraciju, koji je implementiran na strani platforme 1C:Preduzeće (više o tome u nastavku).
- Korišćenje gotovih aplikativnih protokola, implementiranih u standardnim rešenjima 1C. Mnoge standardne solucije od 1C i partnera implementiraju, na osnovu mehanizama integracije koje pruža platforma, sopstvene aplikativne protokole usmerene ka specifičnim zadacima. Kada se koriste ovi mehanizmi, nije potrebno pisanje koda sa strane aplikacije 1C, jer se koriste ugrađene mogućnosti aplikativnog rešenja. Na strani aplikacije 1C potrebno je samo izvršiti određene postavke.
Mehanizmi integracije u platformi 1C:Preduzeće
Uvoz/izvoz fajlova
Pretpostavimo da imamo zadatak dvosmerne razmene podataka između aplikacije 1C i proizvoljne aplikacije. Na primer, potrebno je uskladiti spisak proizvoda (referentni okvir Nomenklatura) između aplikacije 1C i proizvoljne aplikacije.

Za rešavanje ovog zadatka može se napisati ekstenzija koja izvozi referentni okvir Nomenklatura u fajl određenog formata (tekstualni, XML, JSON, …) i koja može da čita ovaj format.
Platforma ima implementiran mehanizam za serializaciju aplikativnih objekata u XML, kako direktno, putem metoda globalnog konteksta ZapisatiXML/ČitatiXML, tako i pomoću pomoćnog objekta XDTO (XML Data Transfer Objects).
Svaki objekat u sistemu 1C:Preduzeće može biti serializovan u XML reprezentaciju i obrnuto.
Ova funkcija će vratiti reprezentaciju objekta u obliku XML:
Funkcija Objekat_U_XML(Objekat)
ZapisXML = Novi ZapisXML();
ZapisXML.PostaviNiz();
ZapišiXML(ZapisXML, Objekat);
Vrati ZapisXML.Zatvori();
KrajFunkcije
ovako će izgledati eksport biblioteke Nomenklatura u XML pomoću XDTO:
&NaServeru
Procedura EksportXMLNaServeru()
NoviSeraializatorXDTO = SeraializatorXDTO;
NovaZapisXML = Novi ZapisXML();
NovaZapisXML.OtvoriDatoteku("C:DataNomenklatura.xml", "UTF-8");
NovaZapisXML.ZapišiObjavuXML();
NovaZapisXML.ZapišiPočetakElementa("BibliotekaNomenklatura");
Selekcija = Biblioteke.Nomenklatura.Izaberi();
Dok Selekcija.Sledeći() Ciklus
ObjekatNomenklatura = Selekcija.PružiObjekat();
NoviSeraializatorXDTO.ZapišiXML(NovaZapisXML, ObjekatNomenklatura, NamenaTipaXML.Jasno);
KrajCiklusa;
NovaZapisXML.ZapišiKrajElementa();
NovaZapisXML.Zatvori();
KrajProcedure
Jednostavnom modifikacijom koda izvezemo biblioteku u JSON. Proizvodi će biti zapisani u niz; kao raznovrsni primer, daćemo englesku varijantu sintakse:
&NaServeru
Procedura EksportJSONNaServeru()
NoviXDTOSeraializator = XDTOSeraializator;
NoviJSONPisac = Novi JSONPisac();
NoviJSONPisac.OtvoriDatoteku("C:DataNomenklatura.json", "UTF-8");
NoviJSONPisac.ZapišiPočetakObjekta();
NoviJSONPisac.ZapišiImenskiDeo("BibliotekaNomenklatura");
NoviJSONPisac.ZapišiPočetakNiza();
Selekcija = Biblioteke.Nomenklatura.Izaberi();
Dok Selekcija.Sledeći() Uradi
ObjekatNomenklatura = Selekcija.PružiObjekat();
NoviJSONPisac.ZapišiPočetakObjekta();
NoviJSONPisac.ZapišiImenskiDeo("Nomenklatura");
NoviXDTOSeraializator.ZapišiJSON(NoviJSONPisac, ObjekatNomenklatura, XMLTipNabavke.Implicit);
NoviJSONPisac.ZapišiKrajObjekta();
KrajUradi;
NoviJSONPisac.ZapišiKrajNiza();
NoviJSONPisac.ZapišiKrajObjekta();
NoviJSONPisac.Zatvori();
KrajProcedure
Nakon toga ostaje samo da se podaci prenesu krajnjem korisniku. Platforma 1C:Preduzeće podržava osnovne internet protokole HTTP, FTP, POP3, SMTP, IMAP, uključujući njihove sigurnosne verzije. Takođe se za prenos podataka može koristiti HTTP i/ili Web-servisi.
HTTP i web-servisi

Aplikacije 1C mogu implementirati svoje HTTP i web-servise, kao i pozivati HTTP i web-servise implementirane od strane drugih aplikacija.
REST interfejs i protokol OData
Počevši od verzije 8.3.5, platforma 1C:Preduzeće može automatski za cela aplikativna rešenja. Bilo koji objekat konfiguracije (biblioteka, dokument, registar informacija itd.) može biti dostupan za dobijanje i modifikaciju podataka putem REST interfejsa. Kao protokol pristupa platforma koristi protokol verzije 3.0. Objavljivanje OData servisa vrši se iz menija Konfiguratora „Administracija -> Objavljivanje na web-serveru“, opcija „Objaviti standardno OData sučelje“ mora biti označena. Podržani su formati atom/XML i JSON. Nakon što je aplikativno rešenje objavljeno na web-serveru, vanjski sistemi mogu mu pristupiti putem REST sučelja koristeći HTTP zahteve. Za rad s aplikacijom 1C putem OData protokola programiranje na strani 1C nije potrebno.
Tako, URL oblik http:////odata/standard.odata/Catalog_Номенклатура vratiti će nam sadržaj kataloga Nomenklatura u XML formatu — kolekcija elemenata entry (naslov poruke je izostavljen zbog sažetosti):
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
Klima uređaj Mitsubishi
Moć 2,5 kW, radni režimi: toplota/hladnoća
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
Dodajući na URL string „?$format=application/json“, dobijamo sadržaj kataloga Nomenklatura u JSON formatu (URL oblik http:////odata/standard.odata/Catalog_Номенклатура?$format=application/json ):
{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Номенклатура",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Klima uređaj Mitsubishi",
"Opis": "Moć 2,5 kW, radni režimi: toplota/hladnoća"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Klima uređaj Daikin",
"Opis": "Moć 3 kW, radni režimi: toplota/hladnoća"
}, …
Vanjski izvori podataka

U nekim slučajevima razmena podataka putem može biti optimalno rješenje. Vanjski izvori podataka su aplikativni objekt konfiguracije 1C koji omogućuje interakciju s bilo kojom ODBC-compatible bazom podataka, kako za čitanje, tako i za pisanje. Vanjski izvori podataka dostupni su i na Windows-u i na Linux-u.
Mehanizam razmjene podataka
namijenjen je za izradu teritorijalno distribuiranih sustava temeljenih na 1C:Poduzeću, kao i za organizaciju razmjene podataka s drugim informacijskim sustavima koji se ne temelje na 1C:Poduzeću.
Ovaj mehanizam se aktivno koristi u implementacijama 1C, a spektar zadataka koje rješava je vrlo širok. To uključuje razmjenu podataka između aplikacija 1C instaliranih u podružnicama organizacije, razmjenu između aplikacije 1C i web stranice internet trgovine, te razmjenu podataka između poslužiteljske aplikacije 1C i mobilnog klijenta (izrađenog s pomoću mobilne platforme 1C:Poduzeće), i još mnogo toga.
Jedna od ključnih pojmova u mehanizmu razmjene podataka je plan razmjene. Plan razmjene je poseban tip objekta aplikativne platforme 1C koji određuje, između ostalog, sastav podataka koji će sudjelovati u razmjeni (koji točno registri, dokumenti, evidencije itd.). Plan razmjene također sadrži informacije o sudionicima razmjene (tzv. čvorovima razmjene).
Druga komponenta mehanizma razmjene podataka je mehanizam registracije promjena. Ovaj mehanizam automatski prati promjene podataka u sustavu koje trebaju biti prenesene krajnjim korisnicima u okviru plana razmjene. Uz pomoć ovog mehanizma platforma prati promjene koje su se dogodile od posljednje sinkronizacije te omogućuje minimiziranje volumena podataka koji se prenose tijekom sljedeće sesije sinkronizacije.
Razmjena podataka odvija se putem XML poruka određene strukture. Poruka sadrži podatke koji su se promijenili od posljednje sinkronizacije s čvorom, kao i neku pomoćnu informaciju. Struktura poruka podržava numeraciju poruka i omogućava dobivanje potvrda od čvora primaoca o prijemu poruka. Takva potvrda sadržana je u svakoj poruci koja dolazi od čvora primaoca u obliku broja posljednje prihvaćene poruke. Numeracija poruka omogućava platformi da razumije koji su podaci već uspješno poslani čvoru primaocu i sprečava ponovnu prijenos, šaljući samo podatke koji su promijenjeni od trenutka prijema posljednje poruke s potvrdom od čvora primaoca. Ovakva shema rada osigurava pouzdanu dostavu čak i pri nepouzdanim kanalima prijenosa i gubitku poruka.
Vanjske komponente
U određenim slučajevima, prilikom rješavanja integracijskih zadataka, suočavamo se sa specifičnim zahtjevima, na primjer, protokolima interakcije, formatima podataka koji nisu predviđeni u platformi 1C:Enterprise. Za takve zadatke platforma predviđa , koja omogućava kreiranje dinamički priključenih modula koji proširuju funkcionalnost 1C:Enterprise.
Tipičan primjer zadatka s takvim zahtjevima može biti integracija aplikativnog rješenja 1C s trgovinskom opremom, počevši od vaga do blagajničkih aparata i skenera barkodova. Vanjske komponente mogu se povezati kako na strani servera 1C:Enterprise, tako i na klijentskoj strani (uključujući, između ostalog, i web klijenta, kao i 1C:Enterprise). Tehnologija vanjskih komponenti predviđa dovoljno jednostavno i razumljivo programsko (C++) sučelje interakcije komponente s platformom 1C:Enterprise, koje treba implementirati programer.
Mogućnosti koje se otvaraju korištenjem vanjskih komponenti su vrlo široke. Može se realizirati interakcija prema specifičnom protokolu razmjene podataka s vanjskim uređajima i sustavima, integrirati specifični algoritmi obrade podataka i formate podataka itd.
Zastarjeli mehanizmi integracije
Na platformi su dostupni mehanizmi integracije koje se ne preporučuje koristiti u novim rješenjima; ostavljeni su iz razloga povratne kompatibilnosti, kao i u slučaju da druga strana ne može raditi s modernijim protokolima. Jedan od njih je rad s datotekama formata DBF (podržano u ugrađenom jeziku pomoću objekta XBase).
Drugi zastarjeli mehanizam integracije je korištenje tehnologije COM (dostupno samo na platformi Windows). Platforma 1C:Enterprise pruža dva načina integracije za Windows koristeći tehnologiju COM: Automation-server i Vanjsko povezivanje. Oni su vrlo slični, ali jedna od glavnih razlika je u tome što se u slučaju Automation-servera pokreće potpuno klijentska aplikacija 1C:Enterprise 8, dok se u slučaju vanjskog povezivanja pokreće relativno mali unutarprocesni COM-server. To jest, u slučaju rada putem Automation servera može se iskoristiti funkcionalnost klijentske aplikacije, izvršavati radnje slične interaktivnim radnjama korisnika. Pri korištenju vanjskog povezivanja može se koristiti samo funkcije poslovne logike, a te se mogu izvršavati kako na klijentskoj strani povezivanja, gdje se stvara unutarprocesni COM-server, tako i pozivati poslovnu logiku na strani servera 1C:Enterprise.
Također, tehnologiju COM moguće je koristiti za pristup vanjskim sustavima iz koda aplikacije na platformi 1C:Enterprise. U ovom slučaju aplikacija 1C djeluje kao COM-klijent. No, treba napomenuti da će ti mehanizmi raditi samo u slučaju da server 1C funkcionira u Windows okruženju.
Mehanizmi integracije implementirani u standardnim konfiguracijama
Format EnterpriseData

U nizu konfiguracija 1C (popis u nastavku) na temelju gore opisanog platformskog mehanizma razmjene podataka implementiran je gotov mehanizam razmjene podataka s vanjskim aplikacijama, koji ne zahtijeva promjenu izvornog koda konfiguracija (priprema za razmjenu podacima se vrši u postavkama primjenjivih rješenja):
- «1C:ERP Upravljanje poduzećem 2.0»
- «Kompleksna automatizacija 2»
- «Računovodstvo poduzeća», izdanje 3.0
- «Računovodstvo poduzeća KORP», izdanje 3.0
- «Maloprodaja», izdanje 2.0
- „Upravljanje trgovinom osnovno“, izdanje 11
- „Upravljanje trgovinom“, izdanje 11
- „Plaće i upravljanje osobljem KORP“, izdanje 3
Za razmjenu podataka koristi se format , temeljen na XML-u. Format je poslovno orijentiran – opisi u njemu odgovaraju poslovnim entitetima (dokumenti i elementi referentnih lista) prikazanim u programima 1C, na primjer: akt o izvršenim radovima, primitak blagajničkog naloga, partner, asortiman itd.
Razmjena podataka između aplikacije 1C i vanjske aplikacije može se odvijati:
- kroz posebnu datotečnu mapu
- kroz FTP mapu
- kroz web uslugu, implementiranu na strani aplikacije 1C. Datoteka s podacima se predaje kao parametar web metoda
- kroz elektroničku poštu
U slučaju razmjene putem web usluge, vanjska aplikacija će pokrenuti sesiju razmjene podataka pozivom odgovarajućih web metoda aplikacije 1C. U ostalim slučajevima, inicijator sesije razmjene bit će aplikacija 1C (stavljanjem datoteke s podacima u odgovarajuću mapu ili slanjem datoteke s podacima na postavljenu email adresu).
Također, na strani 1C se postavlja koja će se frekvencija sinhronizacije odvijati (za opcije s razmjenom datoteka kroz mapu i elektroničkom poštom):
- prema rasporedu (s određenom frekvencijom)
- ručno; korisnik će ručno pokretati sinhronizaciju svaki put kada to zatreba
Potvrda poruka
Aplikacije 1C vode evidenciju poslanih i primljenih poruka sinhronizacije i očekuju isto od vanjskih aplikacija. To omogućava korištenje mehanizma numeracije poruka, opisanog prethodno u odjeljku „Mehanizam razmjene podataka“.
Aplikacije 1C tijekom sinkronizacije šalju samo informacije o promjenama koje su se dogodile s poslovnim entitetima od posljednje sinkronizacije (kako bi se smanjila količina prenesenih informacija). Prilikom prve sinkronizacije aplikacija 1C će izvesti sve poslovne entitete (npr. stavke iz imenika robe) u formatu EnterpriseData u XML datoteku (budući da su svi oni "novi" za vanjsku aplikaciju). Vanjska aplikacija mora obraditi informacije iz pristigle XML datoteke od 1C i prilikom sljedeće sesije sinkronizacije smjestiti u datoteku koja se šalje u 1C, u posebnom dijelu XML-a, informaciju da je poruka od 1C pod određenim brojem uspješno prihvaćena. Potvrda je aplikaciji 1C signal da su svi poslovni entiteti uspješno obrađeni od strane vanjske aplikacije i da informacije o njima više ne treba slati. Osim potvrde, XML datoteka od vanjske aplikacije također može sadržavati podatke za sinkronizaciju s strane aplikacije (npr. dokumente o prodaji proizvoda i usluga).
Nakon primanja potvrde, aplikacija 1C označava sve promjene poslane u prethodnoj poruci kao uspješno sinkronizirane. Samo nesinkronizirane promjene u poslovnim entitetima (stvaranje novih entiteta, promjena i brisanje postojećih) bit će poslane u vanjsku aplikaciju pri sljedećoj sesiji sinkronizacije.

Pri prijenosu podataka iz vanjske aplikacije u aplikaciju 1C slika se mijenja u suprotnu. Vanjska aplikacija mora ispuniti sekciju potvrde u XML datoteci na odgovarajući način i smjestiti poslovne podatke za sinkronizaciju s vlastite strane u formatu EnterpriseData.

P pojednostavljeni prijenos podataka bez potvrde
Za slučajeve jednostavne integracije, kada je dovoljno samo prenositi informacije iz vanjske aplikacije u aplikaciju 1C i povratni prijenos podataka iz aplikacije 1C u vanjsku aplikaciju nije potreban (npr. integracija online trgovine koja prenosi informacije o prodaji u "1C:Računovodstvo"), postoji pojednostavljeni način rada putem web servisa (bez potvrde), koji ne zahtijeva postavke sa strane aplikacije 1C.
Specijalizirana integracijska rješenja
Postoji tipično rješenje „1C: Konverzija podataka“, koje koristi mehanizme platforme za konverziju i razmjenu podataka između tipičnih konfiguracija 1C, ali se može koristiti i za integraciju s vanjskim aplikacijama.
Integracija s bankovnim rješenjima
Standard , razvijen od strane stručnjaka 1C prije više od 10 godina, zapravo je postao standard u industriji u Rusiji. Sljedeći korak u tom smjeru je tehnologija , koja omogućava slanje platnih dokumenata u banku i primanje izvoda iz banke izravno iz programa sustava „1C: Poduzeće“ dodirom jednog gumba u programu „1C“; pritom nije potrebna instalacija i pokretanje dodatnih programa na klijentskom računalu.
Postoji također .
Ostalo
Zaslužuju spomenuti , standard razmjene komercijalnih informacija (razvijen u suradnji s Microsoftom, Intela, Price.ru i drugim tvrtkama), .
Izvor: habr.com
