Hvilke vigtigste krav stilles der til forretningsapplikationer? Nogle af de mest centrale er følgende opgaver:
- Faciliteten til at ændre/tilpasse applikationens logik til skiftende forretningsopgaver.
- Faciliteten til integration med andre applikationer.
Hvordan den første opgave løses i 1C blev kort beskrevet i afsnittet "Tilpasning og support" ; vi vender tilbage til dette interessante emne i en af kommende artikler. I dag handler det om den anden opgave, nemlig integration.
Integrationsopgaver
Integrationsopgaver kan være forskellige. For nogle opgaver er det tilstrækkeligt med en simpel interaktiv dataudveksling – for eksempel til at sende en liste over ansatte til banken for udstedelse af betalingskort. For mere komplekse opgaver kan fuldautomatiseret dataudveksling være nødvendig, muligvis med adgang til forretningslogikken i et eksternt system. Der er også specialiserede opgaver, såsom integration med eksternt udstyr (for eksempel salgsudstyr, mobile scannere osv.) eller med arvet eller specialiserede systemer (for eksempel RFID-læsesystemer). Det er ekstremt vigtigt at vælge den mest passende integrationsmekanisme for hver opgave.
Integrationsmuligheder med 1C
Der findes forskellige tilgange til implementering af integration med 1C-applikationer; hvilken man skal vælge afhænger af opgavens krav.
- Implementering baseret på , som tilbydes af platformen, eller en egen specialiseret API på siden af 1C-applikationen (for eksempel et sæt Web- eller HTTP-tjenester, der vil anmode eksterne applikationer om at udveksle data med 1C-applikationen). Fordelen ved denne tilgang er API'ets modstandskraft over for ændringer i implementeringen på siden af 1C-applikationen. En særegenhed ved tilgangen er, at det kræver ændringer i kildekoden til 1C-løsningen, hvilket potentielt kan kræve ressourcer ved sammenlægning af kildekoder ved overgang til en ny version af konfigurationen. I dette tilfælde kan ny, progressiv funktionalitet komme til hjælp — . Udvidelser er i princippet et plugin-mekanisme, der gør det muligt at skabe tilføjelser til applikationsløsninger uden at ændre selve applikationsløsningerne. At flytte integrations-API'et til konfigurationsudvidelsen vil undgå kompleksiteter ved at fusionere konfigurationer ved overgangen til en ny version af standardløsningen.
- Brug af integrationsmekanismerne i platformen, som giver ekstern adgang til applikationsobjektmodellen og ikke kræver ændringer i applikationen eller oprettelse af en udvidelse. Fordelen ved denne tilgang er, at der ikke er behov for at ændre 1C-applikationen. Ulempen er, at hvis 1C-applikationen allerede er ændret, kan det blive nødvendigt med yderligere ændringer i den integrerede applikation. Et eksempel på denne tilgang er brugen af OData-protokollen til integration, som er implementeret på siden af 1C:Enterprise-platformen (mere om dette nedenfor).
- Brug af færdige applikationsprotokoller implementeret i standardløsningerne fra 1C. Mange standardløsninger fra 1C og partnere implementerer deres egne applikationsprotokoller baseret på integrationsmekanismerne, der tilbydes af platformen, og som er rettet mod specifikke opgaver. Ved brug af disse mekanismer er der ikke behov for at skrive kode på 1C-applikationen, da vi drager fordel af de standardmæssige muligheder for applikationsløsningen. På siden af 1C-applikationen skal vi kun udføre visse indstillinger.
Integrationsmekanismer i 1C:Enterprise-platformen
Import/eksport af filer
Antag, at vi står over for opgaven med tovejs dataudveksling mellem 1C-applikationen og en hvilken som helst applikation. For eksempel har vi brug for at synkronisere produktslisten (referencenomenklatur) mellem 1C-applikationen og en vilkårlig applikation.

