Wat zijn de belangrijkste vereisten voor bedrijfsapplicaties? Enkele van de belangrijkste taken zijn:
- De mogelijkheid om de logica van de applicatie eenvoudig aan te passen aan veranderende zakelijke behoeften.
- Eenvoudige integratie met andere applicaties.
Hoe de eerste taak in 1C wordt aangepakt, is kort beschreven in de sectie 'Aanpassing en ondersteuning'. ; we zullen terugkomen op dit interessante onderwerp in een van de volgende artikelen. Vandaag bespreken we de tweede taak, integratie.
Integratietaken
Integratietaken kunnen variëren. Voor sommige taken is een eenvoudige interactieve gegevensuitwisseling voldoende, bijvoorbeeld voor het versturen van een lijst van medewerkers naar de bank voor de uitgifte van salariskaarten. Voor complexere taken kan een volledig geautomatiseerde gegevensuitwisseling nodig zijn, mogelijk met oproepen naar de businesslogica van een extern systeem. Er zijn ook specialistische taken, zoals integratie met externe apparatuur (bijvoorbeeld handelsapparatuur, mobiele scanners, enz.) of met verouderde of gespecialiseerd systemen (bijvoorbeeld systemen voor het herkennen van RFID-tags). Het is uiterst belangrijk om voor elke taak het meest geschikte integratiemechanisme te kiezen.
Integratiemogelijkheden met 1C
Er zijn verschillende benaderingen voor de implementatie van integratie met 1C-applicaties; welke te kiezen hangt af van de vereisten van de taak.
- Implementatie op basis van , geleverd door het platform, of een eigen gespecialiseerd API aan de kant van de 1C-applicatie (bijvoorbeeld een reeks web- of HTTP-services die externe applicaties aanroepen voor gegevensuitwisseling met de 1C-applicatie). Een voordeel van deze benadering is de veerkracht van de API tegen veranderingen in de implementatie aan de kant van de 1C-applicatie. Een kenmerk van de benadering is dat de broncode van de standaardoplossing van 1C moet worden aangepast, wat potentieel inspanningen kan vergen bij het samenvoegen van de broncodes bij de overgang naar een nieuwe versie van de configuratie. In dit geval kan nieuwe, geavanceerde functionaliteit een uitkomst bieden — . Uitbreidingen zijn in wezen een pluginmechanisme dat het mogelijk maakt om aanvullende applicaties te creëren zonder de applicaties zelf aan te passen. Het verplaatsen van de integratie-API naar de configuratie-uitbreiding voorkomt complicaties bij het combineren van configuraties bij de overgang naar een nieuwe versie van de standaardoplossing.
- Het gebruik van integratiemechanismen van het platform die externe toegang bieden tot het objectmodel van de applicatie en geen aanpassing van de applicatie of het maken van een uitbreiding vereisen. Het voordeel van deze aanpak is dat de 1C-applicatie niet hoeft te worden gewijzigd. Het nadeel is dat als de 1C-applicatie al is aangepast, er mogelijk verdere aanpassingen in de geïntegreerde applicatie nodig zijn. Een voorbeeld van deze aanpak is het gebruik van het OData-protocol voor integratie, geïmplementeerd aan de kant van het 1C:Enterprise-platform (meer hierover hieronder).
- Gebruik maken van kant-en-klare applicatieprotocollen, geïmplementeerd in standaardoplossingen van 1C. Veel standaardoplossingen van 1C en partners implementeren hun eigen applicatieprotocollen op basis van de integratiemechanismen die door het platform worden geboden, gericht op specifieke taken. Bij het gebruik van deze mechanismen is er geen code vereist aan de kant van de 1C-applicatie, omdat we gebruikmaken van de standaardmogelijkheden van de applicatie. Aan de kant van de 1C-applicatie hoeven we slechts bepaalde instellingen uit te voeren.
Integratiemechanismen in het 1C:Enterprise-platform
Importeren/exporteren van bestanden
Stel dat we voor de taak staan van bidirectionele gegevensuitwisseling tussen de 1C-applicatie en een willekeurige applicatie. Bijvoorbeeld, we moeten de productlijst (referentie Catalogus) tussen de 1C-applicatie en een willekeurige applicatie synchroniseren.

