Metoder til integration med 1C

Hvad er de vigtigste krav til forretningsapplikationer? Nogle af de vigtigste opgaver er følgende:

  • Nem at ændre/tilpasse applikationslogik til skiftende forretningsopgaver.
  • Nem integration med andre applikationer.

Hvordan den første opgave løses i 1C blev kort beskrevet i afsnittet "Tilpasning og support". denne artikel; Vi vender tilbage til dette interessante emne i en fremtidig artikel. I dag vil vi tale om den anden opgave, integration.

Integrationsopgaver

Integrationsopgaver kan være forskellige. For at løse nogle problemer er en simpel interaktiv dataudveksling tilstrækkelig - for eksempel at overføre en liste over medarbejdere til en bank for at udstede lønplastikkort. Ved mere komplekse opgaver kan fuldautomatisk dataudveksling være nødvendig, eventuelt med reference til et eksternt systems forretningslogik. Der er opgaver, der er specialiserede i naturen, såsom integration med eksternt udstyr (for eksempel detailudstyr, mobile scannere osv.) eller med ældre eller højt specialiserede systemer (for eksempel med RFID-taggenkendelsessystemer). Det er ekstremt vigtigt at vælge den mest passende integrationsmekanisme til hver opgave.

Integrationsmuligheder med 1C

Der er forskellige tilgange til implementering af integration med 1C-applikationer; hvilken man skal vælge afhænger af opgavens krav.

  1. Implementeringsbaseret integrationsmekanismerleveret af platformen, sin egen specialiserede API på 1C-applikationssiden (for eksempel et sæt web- eller HTTP-tjenester, der kalder tredjepartsapplikationer til at udveksle data med 1C-applikationen). Fordelen ved denne tilgang er API'ens modstand mod ændringer i implementeringen på 1C-applikationssiden. Det særlige ved fremgangsmåden er, at det er nødvendigt at ændre kildekoden for en standard 1C-løsning, hvilket potentielt kan kræve en indsats, når kildekoder flettes, når man flytter til en ny version af konfigurationen. I dette tilfælde kan en ny progressiv funktionalitet komme til undsætning - konfigurationsudvidelser. Udvidelser er i bund og grund en plugin-mekanisme, der giver dig mulighed for at oprette tilføjelser til applikationsløsninger uden at ændre selve applikationsløsningerne. Flytning af integrations-API'en ind i konfigurationsudvidelsen vil give dig mulighed for at undgå vanskeligheder ved sammenlægning af konfigurationer, når du flytter til en ny version af en standardløsning.
  2. Brug af platformsintegrationsmekanismer, der giver ekstern adgang til applikationsobjektmodellen og ikke kræver ændring af applikationen eller oprettelse af en udvidelse. Fordelen ved denne tilgang er, at der ikke er behov for at ændre 1C-applikationen. Minus - hvis 1C-applikationen er blevet forbedret, kan der være behov for forbedringer i den integrerede applikation. Et eksempel på denne tilgang er brugen af ​​OData-protokollen til integration, implementeret på siden af ​​1C:Enterprise-platformen (mere om det nedenfor).
  3. Brug af færdige applikationsprotokoller implementeret i standard 1C-løsninger. Mange standardløsninger fra 1C og partnere implementerer deres egne applikationsprotokoller, fokuseret på specifikke opgaver, baseret på integrationsmekanismerne leveret af platformen. Når du bruger disse mekanismer, er der ingen grund til at skrive kode på 1C-applikationssiden, fordi Vi bruger applikationsløsningens standardfunktioner. På 1C-applikationssiden skal vi kun foretage visse indstillinger.

Integrationsmekanismer i 1C:Enterprise platformen

Importer/eksporter filer

Antag, at vi står over for opgaven med tovejs dataudveksling mellem en 1C-applikation og en vilkårlig applikation. For eksempel skal vi synkronisere en liste over produkter (nomenklaturbibliotek) mellem 1C-applikationen og en vilkårlig applikation.

Metoder til integration med 1C
For at løse dette problem kan du skrive en udvidelse, der downloader Nomenclature-biblioteket til en fil i et bestemt format (tekst, XML, JSON, ...) og kan læse dette format.

Platformen implementerer en mekanisme til serialisering af applikationsobjekter i XML både direkte gennem WriteXML/ReadXML globale kontekstmetoder og ved hjælp af XDTO (XML Data Transfer Objects) hjælpeobjektet.

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

Denne funktion returnerer en XML-repræsentation af objektet:

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

Sådan vil eksport af nomenklaturmappen til XML ved hjælp af XDTO se ud:

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