For at løse sådan en opgave kan man skrive en udvidelse, der eksporterer referencenomenklaturen til en fil i et bestemt format (tekst, XML, JSON, ...) og kan læse dette format.
Platformen har implementeret en mekanisme til serialisering af applikationsobjekter til XML, både direkte via metoderne i den globale kontekst RecordXML/ReadXML og ved hjælp af et hjælpeobjekt XDTO (XML Data Transfer Objects).
Enhver objekt i 1C:Enterprise-systemet kan serialiseres til XML-repræsentation og omvendt.
Denne funktion vil returnere objektets repræsentation i XML-form:
Funktionen Objekt_Ind_XML(Objekt)
RegistreringXML = Ny RegistreringXML();
RegistreringXML.SætStreng();
SkriveXML(RegistreringXML, Objekt);
Returner RegistreringXML.Lukke();
SlutFunktionen
sådan vil eksporten af kataloget Nomenklatur se ud i XML ved hjælp af XDTO:
&PåServeren
Procedure EksportXMLPåServeren()
NySerializerXDTO = SerializerXDTO;
NyRegistreringXML = Ny RegistreringXML();
NyRegistreringXML.ÅbnFil("C:DataNomenklatur.xml", "UTF-8");
NyRegistreringXML.SkriveXMLDeklaration();
NyRegistreringXML.SkriveStartElement("KatalogNomenklatur");
Valg = Kataloger.Nomenklatur.Vælg();
Mens Valg.Næste() Loop
ObjektNomenklatur = Valg.HentObjekt();
NySerializerXDTO.SkriveXML(NyRegistreringXML, ObjektNomenklatur, XMLTypeZonning.Udtrykkelig);
SlutLoop;
NyRegistreringXML.SkriveSlutElement();
NyRegistreringXML.Lukke();
SlutProcedure
Gennem en enkel omskrivning af koden eksporterer vi kataloget til JSON. Varerne vil blive skrevet til et array; for variation vil vi give den engelsksprogede variant af syntaksen:
&PåServeren
Procedure EksportJSONPåServeren()
NyXDTOSerializer = XDTOSerializer;
NyJSONWriter = Ny JSONWriter();
NyJSONWriter.ÅbnFil("C:DataNomenklatur.json", "UTF-8");
NyJSONWriter.SkrivStartObjekt();
NyJSONWriter.SkrivEgenskabsNavn("KatalogNomenklatur");
NyJSONWriter.SkrivStartArray();
Valg = Kataloger.Nomenklatur.Vælg();
Mens Valg.Næste() Gør
NomenklaturObjekt = Valg.HentObjekt();
NyJSONWriter.SkrivStartObjekt();
NyJSONWriter.SkrivEgenskabsNavn("Nomenklatur");
NyXDTOSerializer.SkrivJSON(NyJSONWriter, NomenklaturObjekt, XMLTypeZonning.Udtrykkelig);
NyJSONWriter.SkrivSlutObjekt();
SlutGør;
NyJSONWriter.SkrivSlutArray();
NyJSONWriter.SkrivSlutObjekt();
NyJSONWriter.Lukke();
SlutProcedure
Herefter skal vi blot overføre dataene til slutbrugeren. Platformen 1C:Enterprise understøtter de grundlæggende internetprotokoller HTTP, FTP, POP3, SMTP, IMAP, inklusive deres sikre versioner. Data kan også overføres via HTTP og/eller webtjenester.
HTTP- og webtjenester

