Metoder för integration med 1C

Vilka är de viktigaste kraven för affärsapplikationer? Några av de viktigaste uppgifterna är följande:

  • Enkelt att ändra/anpassa applikationslogik till ändrade affärsuppgifter.
  • Enkel integration med andra applikationer.

Hur den första uppgiften löses i 1C beskrevs kort i avsnittet "Anpassning och support". den här artikeln; Vi kommer att återkomma till detta intressanta ämne i en framtida artikel. Idag ska vi prata om den andra uppgiften, integration.

Integrationsuppgifter

Integrationsuppgifter kan vara olika. För att lösa vissa problem är ett enkelt interaktivt datautbyte tillräckligt - till exempel för att överföra en lista över anställda till en bank för att utfärda löneplastkort. För mer komplexa uppgifter kan helt automatiserat datautbyte vara nödvändigt, eventuellt med hänvisning till affärslogiken i ett externt system. Det finns uppgifter som är specialiserade i naturen, såsom integration med extern utrustning (till exempel detaljhandelsutrustning, mobila skannrar, etc.) eller med äldre eller högt specialiserade system (till exempel med RFID-taggigenkänningssystem). Det är extremt viktigt att välja den mest lämpliga integrationsmekanismen för varje uppgift.

Integrationsalternativ med 1C

Det finns olika tillvägagångssätt för att implementera integration med 1C-applikationer; vilken man ska välja beror på uppgiftens krav.

  1. Implementeringsbaserad integrationsmekanismertillhandahålls av plattformen, dess eget specialiserade API på 1C-applikationssidan (till exempel en uppsättning webb- eller HTTP-tjänster som kommer att anropa tredjepartsapplikationer för att utbyta data med 1C-applikationen). Fördelen med detta tillvägagångssätt är API:s motstånd mot förändringar i implementeringen på 1C-applikationssidan. Det speciella med tillvägagångssättet är att det är nödvändigt att ändra källkoden för en standard 1C-lösning, vilket potentiellt kan kräva ansträngning när man slår samman källkoder när man flyttar till en ny version av konfigurationen. I det här fallet kan en ny progressiv funktion komma till undsättning - konfigurationstillägg. Tillägg är i huvudsak en plugin-mekanism som låter dig skapa tillägg till applikationslösningar utan att ändra själva applikationslösningarna. Genom att flytta integrations-API:et till konfigurationstillägget kan du undvika svårigheter när du slår samman konfigurationer när du flyttar till en ny version av en standardlösning.
  2. Använda mekanismer för plattformsintegration som ger extern åtkomst till applikationsobjektmodellen och som inte kräver modifiering av applikationen eller skapande av en tillägg. Fördelen med detta tillvägagångssätt är att det inte finns något behov av att ändra 1C-applikationen. Minus - om 1C-applikationen har förbättrats kan förbättringar krävas i den integrerade applikationen. Ett exempel på detta tillvägagångssätt är användningen av OData-protokollet för integration, implementerat på sidan av 1C:Enterprise-plattformen (mer om det nedan).
  3. Användning av färdiga applikationsprotokoll implementerade i standard 1C-lösningar. Många standardlösningar från 1C och partners implementerar sina egna applikationsprotokoll, fokuserade på specifika uppgifter, baserat på integrationsmekanismerna som tillhandahålls av plattformen. När du använder dessa mekanismer finns det inget behov av att skriva kod på 1C-applikationssidan, eftersom Vi använder applikationslösningens standardfunktioner. På 1C-applikationssidan behöver vi bara göra vissa inställningar.

Integrationsmekanismer i 1C:Enterprise-plattformen

Importera/exportera filer

Anta att vi står inför uppgiften att dubbelriktat datautbyte mellan en 1C-applikation och en godtycklig applikation. Till exempel måste vi synkronisera en lista med produkter (nomenklaturkatalog) mellan 1C-applikationen och en godtycklig applikation.

Metoder för integration med 1C
För att lösa detta problem kan du skriva ett tillägg som laddar ner nomenklaturkatalogen till en fil av ett visst format (text, XML, JSON, ...) och kan läsa detta format.

Plattformen implementerar en mekanism för att serialisera applikationsobjekt i XML både direkt, genom WriteXML/ReadXML globala kontextmetoder, och med hjälp av XDTO (XML Data Transfer Objects) hjälpobjekt.

Alla objekt i 1C:Enterprise-systemet kan serialiseras till en XML-representation och vice versa.

Denna funktion returnerar en XML-representation av objektet:

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