Ved blot at ændre koden eksporterer vi mappen til JSON. Produkterne vil blive skrevet til et array; For variation, her er den engelske version af 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

Så er der kun tilbage at overføre dataene til slutforbrugeren. 1C:Enterprise-platformen understøtter de vigtigste internetprotokoller HTTP, FTP, POP3, SMTP, IMAP, inklusive deres sikre versioner. Du kan også bruge HTTP og/eller webtjenester til at overføre data.

HTTP og webtjenester

Metoder til integration med 1C

1C-applikationer kan implementere deres egne HTTP og webtjenester, samt kalde HTTP og webtjenester implementeret af tredjepartsapplikationer.

REST interface og OData protokol

Fra version 8.3.5 kan 1C:Enterprise platformen automatisk oprette en REST-grænseflade for hele applikationsløsningen. Ethvert konfigurationsobjekt (mappe, dokument, informationsregister osv.) kan stilles til rådighed for modtagelse og ændring af data via REST-grænsefladen. Platformen bruger protokollen som en adgangsprotokol OData version 3.0. Udgivelse af OData-tjenester udføres fra Konfigurator-menuen "Administration -> Udgivelse på en webserver", afkrydsningsfeltet "Udgiv standard OData-grænseflade" skal være markeret. Atom/XML- og JSON-formater understøttes. Efter at applikationsløsningen er publiceret på webserveren, kan tredjepartssystemer få adgang til den via REST-grænsefladen ved hjælp af HTTP-anmodninger. For at arbejde med 1C-applikationen via OData-protokollen er programmering på 1C-siden ikke nødvendig.