1C-applikationer kan implementere deres egne HTTP- og webtjenester samt kalde HTTP- og webtjenester, der er implementeret af tredjepartsapplikationer.
REST interface og OData-protokol
Fra version 8.3.5 kan platformen 1C:Enterprise automatisk for hele applikationsløsningen. Enhver konfigurationsobjekt (katalog, dokument, informationsregister mv.) kan gøres tilgængeligt for at hente og ændre data via REST interface. Som adgangsprotokol bruger platformen protokollen version 3.0. Publicering af OData-tjenester udføres fra menuen Konfigurator "Administration -> Publicering på webserver", hvor afkrydsningsfeltet "Publicer standard OData-grænseflade" skal være markeret. Atom/XML og JSON formater understøttes. Når den applikative løsning er offentliggjort på webserveren, kan eksterne systemer få adgang til den via REST-grænsefladen ved hjælp af HTTP-anmodninger. Der kræves ikke programmering på 1C-siden for at arbejde med applikationen gennem OData-protokollen.
Således vil en URL af typen http:////odata/standard.odata/Catalog_Produkter returnere indholdet af kataloget Produkter i XML-format — en samling af entry-elementer (meddelelse hoverspringes for korthedens skyld):
http://server/Config/odata/standard.odata/Catalog_Produkter(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')
2016-06-06T16:42:17
35d1f6e4-289b-11e6-8ba4-e03f49b16074
AAAAAgAAAAA=
false
000000001
Airconditioner Mitsubishi
Effekt 2,5 kW, driftsformer: varme/kulde
http://server/Config/odata/standard.odata/Catalog_Produkter(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
Ved at tilføje strengen “?$format=application/json” til URL'en, får vi indholdet af kataloget Produkter i JSON-format (URL af typen http:////odata/standard.odata/Catalog_Produkter?$format=application/json ):
{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Produkter",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Airconditioner Mitsubishi",
"Beskrivelse": "Effekt 2,5 kW, driftsformer: varme/kulde"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Airconditioner Daikin",
"Beskrivelse": "Effekt 3 kW, driftsformer: varme/kulde"
}, …
Eksterne datakilder

I nogle tilfælde udføres dataudveksling via kan vise sig at være den optimale løsning. Eksterne datakilder er et applikationsobjekt i 1C-konfigurationen, der muliggør interaktion med enhver ODBC-kompatibel database, både til læsning og skrivning. Eksterne datakilder er tilgængelige både i Windows og på Linux.
Dataoverførselsmekanisme
er designet både til at oprette geografisk distribuerede systemer baseret på 1C:Enterprise og til at organisere dataudveksling med andre informationssystemer, der ikke er baseret på 1C:Enterprise.
Denne mekanisme anvendes aktivt i implementeringer af 1C, og spektret af opgaver, der løses med dens hjælp, er meget bredt. Det omfatter dataudveksling mellem 1C-applikationer, der er installeret på filialer af organisationen, dataudveksling mellem 1C-applikationen og internetsidebutikken samt dataudveksling mellem serverapplikationen 1C og den mobile klient (oprettet ved hjælp af den mobile platform 1C:Enterprise), og meget mere.
Et af nøglebegreberne i dataoverførselsmekanismen er udvekslingsplanen. Udvekslingsplanen er en særlig type applikationsobjekt på 1C-platformen, der definerer især, hvilke data der vil deltage i udvekslingen (hvilke specifikke registre, dokumenter, registre mv.). Udvekslingsplanen indeholder også oplysninger om deltagerne i udvekslingen (de såkaldte udvekslingsnoder).
Den anden komponent i dataoverførselsmekanismen er mekanismen til registrering af ændringer. Denne mekanisme overvåger automatisk ændringer i dataene i systemet, som skal overføres til slutbrugerne i henhold til udvekslingsplanen. Ved hjælp af denne mekanisme sporer platformen ændringer, der er sket siden den seneste synkronisering, og muliggør en reduktion af det samlede volumen af data, der overføres under den næste synkroniseringssession.
Data exchange occurs through XML messages of a specific structure. The message contains data that has changed since the last synchronization with the node and some service information. The message structure supports message numbering and allows for confirmations from the receiving node regarding the receipt of messages. Such confirmation is contained in every message received from the recipient node in the form of the number of the last accepted message. Message numbering allows the platform to understand which data has already been successfully transmitted to the recipient node, avoiding retransmission and passing only the data that has changed since the sender node received the last message with confirmation of data received by the recipient node. This operational scheme ensures guaranteed delivery even over unreliable transmission channels and in cases of message loss.
Eksterne komponenter
In some cases, when addressing integration tasks, one may encounter specific requirements, such as interaction protocols and data formats that are not supported in the 1C:Enterprise platform. For these types of tasks, the platform provides , which allows for the creation of dynamically loadable modules that expand the functionality of 1C:Enterprise.
A typical example of a task with such requirements could be the integration of the 1C application solution with commercial equipment, ranging from scales to cash registers and barcode scanners. External components can be connected both on the server side of 1C:Enterprise and on the client side (including, among others, web clients as well as 1C:Enterprise). The external component technology provides a fairly simple and understandable software (C++) interface for the interaction of the component with the 1C:Enterprise platform, which must be implemented by the developer.
The possibilities that open up when using external components are quite broad. It is possible to implement interaction based on a specific data exchange protocol with external devices and systems, embed specific data processing algorithms and data formats, etc.
Forældede integrationsmekanismer
Platformen tilbyder integrationsmekanismer, som ikke anbefales til brug i nye løsninger; de er bevaret af hensyn til bagudkompatibilitet og i tilfælde af, at den anden part ikke kan arbejde med mere moderne protokoller. En af dem er arbejde med filer i DBF-format (støttes i det indbyggede sprog via XBase-objektet).
En anden forældet integrationsmekanisme er brugen af COM-teknologi (kun tilgængelig på Windows-platformen). 1C:Enterprise-platformen tilbyder to integrationsmetoder til Windows, der bruger COM-teknologi: Automation-server og Eksternt forbindelser. De er meget ens, men en af de væsentlige forskelle er, at i tilfælde af Automation-serveren startes en fuld klientapplikation 1C:Enterprise 8, mens der i tilfælde af ekstern forbindelse startes en relativt lille intra-process COM-server. Det betyder, at hvis der arbejdes gennem Automation-serveren, kan funktionaliteten i klientapplikationen udnyttes, og der kan udføres handlinger, der ligner brugerens interaktive handlinger. Ved brug af ekstern forbindelse kan man kun anvende funktionerne i forretningslogikken, og disse kan udføres både på klientens side af forbindelsen, hvor den intra-process COM-server oprettes, og kald af forretningslogikken kan ske på 1C:Enterprise-serverens side.
COM-teknologi kan også anvendes til at kontakte eksterne systemer fra koden i 1C:Enterprise-applikationen. I dette tilfælde fungerer 1C-applikationen som en COM-klient. Men det skal bemærkes, at disse mekanismer kun vil fungere, hvis 1C-serveren arbejder i et Windows-miljø.
Integrationsmekanismer implementeret i standardkonfigurationer
EnterpriseData-format