Så här kommer export av nomenklaturkatalogen till XML med XDTO att se ut:

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

Genom att helt enkelt modifiera koden exporterar vi katalogen till JSON. Produkterna kommer att skrivas till en array; För variation, här är den engelska versionen av syntaxen:

&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

Då återstår bara att överföra uppgifterna till slutkonsumenten. 1C:Enterprise-plattformen stöder de viktigaste Internetprotokollen HTTP, FTP, POP3, SMTP, IMAP, inklusive deras säkra versioner. Du kan också använda HTTP och/eller webbtjänster för att överföra data.

HTTP och webbtjänster

Metoder för integration med 1C

1C-applikationer kan implementera sina egna HTTP och webbtjänster, samt anropa HTTP och webbtjänster implementerade av tredjepartsapplikationer.

REST-gränssnitt och OData-protokoll

Från och med version 8.3.5 kan 1C:Enterprise-plattformen automatiskt skapa ett REST-gränssnitt för hela applikationslösningen. Alla konfigurationsobjekt (katalog, dokument, informationsregister, etc.) kan göras tillgängliga för att ta emot och ändra data via REST-gränssnittet. Plattformen använder protokollet som ett åtkomstprotokoll OData version 3.0. Publicering av OData-tjänster utförs från konfiguratormenyn "Administration -> Publicera på en webbserver", kryssrutan "Publicera standard OData-gränssnitt" måste vara markerad. Atom/XML- och JSON-format stöds. Efter att applikationslösningen har publicerats på webbservern kan tredjepartssystem komma åt den via REST-gränssnittet med hjälp av HTTP-förfrågningar. För att arbeta med 1C-applikationen via OData-protokollet krävs ingen programmering på 1C-sidan.

Så, en URL som http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура kommer att returnera oss innehållet i nomenklaturkatalogen i XML-format - en samling postelement (meddelandets rubrik är utelämnad för korthetens skull):

<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"/>
...

Genom att lägga till strängen "?$format=application/json" till URL:en får vi innehållet i nomenklaturkatalogen i JSON-format (URL till formuläret 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 кВт, режимы работы: тепло/холод"
}, …

Externa datakällor

Metoder för integration med 1C
I vissa fall kan datautbyte via externa datakällor kan vara den bästa lösningen. Externa datakällor är ett 1C-applikationskonfigurationsobjekt som låter dig interagera med vilken ODBC-kompatibel databas som helst, både för läsning och skrivning. Externa datakällor finns tillgängliga på både Windows och Linux.

Mekanism för datautbyte

Mekanism för datautbyte är avsedd både för att skapa geografiskt distribuerade system baserade på 1C:Enterprise, och för att organisera datautbyte med andra informationssystem som inte är baserade på 1C:Enterprise.

Denna mekanism används aktivt i 1C-implementeringar, och utbudet av uppgifter som löses med dess hjälp är mycket brett. Detta inkluderar datautbyte mellan 1C-applikationer installerade i organisationens filialer, och utbyte mellan 1C-applikationen och webbutikens webbplats, och datautbyte mellan 1C-serverapplikationen och den mobila klienten (skapad med hjälp av 1C:Enterprise-mobilplattformen), och mycket Mer.

Ett av nyckelbegreppen i datautbytesmekanismen är utbytesplanen. En utbytesplan är en speciell typ av objekt för 1C-applikationsplattformen, som i synnerhet bestämmer sammansättningen av de data som kommer att delta i utbytet (vilka kataloger, dokument, register, etc.). Utbytesplanen innehåller även information om utbytesdeltagare (så kallade utbytesnoder).
Den andra komponenten i datautbytesmekanismen är förändringsregistreringsmekanismen. Denna mekanism övervakar automatiskt systemet för ändringar i data som måste överföras till slutanvändare som en del av utbytesplanen. Med den här mekanismen spårar plattformen förändringar som har inträffat sedan den senaste synkroniseringen och låter dig minimera mängden data som överförs under nästa synkroniseringssession.

Datautbyte sker med hjälp av XML-meddelanden av en viss struktur. Meddelandet innehåller data som har ändrats sedan den senaste synkroniseringen med noden och viss tjänstinformation. Meddelandestrukturen stöder meddelandenumrering och låter dig få bekräftelse från mottagarnoden om att meddelanden har tagits emot. Sådan bekräftelse finns i varje meddelande som kommer från den mottagande noden, i form av numret på det senast mottagna meddelandet. Numreringsmeddelanden gör det möjligt för plattformen att förstå vilken data som redan har överförts framgångsrikt till den mottagande noden, och att undvika återsändning genom att endast sända data som har ändrats sedan den sändande noden tog emot det senaste meddelandet med ett kvitto på data som tagits emot av den mottagande noden. Detta driftschema säkerställer garanterad leverans även med opålitliga överföringskanaler och meddelandeförlust.