Altså en URL som http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура vil returnere os indholdet af nomenklaturkataloget i XML-format - en samling af indgangselementer (meddelelsestitlen er udeladt for kortheds 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 at tilføje strengen "?$format=application/json" til URL'en får vi indholdet af Nomenclature-kataloget i JSON-format (URL på formularen 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 til integration med 1C
I nogle tilfælde kan dataudveksling via eksterne datakilder kan være den bedste løsning. Eksterne datakilder er et 1C-applikationskonfigurationsobjekt, der giver dig mulighed for at interagere med enhver ODBC-kompatibel database, både til læsning og skrivning. Eksterne datakilder er tilgængelige på både Windows og Linux.

Dataudvekslingsmekanisme

Dataudvekslingsmekanisme er beregnet både til at skabe geografisk distribuerede systemer baseret på 1C:Enterprise, og til at organisere dataudveksling med andre informationssystemer, der ikke er baseret på 1C:Enterprise.

Denne mekanisme bruges aktivt i 1C-implementeringer, og rækken af ​​opgaver, der løses med dens hjælp, er meget bred. Dette omfatter dataudveksling mellem 1C-applikationer installeret i organisationens filialer og udveksling mellem 1C-applikationen og netbutikkens hjemmeside, og dataudveksling mellem 1C-serverapplikationen og mobilklienten (oprettet ved hjælp af 1C:Enterprise-mobilplatformen) og meget mere.

Et af nøglebegreberne i dataudvekslingsmekanismen er udvekslingsplanen. En udvekslingsplan er en særlig type objekt for 1C-applikationsplatformen, som især bestemmer sammensætningen af ​​de data, der skal deltage i udvekslingen (hvilke mapper, dokumenter, registre osv.). Udvekslingsplanen indeholder også information om udvekslingsdeltagere (såkaldte udvekslingsknudepunkter).
Den anden komponent i dataudvekslingsmekanismen er ændringsregistreringsmekanismen. Denne mekanisme overvåger automatisk systemet for ændringer i data, der skal overføres til slutbrugere som en del af udvekslingsplanen. Ved at bruge denne mekanisme sporer platformen ændringer, der er sket siden sidste synkronisering, og giver dig mulighed for at minimere mængden af ​​data, der overføres under den næste synkroniseringssession.

Dataudveksling sker ved hjælp af XML-meddelelser af en bestemt struktur. Meddelelsen indeholder data, der er ændret siden sidste synkronisering med noden og nogle serviceoplysninger. Meddelelsesstrukturen understøtter meddelelsesnummerering og giver dig mulighed for at modtage bekræftelse fra modtagernoden på, at meddelelser er blevet modtaget. En sådan bekræftelse er indeholdt i hver meddelelse, der kommer fra den modtagende knude, i form af nummeret på den sidst modtagne meddelelse. Nummereringsmeddelelser gør det muligt for platformen at forstå, hvilke data der allerede er blevet transmitteret med succes til den modtagende node, og at undgå gentransmission ved kun at transmittere data, der er ændret siden den afsendende node modtog den sidste besked med en kvittering for de data modtaget af den modtagende node. Denne driftsordning sikrer garanteret levering selv med upålidelige transmissionskanaler og meddelelsestab.

Eksterne komponenter

I en række tilfælde skal man ved løsning af integrationsproblemer forholde sig til specifikke krav, for eksempel interaktionsprotokoller, dataformater, som ikke er forudsat i 1C:Enterprise platformen. Til sådan en række opgaver giver platformen ekstern komponentteknologi, som giver dig mulighed for at oprette dynamiske plug-in-moduler, der udvider funktionaliteten af ​​1C:Enterprise.

Et typisk eksempel på en opgave med lignende krav ville være integrationen af ​​en 1C-applikationsløsning med detailudstyr, lige fra vægte til kasseapparater og stregkodescannere. Eksterne komponenter kan tilsluttes både på 1C:Enterprise-serversiden og på klientsiden (inklusive, men ikke begrænset til, webklienten, samt næste version af den mobile platform 1C:Enterprise). Teknologien af ​​eksterne komponenter giver en ret enkel og forståelig software (C++) grænseflade til interaktion af komponenter med 1C:Enterprise platformen, som skal implementeres af udvikleren.

De muligheder, der åbner sig ved brug af eksterne komponenter, er meget brede. Du kan implementere interaktion ved hjælp af en specifik dataudvekslingsprotokol med eksterne enheder og systemer, indbygge specifikke algoritmer til behandling af data og dataformater osv.

Forældede integrationsmekanismer

Platformen giver integrationsmekanismer, der ikke anbefales til brug i nye løsninger; de efterlades af hensyn til bagudkompatibilitet, og også hvis den anden part ikke kan arbejde med mere moderne protokoller. En af dem arbejder med filer i DBF-format (understøttet i det indbyggede sprog ved hjælp af XBase-objektet).

En anden ældre integrationsmekanisme er brugen af ​​COM-teknologi (kun tilgængelig på Windows-platformen). 1C:Enterprise-platformen giver to integrationsmetoder til Windows ved hjælp af COM-teknologi: Automationsserver og Ekstern forbindelse. De er meget ens, men en af ​​de grundlæggende forskelle er, at i tilfælde af Automation-serveren lanceres en fuldgyldig 1C:Enterprise 8-klientapplikation, og i tilfælde af en ekstern forbindelse, en relativt lille in-proces COM serveren startes. Det vil sige, at hvis du arbejder gennem automatiseringsserveren, kan du bruge funktionaliteten i klientapplikationen og udføre handlinger, der ligner brugerens interaktive handlinger. Når du bruger en ekstern forbindelse, kan du kun bruge forretningslogikfunktioner, og de kan udføres både på klientsiden af ​​forbindelsen, hvor der oprettes en igangværende COM-server, og du kan kalde forretningslogik på 1C:Enterprise-serveren side.

COM-teknologi kan også bruges til at få adgang til eksterne systemer fra applikationskode på 1C:Enterprise-platformen. I dette tilfælde fungerer 1C-applikationen som en COM-klient. Men det skal huskes, at disse mekanismer kun vil fungere, hvis 1C-serveren fungerer i et Windows-miljø.

Integrationsmekanismer implementeret i standardkonfigurationer

Enterprise Data Format

Metoder til integration med 1C
I en række 1C-konfigurationer (liste nedenfor), baseret på platformens dataudvekslingsmekanisme beskrevet ovenfor, implementeres en færdiglavet mekanisme til udveksling af data med eksterne applikationer, som ikke kræver ændring af kildekoden for konfigurationerne (forberedelse til data). udveksling sker i indstillingerne for applikationsløsninger):

  • "1C:ERP Enterprise Management 2.0"
  • "Kompleks automatisering 2"
  • "Enterprise Accounting", udgave 3.0
  • "Regnskab for en CORP-virksomhed", udgave 3.0
  • "Detail", udgave 2.0
  • "Basic Trade Management", udgave 11
  • Trade Management, udgave 11
  • "Løn og personaleledelse CORP", udgave 3

Formatet der bruges til dataudveksling er Enterprise Data, baseret på XML. Formatet er forretningsorienteret - datastrukturerne, der er beskrevet i det, svarer til forretningsenheder (dokumenter og katalogelementer), der præsenteres i 1C-programmer, for eksempel: fuldførelseshandling, kassekvitteringsordre, modpart, vare osv.

Dataudveksling mellem 1C-applikationen og en tredjepartsapplikation kan forekomme:

  • via en dedikeret filmappe
  • via FTP-mappe
  • gennem en webservice installeret på 1C-applikationssiden. Datafilen videregives som en parameter til webmetoder
  • via e-mail

