Hva er de viktigste kravene til forretningsapplikasjoner? Noen av de mest sentrale inkluderer følgende oppgaver:
- Letthet i å endre/tilpasse applikasjonens logikk til skiftende forretningsbehov.
- Letthet i integrasjon med andre applikasjoner.
Hvordan den første oppgaven løses i 1C, ble kort beskrevet i seksjonen «Tilpasning og støtte»; vi vil komme tilbake til dette interessante emnet i en av fremtidige artikler. I dag skal vi snakke om den andre oppgaven, integrasjon.
Integrasjonsoppgaver
Integrasjonsoppgavene kan være forskjellige. For å løse enkelte oppgaver er det tilstrekkelig med en enkel interaktiv datautveksling – for eksempel for å sende en liste over ansatte til banken for utstedelse av lønnskort. For mer komplekse oppgaver kan det være nødvendig med en helt automatisert datautveksling, muligens med henvisning til forretningslogikken i det eksterne systemet. Det finnes også spesialiserte oppgaver, som integrasjon med eksternt utstyr (for eksempel betalingssystemer, mobile skannere osv.) eller med arvet eller spesialiserte systemer (for eksempel RFID-lesesystemer). Det er avgjørende å velge den mest hensiktsmessige integrasjonsmekanismen for hver oppgave.
Integrasjonsmuligheter med 1C
Det finnes ulike tilnærminger til å implementere integrasjon med 1C-applikasjoner, hvilken som velges avhenger av kravene til oppgaven.
- Implementering basert på , levert av plattformen, eller sitt eget spesialiserte API på siden av 1C-applikasjonen (for eksempel en serie Web- eller HTTP-tjenester som vil bli kalt av tredjepartsapplikasjoner for datautveksling med 1C-applikasjonen). Fordelen med denne tilnærmingen er robustheten til API-et mot endringer i implementeringen på siden av 1C-applikasjonen. En særtrekk ved tilnærmingen er at det kreves endringer i kildekoden til den typiske løsningen i 1C, noe som potensielt kan kreve innsats ved sammenslåing av kildekodene når man går over til en ny konfigurasjonsversjon. I dette tilfellet kan ny progresiv funksjonalitet komme til hjelp – . Utvidelser er i essensen en plugin-mekanisme som gjør det mulig å lage tillegg til applikasjonsløsninger uten å endre selve applikasjonsløsningene. Å flytte integrasjons-API-en til konfigurasjonsutvidelsen vil unngå komplikasjoner ved sammenslåing av konfigurasjoner når man går over til en ny versjon av standardløsningen.
- Bruken av integrasjonsmekanismer fra plattformen som gir ekstern tilgang til objektmodellen i applikasjonen uten at det kreves endringer i applikasjonen eller opprettelse av utvidelser. Fordelen med denne tilnærmingen er at man ikke trenger å endre 1C-applikasjonen. Ulempen er at hvis 1C-applikasjonen har blitt modifisert, kan det være nødvendig med tilpasninger i den integrerte applikasjonen. Et eksempel på en slik tilnærming er bruk av OData-protokollen for integrasjonen, implementert på 1C:Enterprise-plattformen (mer om det nedenfor).
- Bruk av ferdige applikasjonsprotokoller implementert i standardløsninger fra 1C. Mange standardløsninger fra 1C og partnere implementerer sine egne applikasjonsprotokoller basert på integrasjonsmekanismene som tilbys av plattformen, og disse er rettet mot spesifikke oppgaver. Når man bruker disse mekanismene, er det ikke nødvendig å skrive kode på 1C-applikasjonssiden, da vi benytter de innebygde mulighetene til applikasjonsløsningen. På 1C-applikasjonen må vi bare utføre visse innstillinger.
Integrasjonsmekanismer i 1C:Enterprise-plattformen
Import/eksport av filer
La oss anta at vi står overfor oppgaven med toveiskommunikasjon mellom 1C-applikasjonen og en vilkårlig applikasjon. For eksempel trenger vi å synkronisere produktlisten (Oppslagsord Nomenklatur) mellom 1C-applikasjonen og en vilkårlig applikasjon.