Externa komponenter

I ett antal fall, när man löser integrationsproblem, måste man hantera specifika krav, till exempel interaktionsprotokoll, dataformat, som inte finns med i 1C:Enterprise-plattformen. För en sådan mängd uppgifter tillhandahåller plattformen extern komponentteknik, som låter dig skapa dynamiskt plug-in-moduler som utökar funktionaliteten i 1C:Enterprise.

Ett typiskt exempel på en uppgift med liknande krav skulle vara integrationen av en 1C-applikationslösning med detaljhandelsutrustning, allt från vågar till kassaregister och streckkodsläsare. Externa komponenter kan anslutas både på 1C:Enterprise-serversidan och på klientsidan (inklusive, men inte begränsat till, webbklienten, samt nästa version av den mobila plattformen 1C:Enterprise). Tekniken för externa komponenter ger ett ganska enkelt och begripligt mjukvarugränssnitt (C++) för samspelet mellan komponenter och plattformen 1C:Enterprise, som måste implementeras av utvecklaren.

Möjligheterna som öppnar sig vid användning av externa komponenter är mycket breda. Du kan implementera interaktion med hjälp av ett specifikt datautbytesprotokoll med externa enheter och system, bygga in specifika algoritmer för bearbetning av data och dataformat, etc.

Föråldrade integrationsmekanismer

Plattformen tillhandahåller integrationsmekanismer som inte rekommenderas för användning i nya lösningar; de lämnas kvar på grund av bakåtkompatibilitet, och även om den andra parten inte kan arbeta med modernare protokoll. En av dem arbetar med filer i DBF-format (stöds i det inbyggda språket med XBase-objektet).

En annan äldre integrationsmekanism är användningen av COM-teknik (endast tillgänglig på Windows-plattformen). 1C:Enterprise-plattformen tillhandahåller två integrationsmetoder för Windows med COM-teknik: Automationsserver och Extern anslutning. De är väldigt lika, men en av de grundläggande skillnaderna är att i fallet med Automation-servern lanseras en fullfjädrad 1C:Enterprise 8-klientapplikation, och i fallet med en extern anslutning, en relativt liten COM under process. servern startas. Det vill säga, om du arbetar via automationsservern kan du använda funktionaliteten i klientapplikationen och utföra åtgärder som liknar användarens interaktiva åtgärder. När du använder en extern anslutning kan du bara använda affärslogikfunktioner, och de kan köras både på klientsidan av anslutningen, där en pågående COM-server skapas, och du kan anropa affärslogik på 1C:Enterprise-servern sida.

COM-teknik kan också användas för att komma åt externa system från applikationskod på 1C:Enterprise-plattformen. I det här fallet fungerar 1C-applikationen som en COM-klient. Men man bör komma ihåg att dessa mekanismer bara kommer att fungera om 1C-servern fungerar i en Windows-miljö.

Integrationsmekanismer implementerade i standardkonfigurationer

Företagsdataformat

Metoder för integration med 1C
I ett antal 1C-konfigurationer (lista nedan), baserat på plattformens datautbytesmekanism som beskrivs ovan, implementeras en färdig mekanism för utbyte av data med externa applikationer, som inte kräver att källkoden för konfigurationerna ändras (förberedelse för data utbyte görs i inställningarna för applikationslösningar):

  • "1C:ERP Enterprise Management 2.0"
  • "Komplex automation 2"
  • "Enterprise Accounting", utgåva 3.0
  • "Redovisning för ett CORP-företag", utgåva 3.0
  • "Detaljhandel", utgåva 2.0
  • "Basic Trade Management", upplaga 11
  • Trade Management, upplaga 11
  • "Löner och personalförvaltning CORP", utgåva 3

Formatet som används för datautbyte är EnterpriseData, baserat på XML. Formatet är affärsorienterat - de datastrukturer som beskrivs i det motsvarar affärsenheter (dokument och katalogelement) som presenteras i 1C-program, till exempel: slutförande, beställning av kassakvitto, motpart, objekt, etc.