I en række 1C-konfigurationer (listen nedenfor) er der implementeret en klar mekanisme til dataudveksling med eksterne applikationer baseret på den ovenfor beskrevne platformsmekanisme for dataudveksling, hvilket ikke kræver ændringer i konfigurationernes kildekode (forberedelsen til dataudveksling skal ske i indstillingerne for applikationsløsninger):
- «1C:ERP Virksomhedsledelse 2.0»
- «Kompleks automatisering 2»
- «Virksomhedsregnskab», udgave 3.0
- «Virksomhedsregnskab KORP», udgave 3.0
- «Detailhandel», udgave 2.0
- «Handelsstyring grundlæggende», udgave 11
- «Handelsstyring», udgave 11
- «Løn og personaleledelse KORP», udgave 3
Dataudveksling foregår i formatet , baseret på XML. Formatet er forretningsorienteret – de strukturer, der beskrives i det, svarer til forretningsenheder (dokumenter og elementer af registre), der præsenteres i 1C-programmerne, eksempelvis: udførte arbejders akt, kassekvittering, modpart, varekatalog osv.
Dataudveksling mellem 1C-applikationen og en tredjepartsapplikation kan ske:
- gennem en dedikeret filmappe
- gennem en FTP-mappe
- gennem en webservice, der er implementeret på 1C-applikationens side. Filen med data overføres som parameter til webmetoderne
- gennem e-mail
I tilfælde af udveksling via webservice vil den tredjepartsapplikation initiere dataudvekslingssessionen ved at kalde de relevante webmetoder i 1C-applikationen. I de øvrige tilfælde vil initiatoren af udvekslingssessionen være 1C-applikationen (ved at placere filen med data i den relevante mappe eller ved at sende filen med data til den konfigurerede e-mailadresse).
Der kan også indstilles, hvor ofte synchroniseringen vil finde sted på 1C-siden (for varianter med filudveksling via mappe og e-mail):
- efter tidsplan (med angivet frekvens)
- manuelt; brugeren skal manuelt starte synchroniseringen hver gang, det er nødvendigt
Kvittering af meddelelser
1C-applikationer holder styr på de sendte og modtagne synchroniseringsmeddelelser og forventer det samme fra tredjepartsapplikationer. Dette muliggør brugen af mekanismen til nummerering af meddelelser, der er beskrevet ovenfor i afsnittet «Mekanisme til dataudveksling».
1C-applikationer overfører kun information om ændringer, der er sket med forretningsenheder siden den sidste synkronisering under synkronisering (for at minimere mængden af overført information). Ved den første synkronisering vil 1C-applikationen eksportere alle forretningsenheder (for eksempel elementer fra kataloget) i formatet EnterpriseData til en XML-fil (da de alle er 'nye' for den eksterne applikation). Den eksterne applikation skal behandle informationen fra den modtagne XML-fil fra 1C og ved næste synkroniseringssession inkludere oplysninger i den fil, der sendes til 1C, i en særlig XML-sektion, der bekræfter, at beskeden fra 1C med et bestemt nummer er blevet modtaget. Bekræftelsesbesked er for 1C-applikationen et signal om, at alle forretningsenheder er blevet behandlet succesfuldt af den eksterne applikation, og at yderligere information om dem ikke er nødvendig. Udover bekræftelsen kan XML-filen fra den eksterne applikation også indeholde data til synkronisering fra applikationens side (for eksempel dokumenter vedrørende salg af varer og tjenester).
Efter modtagelsen af bekræftelsesbeskeden markerer 1C-applikationen alle ændringer, der blev sendt i den foregående besked, som succesfuldt synkroniserede. Kun usynkroniserede ændringer i forretningsenheder (oprettelse af nye enheder, ændring og sletning af eksisterende) vil blive sendt til den eksterne applikation ved næste synkronisering.