Om deze taak op te lossen kan een uitbreiding worden geschreven die de referentie Catalogus in een bestand van een bepaald formaat (tekst, XML, JSON, …) exporteert en dit formaat kan inlezen.
Het platform heeft een mechanisme voor het serialiseren van applicatieobjecten in XML, zowel direct via de methoden van de globale context WriteXML/ReadXML, als met behulp van het hulpprogramma XDTO (XML Data Transfer Objects).
Elk object in het 1C:Enterprise-systeem kan worden.serialized naar een XML-weergave en omgekeerd.
Deze functie retourneert de weergave van het object in XML-vorm:
Functie Object_In_XML(Object)
RecordXML = Nieuwe RecordXML();
RecordXML.StelStringIn();
SchrijfXML(RecordXML, Object);
Retourneer RecordXML.Sluit();
EindeFunctie
Zo zal de export van de catalogus Nomenclatuur in XML eruitzien met behulp van XDTO:
&OpServer
Procedure ExporteerXMLOpServer()
NieuweSerializerXDTO = SerializerXDTO;
NieuweRecordXML = Nieuwe RecordXML();
NieuweRecordXML.OpenBestand("C:DataNomenclatuur.xml", "UTF-8");
NieuweRecordXML.SchrijfAankondigingXML();
NieuweRecordXML.SchrijfStartElement("CatalogusNomenclatuur");
Selectie = Catalogi.Nomenclatuur.Selecteren();
Terwijl Selectie.Volgende() Doe
ObjectNomenclatuur = Selectie.KrijgObject();
NieuweSerializerXDTO.SchrijfXML(NieuweRecordXML, ObjectNomenclatuur, ToewijzingXML.Type.Expliciet);
EindeLoop;
NieuweRecordXML.SchrijfEindeElement();
NieuweRecordXML.Sluit();
EindeProcedure
Met een eenvoudige aanpassing van de code exporteren we de catalogus naar JSON. De producten worden in een array geschreven; voor de variatie geven we de Engelstalige versie van de syntaxis:
&OpServer
Procedure ExporteerJSONOpServer()
NieuweXDTOSerializer = XDTOSerializer;
NieuweJSONSchrijver = Nieuwe JSONSchrijver();
NieuweJSONSchrijver.OpenBestand("C:DataNomenclatuur.json", "UTF-8");
NieuweJSONSchrijver.SchrijfStartObject();
NieuweJSONSchrijver.SchrijfEigenschapsnaam("CatalogusNomenclatuur");
NieuweJSONSchrijver.SchrijfStartArray();
Selectie = Catalogs.Nomenclatuur.Selecteren();
Terwijl Selectie.Volgende() Doe
NomenclatuurObject = Selectie.KrijgObject();
NieuweJSONSchrijver.SchrijfStartObject();
NieuweJSONSchrijver.SchrijfEigenschapsnaam("Nomenclatuur");
NieuweXDTOSerializer.SchrijfJSON(NieuweJSONSchrijver, NomenclatuurObject, ToewijzingXML.Type.Impliciet);
NieuweJSONSchrijver.SchrijfEindeObject();
EindeDoe;
NieuweJSONSchrijver.SchrijfEindeArray();
NieuweJSONSchrijver.SchrijfEindeObject();
NieuweJSONSchrijver.Sluit();
EindeProcedure
Vervolgens hoeft u alleen nog de gegevens aan de eindgebruiker over te dragen. Het platform 1C:Enterprise ondersteunt de belangrijkste internetprotocollen HTTP, FTP, POP3, SMTP en IMAP, inclusief hun veilige versies. Daarnaast kunnen gegevens ook worden verzonden via HTTP en/of webservices.
HTTP- en webservices