I tilfælde af udveksling via en webservice vil en tredjepartsapplikation starte en dataudvekslingssession ved at kalde de tilsvarende webmetoder for 1C-applikationen. I andre tilfælde vil initiativtageren til udvekslingssessionen være 1C-applikationen (ved at placere datafilen i den relevante mappe eller sende datafilen til den konfigurerede e-mailadresse).
Også på 1C-siden kan du konfigurere, hvor ofte synkronisering vil forekomme (for muligheder med filudveksling via en mappe og e-mail):

  • i henhold til tidsplan (med en specificeret frekvens)
  • manuelt; brugeren bliver nødt til manuelt at starte synkronisering, hver gang han har brug for det

Anerkendende beskeder

1C-applikationer gemmer optegnelser over sendte og modtagne synkroniseringsbeskeder og forventer det samme fra tredjepartsapplikationer. Dette giver dig mulighed for at bruge meddelelsesnummereringsmekanismen beskrevet ovenfor i afsnittet "Dataudvekslingsmekanisme".

Under synkronisering transmitterer 1C-applikationer kun information om ændringer, der er sket med forretningsenheder siden sidste synkronisering (for at minimere mængden af ​​overført information). Under den første synkronisering vil 1C-applikationen uploade alle forretningsenheder (f.eks. elementer i emneopslagsbogen) i EnterpriseData-formatet til en XML-fil (da de alle er "nye" for den eksterne applikation). Tredjepartsapplikationen skal behandle oplysningerne fra XML-filen modtaget fra 1C og under den næste synkroniseringssession placere i filen sendt til 1C, i en særlig XML-sektion, information om, at meddelelsen fra 1C med et bestemt nummer var vellykket modtaget. Kvitteringsmeddelelsen er et signal til 1C-applikationen om, at alle forretningsenheder er blevet behandlet med succes af den eksterne applikation, og at der ikke længere er behov for at overføre oplysninger om dem. Ud over kvitteringen kan en XML-fil fra en tredjepartsapplikation også indeholde data til synkronisering af applikationen (f.eks. dokumenter til salg af varer og tjenester).

Efter at have modtaget kvitteringsmeddelelsen, markerer 1C-applikationen alle ændringer, der er transmitteret i den forrige meddelelse, som synkroniseret. Kun usynkroniserede ændringer til forretningsenheder (oprettelse af nye enheder, ændring og sletning af eksisterende) vil blive sendt til den eksterne applikation under den næste synkroniseringssession.

Metoder til integration med 1C
Når du overfører data fra en ekstern applikation til 1C-applikationen, er billedet omvendt. Den eksterne applikation skal udfylde kvitteringsdelen af ​​XML-filen i overensstemmelse hermed og placere forretningsdataene til synkronisering fra sin side i EnterpriseData-formatet.

Metoder til integration med 1C

Forenklet dataudveksling uden håndtryk

I tilfælde af simpel integration, hvor det er nok kun at overføre oplysninger fra en tredjepartsapplikation til 1C-applikationen, og omvendt overførsel af data fra 1C-applikationen til en tredjepartsapplikation er ikke påkrævet (f.eks. integration af en online butik, der overfører salgsoplysninger til 1C: Regnskab), er der en forenklet mulighed for at arbejde gennem en webservice (uden kvittering), som ikke kræver indstillinger på siden af ​​1C-applikationen.

Skræddersyede integrationsløsninger

Der findes en standardløsning "1C: Data Conversion", som bruger platformsmekanismer til konvertering og udveksling af data mellem standard 1C-konfigurationer, men som også kan bruges til integration med tredjepartsapplikationer.

Integration med bankløsninger

Standard "Kundebank", udviklet af 1C-specialister for mere end 10 år siden, er faktisk blevet en industristandard i Rusland. Det næste skridt i denne retning er teknologi DirectBank, som giver dig mulighed for at sende betalingsdokumenter til banken og modtage kontoudtog fra banken direkte fra programmerne i 1C:Enterprise-systemet ved at trykke på én knap i 1C-programmet; det kræver ikke installation og kørsel af yderligere programmer på klientcomputeren.

Der er også standard for dataudveksling i lønprojekter.

Andre

Værd at nævne udvekslingsprotokol mellem 1C:Enterprise-systemet og hjemmesiden, kommerciel informationsudvekslingsstandard CommerceML (udviklet i fællesskab med Microsoft, Intel, Price.ru og andre virksomheder), standard for dataudveksling til indhentning af transaktioner.

Kilde: www.habr.com

Tilføj en kommentar