Når data overføres fra den eksterne applikation til 1C-applikationen, ændrer scenariet sig til det modsatte. Den eksterne applikation skal udfylde bekræftelsessektionen i XML-filen korrekt og inkludere forretningsdata til synkronisering fra sin side i formatet EnterpriseData.

Forenklet dataudveksling uden bekræftelse
For tilfælde med enkel integration, hvor det er tilstrækkeligt kun at overføre information fra den eksterne applikation til 1C-applikationen, og hvor der ikke kræves overførsel af data fra 1C-applikationen tilbage til den eksterne applikation (for eksempel integration af en online butik, der overfører oplysninger om salg til '1C:Regnskab'), findes der en forenklet arbejdsmåde gennem en webtjeneste (uden bekræftelse), der ikke kræver konfigurationer fra 1C-applikationens side.
Specialiserede integrationsløsninger
Der findes en standardløsning kaldet «1C: Data Conversion», som bruger platformens mekanismer til at konvertere og udveksle data mellem standardkonfigurationer i 1C, men den kan også bruges til integration med tredjepartsapplikationer.
Integration med bankløsninger
Standarten , udviklet af 1C-specialister for mere end 10 år siden, er blevet en industriestandard i Rusland. Næste skridt i denne retning er teknologien , som gør det muligt at sende betalingsdokumenter til banken og modtage kontoudtog fra banken direkte fra systemet «1C:Foretagender» med et enkelt klik i programmet «1C»; her kræves der ikke installation og opstart af yderligere programmer på klientcomputeren.
Der er også .
Andet
Det er værd at nævne , standarden for udveksling af erhvervsinformation (udviklet i samarbejde med Microsoft, Intel, Price.ru og andre virksomheder), .
Kilde: habr.com
