Metoder for integrasjon med 1C

Hva er de viktigste kravene til forretningsapplikasjoner? Noen av de viktigste oppgavene er følgende:

  • Enkelt å endre/tilpasse applikasjonslogikk til endrede forretningsoppgaver.
  • Enkel integrasjon med andre applikasjoner.

Hvordan den første oppgaven løses i 1C ble kort beskrevet i avsnittet "Tilpasning og støtte". denne artikkelen; Vi kommer tilbake til dette interessante emnet i en fremtidig artikkel. I dag skal vi snakke om den andre oppgaven, integrering.

Integrasjonsoppgaver

Integreringsoppgaver kan være forskjellige. For å løse noen problemer er en enkel interaktiv datautveksling tilstrekkelig - for eksempel å overføre en liste over ansatte til en bank for utstedelse av lønnsplastkort. For mer komplekse oppgaver kan helautomatisk datautveksling være nødvendig, eventuelt med henvisning til forretningslogikken til et eksternt system. Det er oppgaver som er spesialiserte i naturen, for eksempel integrasjon med eksternt utstyr (for eksempel detaljhandelsutstyr, mobile skannere, etc.) eller med eldre eller høyt spesialiserte systemer (for eksempel med RFID-taggjenkjenningssystemer). Det er ekstremt viktig å velge den mest passende integreringsmekanismen for hver oppgave.

Integreringsmuligheter med 1C

Det er forskjellige tilnærminger til å implementere integrasjon med 1C-applikasjoner; hvilken du skal velge avhenger av kravene til oppgaven.

  1. Implementeringsbasert integrasjonsmekanismerlevert av plattformen, sin egen spesialiserte API på 1C-applikasjonssiden (for eksempel et sett med web- eller HTTP-tjenester som vil kalle tredjepartsapplikasjoner for å utveksle data med 1C-applikasjonen). Fordelen med denne tilnærmingen er API-ets motstand mot endringer i implementering på 1C-applikasjonssiden. Det særegne ved tilnærmingen er at det er nødvendig å endre kildekoden til en standard 1C-løsning, noe som potensielt kan kreve innsats når man slår sammen kildekoder når man flytter til en ny versjon av konfigurasjonen. I dette tilfellet kan en ny progressiv funksjonalitet komme til unnsetning - konfigurasjonsutvidelser. Utvidelser er i hovedsak en plugin-mekanisme som lar deg lage tillegg til applikasjonsløsninger uten å endre selve applikasjonsløsningene. Flytting av integrasjons-API-en til konfigurasjonsutvidelsen vil tillate deg å unngå vanskeligheter når du slår sammen konfigurasjoner når du flytter til en ny versjon av en standardløsning.
  2. Bruke plattformintegrasjonsmekanismer som gir ekstern tilgang til applikasjonsobjektmodellen og som ikke krever modifikasjon av applikasjonen eller opprettelse av en utvidelse. Fordelen med denne tilnærmingen er at det ikke er behov for å endre 1C-applikasjonen. Minus - hvis 1C-applikasjonen har blitt forbedret, kan det være nødvendig med forbedringer i den integrerte applikasjonen. Et eksempel på denne tilnærmingen er bruken av OData-protokollen for integrasjon, implementert på siden av 1C:Enterprise-plattformen (mer om det nedenfor).
  3. Bruk av ferdige applikasjonsprotokoller implementert i standard 1C-løsninger. Mange standardløsninger fra 1C og partnere implementerer sine egne applikasjonsprotokoller, fokusert på spesifikke oppgaver, basert på integrasjonsmekanismene fra plattformen. Når du bruker disse mekanismene, er det ikke nødvendig å skrive kode på 1C-applikasjonssiden, fordi Vi bruker standardfunksjonene til applikasjonsløsningen. På 1C-applikasjonssiden trenger vi bare å gjøre visse innstillinger.

Integreringsmekanismer i 1C:Enterprise-plattformen

Importer/eksporter filer

Anta at vi står overfor oppgaven med toveis datautveksling mellom en 1C-applikasjon og en vilkårlig applikasjon. For eksempel må vi synkronisere en liste over produkter (nomenklaturkatalog) mellom 1C-applikasjonen og en vilkårlig applikasjon.

Metoder for integrasjon med 1C
For å løse dette problemet kan du skrive en utvidelse som laster ned Nomenclature-katalogen til en fil med et bestemt format (tekst, XML, JSON, ...) og kan lese dette formatet.