Datautbyte mellan 1C-applikationen och en tredjepartsapplikation kan ske:

  • via en dedikerad filkatalog
  • via FTP-katalogen
  • genom en webbtjänst som distribueras på 1C-applikationssidan. Datafilen skickas som en parameter till webbmetoder
  • via e-post

Vid utbyte via en webbtjänst kommer en tredjepartsapplikation att initiera en datautbytessession genom att anropa motsvarande webbmetoder för 1C-applikationen. I andra fall kommer initiatorn av utbytessessionen att vara 1C-applikationen (genom att placera datafilen i lämplig katalog eller skicka datafilen till den konfigurerade e-postadressen).
Även på 1C-sidan kan du konfigurera hur ofta synkronisering kommer att ske (för alternativ med filutbyte via en katalog och e-post):

  • enligt schema (med en angiven frekvens)
  • manuellt; användaren måste manuellt starta synkroniseringen varje gång han behöver den

Bekräfta meddelanden

1C-applikationer håller register över skickade och mottagna synkroniseringsmeddelanden och förväntar sig detsamma från tredjepartsapplikationer. Detta gör att du kan använda meddelandenumreringsmekanismen som beskrivs ovan i avsnittet "Datautbytesmekanism".

Under synkronisering överför 1C-applikationer endast information om förändringar som har inträffat med affärsenheter sedan den senaste synkroniseringen (för att minimera mängden överförd information). Under den första synkroniseringen kommer 1C-applikationen att ladda upp alla affärsenheter (till exempel artiklar i artikelreferensboken) i EnterpriseData-formatet till en XML-fil (eftersom de alla är "nya" för den externa applikationen). Tredjepartsapplikationen måste bearbeta informationen från XML-filen som tagits emot från 1C och, under nästa synkroniseringssession, i filen som skickas till 1C, i en speciell XML-sektion, placera information om att meddelandet från 1C med ett visst nummer lyckades mottagen. Kvittomeddelandet är en signal till 1C-applikationen att alla affärsenheter har behandlats framgångsrikt av den externa applikationen och att det inte finns något behov av att överföra information om dem längre. Utöver kvittot kan en XML-fil från en tredjepartsapplikation även innehålla data för synkronisering av applikationen (till exempel dokument för försäljning av varor och tjänster).

Efter att ha tagit emot kvittomeddelandet markerar 1C-applikationen alla ändringar som överförts i det föregående meddelandet som framgångsrikt synkroniserade. Endast osynkroniserade ändringar av affärsenheter (skapa nya enheter, ändra och ta bort befintliga) kommer att skickas till den externa applikationen under nästa synkroniseringssession.

Metoder för integration med 1C
Vid överföring av data från en extern applikation till 1C-applikationen blir bilden omvänd. Den externa applikationen måste fylla i mottagningsdelen av XML-filen i enlighet med detta och placera affärsdata för synkronisering från sin sida i EnterpriseData-formatet.

Metoder för integration med 1C

Förenklat datautbyte utan handskakning

För fall av enkel integration, när det räcker att endast överföra information från en tredjepartsapplikation till 1C-applikationen och omvänd överföring av data från 1C-applikationen till en tredjepartsapplikation krävs inte (till exempel integration av en online butik som överför försäljningsinformation till 1C: Accounting) finns det ett förenklat alternativ att arbeta via en webbtjänst (utan kvittering), vilket inte kräver inställningar på sidan av 1C-applikationen.

Anpassade integrationslösningar

Det finns en standardlösning "1C: Data Conversion", som använder plattformsmekanismer för att konvertera och utbyta data mellan standard 1C-konfigurationer, men som även kan användas för integration med tredjepartsapplikationer.

Integration med banklösningar

Standard "Kundbank", utvecklad av 1C-specialister för mer än 10 år sedan, har faktiskt blivit en industristandard i Ryssland. Nästa steg i denna riktning är teknik DirectBank, som låter dig skicka betalningsdokument till banken och ta emot kontoutdrag från banken direkt från programmen i 1C:Enterprise-systemet genom att trycka på en knapp i 1C-programmet; det kräver inte installation och körning av ytterligare program på klientdatorn.

Det finns också standard för datautbyte i löneprojekt.

Andra

Värt att nämna utbytesprotokoll mellan 1C:Enterprise-systemet och webbplatsen, standard för kommersiell informationsutbyte CommerceML (utvecklat tillsammans med Microsoft, Intel, Price.ru och andra företag), standard för datautbyte för inhämtning av transaktioner.

Källa: will.com

Lägg en kommentar