For å løse denne oppgaven kan vi skrive en utvidelse som eksporterer oppslagsord Nomenklatur til en fil i et bestemt format (tekst, XML, JSON, …) og kan lese dette formatet.
Plattformen har implementert en mekanisme for serialisering av applikasjonsobjekter til XML både direkte, gjennom metodene i global kontekst SkriveXML/LeseXML, og ved hjelp av et hjelpeobjekt XDTO (XML Data Transfer Objects).
Ethvert objekt i 1C:Enterprise-systemet kan bli serialisert til XML-representasjon og omvendt.
Denne funksjonen vil returnere objektets representasjon i form av XML:
Функция Объект_В_XML(Объект)
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, Объект);
Возврат ЗаписьXML.Закрыть();
КонецФункции
так будет выглядеть экспорт справочника Номенклатура в XML при помощи XDTO:
&НаСервере
Процедура ЭкспортXMLНаСервере()
НовыйСериализаторXDTO = СериализаторXDTO;
НоваяЗаписьXML = Новый ЗаписьXML();
НоваяЗаписьXML.ОткрытьФайл("C:DataНоменклатура.xml", "UTF-8");
НоваяЗаписьXML.ЗаписатьОбъявлениеXML();
НоваяЗаписьXML.ЗаписатьНачалоЭлемента("СправочникНоменклатура");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
ОбъектНоменклатура = Выборка.ПолучитьОбъект();
НовыйСериализаторXDTO.ЗаписатьXML(НоваяЗаписьXML, ОбъектНоменклатура, НазначениеТипаXML.Явное);
КонецЦикла;
НоваяЗаписьXML.ЗаписатьКонецЭлемента();
НоваяЗаписьXML.Закрыть();
КонецПроцедуры
Путем несложной переделки кода экспортируем справочник в JSON. Товары будут записаны в массив; для разнообразия приведем англоязычный вариант синтаксиса:
&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
Далее останется только передать данные конечному потребителю. Платформа 1С:Предприятие поддерживает основные интернет-протоколы HTTP, FTP, POP3, SMTP, IMAP, включая их безопасные версии. Также для передачи данных можно использовать HTTP и/или Web-сервисы.
HTTP- и веб-сервисы