Plattformen implementerer en mekanisme for å serialisere applikasjonsobjekter i XML både direkte, gjennom WriteXML/ReadXML globale kontekstmetoder, og ved å bruke XDTO (XML Data Transfer Objects) hjelpeobjektet.

Ethvert objekt i 1C:Enterprise-systemet kan serialiseres til en XML-representasjon og omvendt.

Denne funksjonen vil returnere en XML-representasjon av objektet:

Функция Объект_В_XML(Объект)
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    ЗаписатьXML(ЗаписьXML, Объект);
    Возврат ЗаписьXML.Закрыть();
КонецФункции

Slik vil eksport av nomenklaturkatalogen til XML ved hjelp av XDTO se ut:

&НаСервере
Процедура ЭкспортXMLНаСервере()	
	НовыйСериализаторXDTO  = СериализаторXDTO;
	НоваяЗаписьXML = Новый ЗаписьXML();
	НоваяЗаписьXML.ОткрытьФайл("C:DataНоменклатура.xml", "UTF-8");
	
	НоваяЗаписьXML.ЗаписатьОбъявлениеXML();
	НоваяЗаписьXML.ЗаписатьНачалоЭлемента("СправочникНоменклатура");
	
	Выборка = Справочники.Номенклатура.Выбрать();
	
	Пока Выборка.Следующий() Цикл 
		ОбъектНоменклатура = Выборка.ПолучитьОбъект();
		НовыйСериализаторXDTO.ЗаписатьXML(НоваяЗаписьXML, ОбъектНоменклатура, НазначениеТипаXML.Явное);
	КонецЦикла;
	
	НоваяЗаписьXML.ЗаписатьКонецЭлемента();
	НоваяЗаписьXML.Закрыть();	
КонецПроцедуры

Ved ganske enkelt å endre koden eksporterer vi katalogen til JSON. Produktene vil bli skrevet til en matrise; For variasjon, her er den engelske versjonen av syntaksen:

&AtServer
Procedure ExportJSONOnServer()
	NewXDTOSerializer  = XDTOSerializer;
	NewJSONWriter = New JSONWriter();
	NewJSONWriter.OpenFile("C:DataНоменклатура.json", "UTF-8");
	
	NewJSONWriter.WriteStartObject();
	NewJSONWriter.WritePropertyName("СправочникНоменклатура");
	NewJSONWriter.WriteStartArray();
	
	Selection = Catalogs.Номенклатура.Select();	
	
	While Selection.Next() Do 
		NomenclatureObject = Selection.GetObject();
		
		NewJSONWriter.WriteStartObject();
		
		NewJSONWriter.WritePropertyName("Номенклатура");
		NewXDTOSerializer.WriteJSON(NewJSONWriter, NomenclatureObject, XMLTypeAssignment.Implicit);
		
		NewJSONWriter.WriteEndObject();
	EndDo;
	
	NewJSONWriter.WriteEndArray();
	NewJSONWriter.WriteEndObject();
	NewJSONWriter.Close();	
EndProcedure

Da gjenstår det bare å overføre dataene til sluttforbrukeren. 1C:Enterprise-plattformen støtter de viktigste Internett-protokollene HTTP, FTP, POP3, SMTP, IMAP, inkludert deres sikre versjoner. Du kan også bruke HTTP og/eller webtjenester til å overføre data.

HTTP og webtjenester

Metoder for integrasjon med 1C

1C-applikasjoner kan implementere sine egne HTTP og webtjenester, samt kalle HTTP og webtjenester implementert av tredjepartsapplikasjoner.

REST-grensesnitt og OData-protokoll

Fra og med versjon 8.3.5 kan 1C:Enterprise-plattformen automatisk lage et REST-grensesnitt for hele applikasjonsløsningen. Ethvert konfigurasjonsobjekt (katalog, dokument, informasjonsregister, etc.) kan gjøres tilgjengelig for mottak og endring av data via REST-grensesnittet. Plattformen bruker protokollen som en tilgangsprotokoll OData versjon 3.0. Publisering av OData-tjenester utføres fra konfiguratormenyen "Administrasjon -> Publisering på en webserver", avkrysningsboksen "Publiser standard OData-grensesnitt" må være merket. Atom/XML- og JSON-formater støttes. Etter at applikasjonsløsningen er publisert på webserveren, kan tredjepartssystemer få tilgang til den gjennom REST-grensesnittet ved hjelp av HTTP-forespørsler. For å jobbe med 1C-applikasjonen via OData-protokollen er programmering på 1C-siden ikke nødvendig.