1C-applicaties kunnen hun eigen HTTP- en webservices implementeren, evenals HTTP- en webservices aanroepen die door externe applicaties zijn geïmplementeerd.
REST-interface en het OData-protocol
Vanaf versie 8.3.5 kan het 1C:Enterprise-platform automatisch voor de gehele applicatieoplossing. Elk configuratieobject (catalogus, document, register van gegevens, enz.) kan beschikbaar worden gesteld voor het ophalen en wijzigen van gegevens via de REST-interface. Het platform gebruikt het protocol versie 3.0. Publicatie van OData-diensten gebeurt vanuit het menu Configurator 'Beheer -> Publicatie op webserver', het selectievakje 'Publiceer standaard OData-interface' moet zijn aangevinkt. De formaten atom/XML en JSON worden ondersteund. Nadat de applicatieoplossing op de webserver is gepubliceerd, kunnen externe systemen deze benaderen via de REST-interface met behulp van HTTP-verzoeken. Voor het werken met de 1C-applicatie via het OData-protocol is programmeren aan de 1C-kant niet nodig.
Dus, een URL zoals http:////odata/standard.odata/Catalog_Artikel zal ons de inhoud van de catalogus Artikel in XML-formaat teruggeven — een verzameling entry-elementen (de berichtkop is ter vergadering weggelaten):
http://server/Config/odata/standard.odata/Catalog_Artikel(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')
2016-06-06T16:42:17
35d1f6e4-289b-11e6-8ba4-e03f49b16074
AAAAAgAAAAA=
false
000000001
Airconditioner Mitsubishi
Vermogen 2,5 kW, werkmodi: verwarming/koeling
http://server/Config/odata/standard.odata/Catalog_Artikel(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
Door de string «?$format=application/json» aan de URL toe te voegen, krijgen we de inhoud van de catalogus Artikel in JSON-formaat (URL zoals http:////odata/standard.odata/Catalog_Artikel?$format=application/json ):
{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Artikel",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Airconditioner Mitsubishi",
"Beschrijving": "Vermogen 2,5 kW, werkmodi: verwarming/koeling"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Airconditioner Daikin",
"Beschrijving": "Vermogen 3 kW, werkmodi: verwarming/koeling"
}, …
Externe gegevensbronnen

In sommige gevallen vindt gegevensuitwisseling plaats via kan de optimale oplossing blijken te zijn. Externe gegevensbronnen zijn een toepassingsobject van de 1C-configuratie dat interactie mogelijk maakt met elke ODBC-compatibele database, zowel voor lezen als schrijven. Externe gegevensbronnen zijn beschikbaar op zowel Windows als Linux.
Gegevensuitwisselingsmechanisme
is bedoeld voor zowel het creëren van territoriaal verspreide systemen op basis van 1C:Enterprise als voor het organiseren van gegevensuitwisseling met andere informatiesystemen die niet gebaseerd zijn op 1C:Enterprise.
Dit mechanisme wordt actief gebruikt bij implementaties van 1C, en het bereik van taken dat ermee kan worden opgelost, is zeer breed. Dit omvat gegevensuitwisseling tussen 1C-applicaties die zijn geïnstalleerd in de vestigingen van de organisatie, gegevensuitwisseling tussen een 1C-applicatie en de website van een webwinkel, en gegevensuitwisseling tussen een serverapplicatie van 1C en een mobiele client (gemaakt met de mobiele platform van 1C:Enterprise), en nog veel meer.
Een van de belangrijkste begrippen in het gegevensuitwisselingsmechanisme is het uitwisselingsplan. Het uitwisselingsplan is een speciaal type toepassingsobject in het 1C-platform dat onder andere de samenstelling van de gegevens definieert die aan de uitwisseling zullen deelnemen (welke specifieke catalogi, documenten, registers, enz.). Het uitwisselingsplan bevat ook informatie over de deelnemers aan de uitwisseling (de zogenaamde uitwisselingsknopen).
De tweede component van het gegevensuitwisselingsmechanisme is het mechanisme voor wijzigingsregistratie. Dit mechanisme volgt automatisch de gegevenswijzigingen in het systeem die aan eindgebruikers moeten worden doorgegeven in het kader van het uitwisselingsplan. Dankzij dit mechanisme volgt het platform de wijzigingen die sinds de laatste synchronisatie zijn opgetreden en maakt het mogelijk de hoeveelheid gegevens die in het kader van de volgende synchronisatiesessie wordt verzonden, te minimaliseren.
Gegevensuitwisseling vindt plaats via XML-berichten van een bepaalde structuur. Een bericht bevat gegevens die sinds de laatste synchronisatie met de node zijn gewijzigd, evenals enige service-informatie. De structuur van de berichten ondersteunt de nummering van berichten en maakt het mogelijk om bevestigingen van de ontvangende node te ontvangen over de ontvangst van berichten. Deze bevestigen zijn opgenomen in elk bericht dat van de ontvangende node komt, in de vorm van het nummer van het laatst ontvangen bericht. De nummering van de berichten stelt het platform in staat te begrijpen welke gegevens al met succes zijn overgedragen aan de ontvangende node, en voorkomt dubbele overdracht door alleen de gegevens door te geven die zijn gewijzigd sinds het laatste bericht dat door de verzendende node werd ontvangen met een ontvangstbewijs van de ontvangen gegevens door de ontvangende node. Dit werkingsschema garandeert de levering zelfs bij onbetrouwbare overdrachtskanalen en verlies van berichten.
Externe componenten
In sommige gevallen, bij het oplossen van integratietaken, kan men worden geconfronteerd met specifieke vereisten, zoals interactieprotocollen en gegevensformaten waarmee de 1C:Enterprise-plattform geen rekening houdt. Voor dit soort taken biedt het platform , die het mogelijk maakt om dynamisch te koppelen modules te creëren die de functionaliteit van 1C:Enterprise uitbreiden.
Een typisch voorbeeld van een taak met dergelijke vereisten kan de integratie van de applicatieoplossing 1C met handelsapparatuur zijn, beginnend bij weegschalen en eindigend bij kassa's en barcode-scanners. Externe componenten kunnen worden aangesloten zowel aan de serverzijde van 1C:Enterprise als aan de clientzijde (inclusief de webclient en 1C:Enterprise). De technologie van externe componenten voorziet in een vrij eenvoudige en begrijpelijke programmeerinterface (C++) voor de interactie van de component met het 1C:Enterprise platform, die door de ontwikkelaar moet worden geïmplementeerd.
De mogelijkheden die zich aandienen bij het gebruik van externe componenten zijn zeer breed. Men kan interactie realiseren via een specifiek datacommunicatieprotocol met externe apparaten en systemen, specifieke algoritmen voor gegevensverwerking en gegevensformaten integreren, enz.
Verouderde integratiemechanismen
De platform biedt integratiemechanismen die niet aanbevolen worden voor gebruik in nieuwe oplossingen; ze zijn behouden uit het oogpunt van achterwaartse compatibiliteit en voor het geval een andere partij niet met modernere protocollen kan werken. Een daarvan is het werken met bestanden in DBF-formaat (ondersteund in de ingebouwde taal via het XBase-object).
Een ander verouderd integratiemechanisme is het gebruik van COM-technologie (alleen beschikbaar op het Windows-platform). Het 1C:Enterprise-platform biedt twee manieren van integratie voor Windows die de COM-technologie gebruiken: de Automation-server en de Externe verbinding. Ze zijn zeer vergelijkbaar, maar een van de belangrijkste verschillen is dat bij de Automation-server een volwaardig clienttoepassing 1C:Enterprise 8 wordt gestart, terwijl bij de externe verbinding een relatief kleine intraprocess COM-server start. Dat wil zeggen, bij gebruik via de Automation-server kan de functionaliteit van de clienttoepassing worden benut, en kunnen acties worden uitgevoerd die lijken op de interactieve acties van de gebruiker. Bij het gebruik van de externe verbinding kunnen alleen de functies van de businesslogica worden gebruikt, die uitgevoerd kunnen worden aan de clientzijde van de verbinding, waar de intraprocess-com-server wordt gemaakt, of er kan een oproep naar de businesslogica aan de serverzijde van 1C:Enterprise worden gedaan.
De COM-technologie kan ook worden gebruikt om toegang te krijgen tot externe systemen vanuit de applicatiecode op het 1C:Enterprise-platform. In dit geval fungeert de 1C-applicatie als COM-client. Het moet echter worden opgemerkt dat deze mechanismen alleen functioneren als de 1C-server werkt in een Windows-omgeving.
Integratiemechanismen geïmplementeerd in standaardconfiguraties
EnterpriseData-formaat

In een aantal 1C-configuraties (lijst hieronder) is er een kant-en-klaar mechanisme voor gegevensuitwisseling met externe applicaties op basis van het hierboven beschreven plattformmechanisme voor gegevensuitwisseling, dat geen wijziging van de broncode van de configuraties vereist (de voorbereiding voor gegevensuitwisseling gebeurt in de instellingen van de toepassingsoplossingen):
- «1C:ERP Bedrijfsbeheer 2.0»
- «Geïntegreerde automatisering 2»
- «Bedrijfsboekhouding», editie 3.0
- «Bedrijfsboekhouding KORP», editie 3.0
- «Detailhandel», editie 2.0
- «Basis voor Handelsbeheer», editie 11
- «Handelsbeheer», editie 11
- «Loonadministratie en Personeelsbeheer CORP», editie 3
Voor gegevensuitwisseling wordt het formaat gebruikt , gebaseerd op XML. Het formaat is bedrijfgericht – de daarin beschreven gegevensstructuren komen overeen met bedrijfseenheden (documenten en elementen van naslagwerken) die in de 1C-programma's worden gepresenteerd, zoals: uitgevoerd werk, inkomende kasbon, tegenpartij, assortiment, enz.
Gegevensuitwisseling tussen de 1C-applicatie en een externe applicatie kan plaatsvinden:
- via een specifieke bestandsdirectory
- via de FTP-directory
- via een webservice die aan de zijde van de 1C-applicatie is geïmplementeerd. Het bestand met gegevens wordt als parameter van de webmethoden doorgegeven
- via e-mail
In het geval van gegevensuitwisseling via de webservice zal de externe applicatie de gegevensuitwisselingssessie initiëren door de relevante webmethoden van de 1C-applicatie aan te roepen. In andere gevallen zal de 1C-applicatie de initiator van de uitwisselingssessie zijn (door het bestand met gegevens in de respectieve directory te plaatsen of het bestand met gegevens naar het geconfigureerde e-mailadres te verzenden).
Ook aan de zijde van 1C wordt ingesteld hoe vaak de synchronisatie zal plaatsvinden (voor de opties met bestandsuitwisseling via directory en e-mail):
- op schema (met een bepaalde frequentie)
- manueel; de gebruiker moet handmatig de synchronisatie starten telkens wanneer dat nodig is
Bevestiging van berichten
De 1C-applicaties houden een register bij van verzonden en ontvangen synchronisatieberichten en verwachten hetzelfde van externe applicaties. Dit maakt gebruik van het hierboven beschreven berichtnummeringsmechanisme, dat is beschreven in het gedeelte 'Mechanisme voor gegevensuitwisseling'.
1C-applicaties verzenden tijdens de synchronisatie alleen informatie over de wijzigingen die sinds de laatste synchronisatie hebben plaatsgevonden met de bedrijfsentiteiten (om de hoeveelheid verzonden informatie te minimaliseren). Bij de eerste synchronisatie zal de 1C-applicatie alle bedrijfsentiteiten (bijvoorbeeld elementen van de nomenclaturesoftware) exporteren in het EnterpriseData-formaat naar een XML-bestand (aangezien ze allemaal 'nieuw' zijn voor de externe applicatie). De externe applicatie moet de informatie uit het door 1C ontvangen XML-bestand verwerken en bij de volgende synchronisatiesessie in het bestand dat naar 1C wordt verzonden, in een speciale sectie van de XML, de informatie plaatsen dat het bericht van 1C met een bepaald nummer met succes is ontvangen. Het ontvangstbewijs is voor de 1C-applicatie een signaal dat alle bedrijfsentiteiten met succes door de externe applicatie zijn verwerkt en dat er geen informatie meer over moet worden verzonden. Naast het ontvangstbewijs kan het XML-bestand van de externe applicatie ook gegevens voor synchronisatie vanuit de applicatie bevatten (bijvoorbeeld documenten voor de verkoop van goederen en diensten).
Na ontvangst van het ontvangstbewijs markeert de 1C-applicatie alle wijzigingen die in het vorige bericht zijn verzonden als succesvol gesynchroniseerd. Alleen niet-synchroniseerde wijzigingen in de bedrijfsentiteiten (het creëren van nieuwe entiteiten, het wijzigen en verwijderen van bestaande) zullen bij de volgende synchronisatiesessie naar de externe applicatie worden verzonden.

Bij het verzenden van gegevens van de externe applicatie naar de 1C-applicatie verandert het plaatje. De externe applicatie moet de sectie-ontvangstbewijs in het XML-bestand dienovereenkomstig invullen en bedrijfsgegevens voor synchronisatie met zijn kant in het EnterpriseData-formaat invoegen.

Versimpelde gegevensuitwisseling zonder ontvangstbewijs
Voor gevallen van eenvoudige integratie, waarbij het voldoende is om alleen informatie van de externe applicatie naar de 1C-applicatie te verzenden en een terugzending van gegevens van de 1C-applicatie naar de externe applicatie niet vereist is (bijvoorbeeld integratie van een online winkel die verkoopinformatie naar '1C: Boekhouding' verzendt), is er een vereenvoudigde werkmethode via een webservice (zonder ontvangstbewijs) die geen instellingen aan de kant van de 1C-applicatie vereist.
Gespecialiseerde integratieoplossingen
Er is een standaardoplossing "1C: Gegevensconversie" die de mechanismen van het platform gebruikt voor de conversie en uitwisseling van gegevens tussen standaardconfiguraties van 1C, maar die ook kan worden gebruikt voor integratie met externe applicaties.
Integratie met bankoplossingen
De standaard , ontwikkeld door specialisten van 1C meer dan 10 jaar geleden, is feitelijk de standaard in de sector in Rusland geworden. De volgende stap in deze richting is de technologie , die het mogelijk maakt om betalingsdocumenten naar de bank te verzenden en bankafschriften rechtstreeks vanuit het programma "1C: Bedrijf" te ontvangen met een simpele druk op de knop in het programma "1C"; hiervoor is geen extra software nodig op de cliëntcomputer.
Er is ook een .
Overige
Vermeldenswaard zijn , de standaard voor uitwisseling van commerciële informatie (ontwikkeld in samenwerking met Microsoft, Intel, Price.ru en andere bedrijven), .
Bron: habr.com