Приложения 1С могут реализовывать свои HTTP- и веб-сервисы, а также вызывать HTTP- и веб-сервисы, реализованные сторонними приложениями.
REST интерфейс и протокол OData
Начиная с версии 8.3.5 платформа 1С:Предприятие может автоматически для всего прикладного решения. Любой объект конфигурации (справочник, документ, регистр сведений и т.д.) можно сделать доступным для получения и модификации данных через REST интерфейс. В качестве протокола доступа платформа использует протокол versjon 3.0. Publisering av OData-tjenester utføres fra menyen i Konfiguratoren «Administrasjon -> Publisering på webserver», avmerkingsboksen «Publiser standard OData-grensesnitt» må være merket. Atom/XML og JSON-formater støttes. Etter at den applikative løsningen er publisert på webserveren, kan tredjepartssystemer få tilgang til den via REST-grensesnittet ved hjelp av HTTP-forespørsel. For å arbeide med 1C-applikasjonen via OData-protokollen kreves det ingen programmering på 1C-siden.
Dermed vil en URL som http:////odata/standard.odata/Catalog_Nomenklatura returnere innholdet i katalogen Nomenklatura i XML-format — en samling elementer entry (meldingshodet utelatt for kortfattethet):
http://server/Config/odata/standard.odata/Catalog_Nomenkatura(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, driftsmoduser: varme/kulde
http://server/Config/odata/standard.odata/Catalog_Nomenkatura(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
Ved å legge til strengen «?$format=application/json» til URL-en, får vi innholdet i katalogen Nomenklatura i JSON-format (en URL som http:////odata/standard.odata/Catalog_Nomenkatura?$format=application/json ):
{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Nomenkatura",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Airconditioner Mitsubishi",
"Beskrivelse": "Effekt 2,5 kW, driftsmoduser: varme/kulde"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Airconditioner Daikin",
"Beskrivelse": "Effekt 3 kW, driftsmoduser: varme/kulde"
}, …
Eksterne datakilder

I noen tilfeller skjer datautveksling via kan vise seg å være en optimal løsning. Eksterne datakilder er et applikasjonsobjekt for 1C-konfigurasjon som gjør det mulig å samhandle med enhver ODBC-kompatibel database både for lesing og skriving. Eksterne datakilder er tilgjengelige både på Windows og Linux.
Datadeling mekanisme
er ment for å både lage territorielt distribuerte systemer basert på 1C:Enterprise og for å organisere datadeling med andre informasjonssystemer som ikke er basert på 1C:Enterprise.
Denne mekanismen brukes aktivt i implementeringene av 1C, og spekteret av oppgaver som løses med den er ganske bredt. Det inkluderer datadeling mellom 1C-applikasjoner installert i filialene til organisasjonen, samt deling mellom en 1C-applikasjon og nettbutikkens nettsted, og datadeling mellom serverapplikasjonen i 1C og den mobile klienten (laget med den mobile plattformen for 1C:Enterprise), og mye mer.
Et av nøkkelbegrepene i datadeling mekanismen er utvekslingsplanen. Utvekslingsplanen er en spesiell type objekt i 1C-plattformen som definerer, blant annet, hvilket datainnhold som skal delta i utvekslingen (hvilke spesifikke referanser, dokumenter, registre osv.). Utvekslingsplanen inneholder også informasjon om deltakerne i utvekslingen (de såkalte utvekslingsnodene).
Den andre komponenten i datadeling mekanismen er mekanismen for registrering av endringer. Denne mekanismen sporer automatisk endringer i systemet som må overføres til sluttbrukere i samsvar med utvekslingsplanen. Med denne mekanismen overvåker plattformen endringer som har skjedd siden forrige synkronisering, og gjør det mulig å minimere størrelsen på dataene som overføres i løpet av neste synkroniseringsøkt.
Data exchange occurs through XML messages of a specific structure. The message contains data that has changed since the last synchronization with the node, along with certain service information. The structure of messages supports message numbering and allows for receiving confirmations from the receiving node regarding the acceptance of messages. Such a confirmation is contained in each message coming from the receiving node, in the form of the number of the last accepted message. The message numbering allows the platform to understand which data has already been successfully transmitted to the receiving node and to avoid retransmission, sending only the data that has changed since the sender node received the last message with the receipt of data received by the receiving node. This scheme ensures guaranteed delivery even in unreliable transmission channels and in the event of message loss.
External components
In certain cases, when addressing integration tasks, one may encounter specific requirements, such as interaction protocols, data formats not accounted for in the 1C:Enterprise platform. For this kind of tasks, the platform provides for , which allows for the creation of dynamically connectable 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 trading 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, but not limited to, the web client, as well as 1C:Enterprise). The technology of external components provides a relatively simple and understandable programming (C++) interface for interaction between the component and the 1C:Enterprise platform, which must be implemented by the developer.
The possibilities opened up by using external components are quite broad. Interaction can be implemented via specific data exchange protocols with external devices and systems, specific data processing algorithms and formats can be integrated, and so on.
Utdaterte integrasjonsmekanismer
Plattformen tilbyr integrasjonsmekanismer som ikke anbefales for bruk i nye løsninger; de er bevart av hensyn til bakoverkompatibilitet, samt i tilfelle den andre siden ikke kan arbeide med mer moderne protokoller. En av dem er arbeidet med filer i DBF-format (støttes i innebygd språk ved hjelp av objektet XBase).
En annen utdaterte integrasjonsmekanisme er bruken av COM-teknologi (tilgjengelig bare på Windows-plattformen). 1C:Enterprise-plattformen gir to integrasjonsmetoder for Windows som bruker COM-teknologi: Automation-server og Eksternt tilkobling. De ligner mye på hverandre, men en av de viktigste forskjellene er at i tilfelle av Automation-server kjøres et fullt klientprogram for 1C:Enterprise 8, mens i tilfelle av eksternt tilkobling kjøres en relativt liten intra-prosess COM-server. Det vil si at ved å bruke Automation-server kan man bruke funksjonaliteten til klientprogrammet og utføre handlinger som ligner interaktive handlinger fra brukeren. Ved å bruke eksternt tilkobling kan man bare bruke funksjoner for forretningslogikk, som kan utføres både på klientsiden av forbindelsen, hvor den intra-prosess COM-serveren opprettes, og ved å kalle forretningslogikk på 1C:Enterprise-serveren.
COM-teknologien kan også brukes til å kontakte eksterne systemer fra koden til applikasjonen på 1C:Enterprise-plattformen. I dette tilfellet fungerte 1C-applikasjonen som COM-klient. Men det bør huskes at disse mekanismene kun vil fungere hvis 1C-serveren opererer i Windows-miljøet.
Integrasjonsmekanismer implementert i standardkonfigurasjoner
EnterpriseData-format