Så, en URL som http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура vil returnere oss innholdet i nomenklaturkatalogen i XML-format - en samling av oppføringselementer (meldingstittelen er utelatt for korthets skyld):

<entry>
	<id>http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')</id>
	<category term="StandardODATA.Catalog_Номенклатура" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
	<title type="text"/>
	<updated>2016-06-06T16:42:17</updated>
	<author/>
	<summary/>
	<link rel="edit" href="Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')" title="edit-link"/>
	<content type="application/xml">
		<m:properties  >
			<d:Ref_Key>35d1f6e4-289b-11e6-8ba4-e03f49b16074</d:Ref_Key>
			<d:DataVersion>AAAAAgAAAAA=</d:DataVersion>
			<d:DeletionMark>false</d:DeletionMark>
			<d:Code>000000001</d:Code>
			<d:Description>Кондиционер Mitsubishi</d:Description>
			<d:Описание>Мощность 2,5 кВт, режимы работы: тепло/холод</d:Описание>
		</m:properties>
	</content>
</entry>
<entry>
	<id>http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')</id>
	<category term="StandardODATA.Catalog_Номенклатура" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
...

Ved å legge til strengen "?$format=application/json" til URL-en får vi innholdet i nomenklaturkatalogen i JSON-format (URL til skjemaet 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": "Кондиционер Mitsubishi",
"Описание": "Мощность 2,5 кВт, режимы работы: тепло/холод"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Кондиционер Daikin",
"Описание": "Мощность 3 кВт, режимы работы: тепло/холод"
}, …

Eksterne datakilder

Metoder for integrasjon med 1C
I noen tilfeller kan datautveksling via eksterne datakilder kan være den beste løsningen. Eksterne datakilder er et 1C-applikasjonskonfigurasjonsobjekt som lar deg samhandle med enhver ODBC-kompatibel database, både for lesing og skriving. Eksterne datakilder er tilgjengelige på både Windows og Linux.

Datautvekslingsmekanisme

Datautvekslingsmekanisme er ment både for å lage geografisk distribuerte systemer basert på 1C:Enterprise, og for å organisere datautveksling med andre informasjonssystemer som ikke er basert på 1C:Enterprise.

Denne mekanismen brukes aktivt i 1C-implementeringer, og utvalget av oppgaver som løses med hjelpen er veldig bredt. Dette inkluderer datautveksling mellom 1C-applikasjoner installert i organisasjonens filialer, og utveksling mellom 1C-applikasjonen og nettbutikkens nettsted, og datautveksling mellom 1C-serverapplikasjonen og mobilklienten (opprettet ved hjelp av 1C:Enterprise mobilplattformen), og mye mer.

Et av nøkkelbegrepene i datautvekslingsmekanismen er utvekslingsplanen. En utvekslingsplan er en spesiell type objekt for 1C-applikasjonsplattformen, som spesielt bestemmer sammensetningen av dataene som skal delta i utvekslingen (hvilke kataloger, dokumenter, registre osv.). Utvekslingsplanen inneholder også informasjon om utvekslingsdeltakere (såkalte utvekslingsnoder).
Den andre komponenten i datautvekslingsmekanismen er endringsregistreringsmekanismen. Denne mekanismen overvåker automatisk systemet for endringer i data som må overføres til sluttbrukere som en del av utvekslingsplanen. Ved å bruke denne mekanismen sporer plattformen endringer som har skjedd siden siste synkronisering og lar deg minimere mengden data som overføres under neste synkroniseringsøkt.

Datautveksling skjer ved hjelp av XML-meldinger med en bestemt struktur. Meldingen inneholder data som har endret seg siden siste synkronisering med noden og noe tjenesteinformasjon. Meldingsstrukturen støtter meldingsnummerering og lar deg motta bekreftelse fra mottakernoden på at meldinger er mottatt. Slik bekreftelse er inneholdt i hver melding som kommer fra mottaksnoden, i form av nummeret til den sist mottatte meldingen. Meldingsnummerering lar plattformen forstå hvilke data som allerede er vellykket overført til mottaksnoden, og unngå retransmisjon ved å overføre kun data som har endret seg siden avsendernoden mottok den siste meldingen med en kvittering for dataene mottatt av mottaksnoden. Denne driftsordningen sikrer garantert levering selv med upålitelige overføringskanaler og meldingstap.

Eksterne komponenter

I en rekke tilfeller må man ved løsning av integrasjonsproblemer forholde seg til spesifikke krav, for eksempel interaksjonsprotokoller, dataformater, som ikke er tilrettelagt i 1C:Enterprise-plattformen. For en slik rekke oppgaver gir plattformen ekstern komponentteknologi, som lar deg lage dynamiske plug-in-moduler som utvider funksjonaliteten til 1C:Enterprise.

Et typisk eksempel på en oppgave med lignende krav er integrering av en 1C-applikasjonsløsning med detaljhandelsutstyr, alt fra vekter til kasseapparater og strekkodeskannere. Eksterne komponenter kan kobles til både på 1C:Enterprise-serversiden og på klientsiden (inkludert, men ikke begrenset til, webklienten, samt neste versjon av mobilplattformen 1C:Enterprise). Teknologien til eksterne komponenter gir et ganske enkelt og forståelig programvare (C++) grensesnitt for samspillet mellom komponenter og 1C:Enterprise-plattformen, som må implementeres av utvikleren.

Mulighetene som åpner seg ved bruk av eksterne komponenter er svært brede. Du kan implementere interaksjon ved hjelp av en spesifikk datautvekslingsprotokoll med eksterne enheter og systemer, bygge inn spesifikke algoritmer for behandling av data og dataformater, etc.

Utdaterte integrasjonsmekanismer

Plattformen gir integrasjonsmekanismer som ikke anbefales brukt i nye løsninger; de er igjen på grunn av bakoverkompatibilitet, og også i tilfelle den andre parten ikke kan jobbe med mer moderne protokoller. En av dem jobber med DBF-formatfiler (støttet i det innebygde språket ved å bruke XBase-objektet).

En annen eldre integrasjonsmekanisme er bruken av COM-teknologi (kun tilgjengelig på Windows-plattformen). 1C:Enterprise-plattformen tilbyr to integreringsmetoder for Windows ved bruk av COM-teknologi: automatiseringsserver og ekstern tilkobling. De er veldig like, men en av de grunnleggende forskjellene er at når det gjelder automatiseringsserveren, lanseres en fullverdig 1C:Enterprise 8-klientapplikasjon, og når det gjelder en ekstern tilkobling, en relativt liten prosess-COM serveren er lansert. Det vil si at hvis du jobber gjennom automatiseringsserveren, kan du bruke funksjonaliteten til klientapplikasjonen og utføre handlinger som ligner på de interaktive handlingene til brukeren. Når du bruker en ekstern tilkobling, kan du bare bruke forretningslogikkfunksjoner, og de kan utføres både på klientsiden av tilkoblingen, hvor det opprettes en COM-server i prosess, og du kan kalle forretningslogikk på 1C:Enterprise-serveren side.

COM-teknologi kan også brukes til å få tilgang til eksterne systemer fra applikasjonskode på 1C:Enterprise-plattformen. I dette tilfellet fungerer 1C-applikasjonen som en COM-klient. Men det bør huskes at disse mekanismene bare vil fungere hvis 1C-serveren opererer i et Windows-miljø.

Integrasjonsmekanismer implementert i standardkonfigurasjoner

Enterprise Data Format

Metoder for integrasjon med 1C
I en rekke 1C-konfigurasjoner (liste nedenfor), basert på plattformens datautvekslingsmekanisme beskrevet ovenfor, implementeres en ferdig mekanisme for utveksling av data med eksterne applikasjoner, som ikke krever endring av kildekoden til konfigurasjonene (forberedelse til data). utveksling gjøres i innstillingene for applikasjonsløsninger):

  • "1C:ERP Enterprise Management 2.0"
  • "Kompleks automatisering 2"
  • "Enterprise Accounting", utgave 3.0
  • "Regnskap for en CORP-bedrift", utgave 3.0
  • "Detaljhandel", utgave 2.0
  • "Grunnleggende handelsledelse", utgave 11
  • Trade Management, utgave 11
  • "Lønn og personalledelse CORP", utgave 3

Formatet som brukes for datautveksling er EnterpriseData, basert på XML. Formatet er forretningsorientert - datastrukturene beskrevet i det tilsvarer forretningsenheter (dokumenter og katalogelementer) presentert i 1C-programmer, for eksempel: fullføringshandling, bestilling av kontantmottak, motpart, gjenstand, etc.

Datautveksling mellom 1C-applikasjonen og en tredjepartsapplikasjon kan forekomme:

  • via en dedikert filkatalog
  • via FTP-katalogen
  • gjennom en nettjeneste distribuert på 1C-applikasjonssiden. Datafilen sendes som en parameter til webmetoder
  • via e-post