I flere 1C-konfigurasjoner (listen nedenfor) er det implementert en klar mekanisme for datasutveksling med eksterne applikasjoner, basert på den beskrevne plattformens datadeling, og som ikke krever endring av kildeteksten til konfigurasjonene (forberedelse til datautveksling skjer i innstillingene til de applikative løsningene):
- «1C:ERP Ledelse av virksomheten 2.0»
- «Kompleks automatisering 2»
- «Bokføringen til virksomheten», revisjon 3.0
- «Bokføring av virksomheten KORP», revisjon 3.0
- «Detaljhandel», revisjon 2.0
- «Basis for Trade Management», edition 11
- «Trade Management», edition 11
- «Payroll and Personnel Management CORP», edition 3
The data exchange uses the format , based on XML. The format is business-oriented—the data structures described correspond to business entities (documents and directory elements) represented in 1C programs, for example: act of completed work, incoming cash order, counterparty, nomenclature, etc.
Data exchange between the 1C application and a third-party application can occur:
- through a dedicated file directory
- through an FTP directory
- through a web service deployed on the 1C application side. The file with data is passed as a parameter of the web methods
- through email
In the case of exchange via a web service, the third-party application will initiate the data exchange session by calling the corresponding web methods of the 1C application. In other cases, the initiator of the exchange session will be the 1C application (by placing the data file in the corresponding directory or sending the data file to the configured email address).
Also, on the 1C side, the frequency of synchronization will be configured (for options with file exchange via directory and email):
- according to a schedule (with a specified frequency)
- manually; the user will have to manually start the synchronization each time it is needed
Acknowledgment of messages
1C applications keep track of the sent and received synchronization messages and expect the same from third-party applications. This allows for the use of the message numbering mechanism described above in the section 'Data Exchange Mechanism.'
1C-applikasjoner overfører under synkronisering kun informasjon om endringer som har skjedd med forretningsenhetene siden forrige synkronisering (for å minimere mengden data som overføres). Ved første synkronisering vil 1C-applikasjonen eksportere alle forretningsenheter (for eksempel elementer fra nomenklaturregisteret) i formatet EnterpriseData til en XML-fil (siden alle er "nye" for den eksterne applikasjonen). Den eksterne applikasjonen må behandle informasjonen fra den mottatte XML-filen fra 1C og ved neste synkronisering plassere en spesialseksjon i XML-filen sendt til 1C, med informasjon om at meldingen fra 1C med et bestemt nummer er mottatt. Bekreftelsen på meldingen fungerer som et signal for 1C-applikasjonen om at alle forretningsenhetene er behandlet av den eksterne applikasjonen, og informasjon om dem trenger ikke å overføres mer. I tillegg til bekreftelsen kan XML-filen fra den eksterne applikasjonen også inneholde data for synkronisering fra applikasjonens side (for eksempel dokumenter for salg av varer og tjenester).
Etter å ha mottatt bekreftelsesmeldingen vil 1C-applikasjonen merke alle endringer sendt i forrige melding som vellykket synkronisert. Bare usynkroniserte endringer i forretningsenheter (opprettelse av nye enheter, endringer og sletting av eksisterende) vil bli sendt til den eksterne applikasjonen ved neste synkronisering.

Når data overføres fra den eksterne applikasjonen til 1C-applikasjonen, skjer det en omvendt prosess. Den eksterne applikasjonen må fylle ut bekreftelsesseksjonen i XML-filen på passende måte og plassere forretningsdata for synkronisering fra sin side i formatet EnterpriseData.

Forenklet datadelingsprosess uten bekreftelse
For enkle integrasjons scenarier der det kun er nødvendig å overføre informasjon fra den eksterne applikasjonen til 1C-applikasjonen, og det ikke er behov for å sende data tilbake fra 1C-applikasjonen til den eksterne applikasjonen (for eksempel integrering av en nettbutikk som sender salgsinformasjon til "1C:Regnskap"), er det en forenklet variant for drift via webtjeneste (uten bekreftelse) som ikke krever oppsett på 1C-applikasjonen.
Spesialiserte integrasjonsløsninger
Det finnes en standard løsning «1C:Datakonvertering», som bruker plattformens mekanismer for konvertering og datadeling mellom standardkonfigurasjoner av 1C, men den kan også brukes for integrasjon med tredjepartsapplikasjoner.
Integrasjon med bankløsninger
Standard , utviklet av spesialister i 1C for over 10 år siden, har i praksis blitt industristandarden i Russland. Neste skritt i denne retningen er teknologien , som gjør det mulig å sende betalingsdokumenter til banken og motta kontoutskrifter direkte fra programmet «1C:Entreprise» med et enkelt klikk i «1C»; dette krever ikke installasjon og oppstart av ekstra programmer på klientdatamaskinen.
Det finnes også .
Annet
Det er verdt å nevne , standarden for utveksling av kommersiell informasjon (utviklet i samarbeid med Microsoft, Intel, Price.ru og andre selskaper), .
Kilde: habr.com