Ved utveksling via en webtjeneste vil en tredjepartsapplikasjon starte en datautvekslingsøkt ved å ringe de tilsvarende webmetodene til 1C-applikasjonen. I andre tilfeller vil initiativtakeren til utvekslingsøkten være 1C-applikasjonen (ved å plassere datafilen i riktig katalog eller sende datafilen til den konfigurerte e-postadressen).
Også på 1C-siden kan du konfigurere hvor ofte synkronisering skal skje (for alternativer med filutveksling via en katalog og e-post):

  • i henhold til tidsplan (med en spesifisert frekvens)
  • manuelt; brukeren må starte synkronisering manuelt hver gang han trenger det

Godkjenne meldinger

1C-applikasjoner holder oversikt over sendte og mottatte synkroniseringsmeldinger og forventer det samme fra tredjepartsapplikasjoner. Dette lar deg bruke meldingsnummereringsmekanismen beskrevet ovenfor i delen "Datautvekslingsmekanisme".

Under synkronisering overfører 1C-applikasjoner kun informasjon om endringer som har skjedd med forretningsenheter siden siste synkronisering (for å minimere mengden informasjon som overføres). Under den første synkroniseringen vil 1C-applikasjonen laste opp alle forretningsenheter (for eksempel elementer i varereferanseboken) i EnterpriseData-formatet til en XML-fil (siden de alle er "nye" for den eksterne applikasjonen). Tredjepartsapplikasjonen må behandle informasjonen fra XML-filen mottatt fra 1C og, i løpet av neste synkroniseringsøkt, legge inn i filen sendt til 1C, i en spesiell XML-seksjon, informasjon om at meldingen fra 1C med et bestemt nummer ble vellykket mottatt. Kvitteringsmeldingen er et signal til 1C-applikasjonen om at alle forretningsenheter har blitt behandlet av den eksterne applikasjonen og at det ikke er behov for å overføre informasjon om dem lenger. I tillegg til kvitteringen kan en XML-fil fra en tredjepartsapplikasjon også inneholde data for synkronisering av applikasjonen (for eksempel dokumenter for salg av varer og tjenester).

Etter å ha mottatt kvitteringsmeldingen, merker 1C-applikasjonen alle endringer som ble overført i forrige melding som vellykket synkronisert. Kun usynkroniserte endringer til forretningsenheter (opprette nye enheter, endre og slette eksisterende) vil bli sendt til den eksterne applikasjonen under neste synkroniseringsøkt.

Metoder for integrasjon med 1C
Ved overføring av data fra en ekstern applikasjon til 1C-applikasjonen blir bildet reversert. Den eksterne applikasjonen må fylle ut kvitteringsdelen av XML-filen tilsvarende og plassere forretningsdataene for synkronisering fra sin side i EnterpriseData-formatet.

Metoder for integrasjon med 1C

Forenklet datautveksling uten håndtrykk

For tilfeller av enkel integrasjon, når det er nok å bare overføre informasjon fra en tredjepartsapplikasjon til 1C-applikasjonen og omvendt overføring av data fra 1C-applikasjonen til en tredjepartsapplikasjon er ikke nødvendig (for eksempel integrasjon av en online butikk som overfører salgsinformasjon til 1C: Regnskap), er det et forenklet alternativ for å jobbe gjennom en webtjeneste (uten bekreftelse), som ikke krever innstillinger på siden av 1C-applikasjonen.

Tilpassede integrasjonsløsninger

Det finnes en standardløsning "1C: Data Conversion", som bruker plattformmekanismer for å konvertere og utveksle data mellom standard 1C-konfigurasjoner, men som også kan brukes for integrasjon med tredjepartsapplikasjoner.

Integrasjon med bankløsninger

Standard "Kundebank", utviklet av 1C-spesialister for mer enn 10 år siden, har faktisk blitt en industristandard i Russland. Det neste steget i denne retningen er teknologi DirectBank, som lar deg sende betalingsdokumenter til banken og motta kontoutskrifter fra banken direkte fra programmene til 1C:Enterprise-systemet ved å trykke på en knapp i 1C-programmet; det krever ikke installasjon og kjøring av tilleggsprogrammer på klientdatamaskinen.

Det er også standard for datautveksling i lønnsprosjekter.

Andre

Verdt å nevne utvekslingsprotokoll mellom 1C:Enterprise-systemet og nettsiden, kommersiell informasjonsutvekslingsstandard CommerceML (utviklet sammen med Microsoft, Intel, Price.ru og andre selskaper), standard for datautveksling for innhenting av transaksjoner.

Kilde: www.habr.com

Legg til en kommentar