I metudi di integrazione cù 1C

Chì sò i requisiti più impurtanti per l'applicazioni cummerciale? Alcune di i travaglii più impurtanti sò i seguenti:

  • Facilità di cambià / adattà a logica di l'applicazione à cambià i travaglii cummerciale.
  • Integrazione faciule cù altre applicazioni.

Cumu u primu compitu hè risoltu in 1C hè statu brevemente descrittu in a sezione "Customization and Support". stu articulu; Riturneremu à stu tema interessante in un articulu futuru. Oghje avemu da parlà di u sicondu compitu, integrazione.

Compiti di integrazione

I travaglii di integrazione ponu esse sfarenti. Per risolviri certi prublemi, un scambiu di dati interattivu simplice hè abbastanza - per esempiu, per trasfirià una lista di l'impiegati à un bancu per l'emissione di carte di plastica di salari. Per i travaglii più cumplessi, u scambiu di dati cumplettamente automatizatu pò esse necessariu, possibbilmente cù riferimentu à a logica cummerciale di un sistema esternu. Ci sò compiti chì sò spicializati in natura, cum'è l'integrazione cù l'equipaggiu esterni (per esempiu, l'equipaggiu di vendita, scanners mobile, etc.) o cù sistemi legati o altamente specializati (per esempiu, cù sistemi di ricunniscenza di tag RFID). Hè assai impurtante di selezziunà u mecanismu di integrazione più apprupriatu per ogni compitu.

Opzioni di integrazione cù 1C

Ci sò diversi approcci per implementà l'integrazione cù l'applicazioni 1C; quale sceglite dipende da e esigenze di u compitu.

  1. Basatu nantu à l'implementazione meccanismi di integrazionefurnita da a piattaforma, a so propria API specializata in u latu di l'applicazione 1C (per esempiu, un settore di servizii Web o HTTP chì chjamarà applicazioni di terzu per scambià dati cù l'applicazione 1C). U vantaghju di questu approcciu hè a resistenza di l'API à i cambiamenti in l'implementazione da u latu di l'applicazione 1C. A peculiarità di l'approcciu hè chì hè necessariu di cambià u codice fonte di una suluzione standard 1C, chì pò esse bisognu di sforzu quandu unisce i codici fonte quandu si move à una nova versione di a cunfigurazione. In questu casu, una nova funziunalità progressiva pò vene in salvezza - estensioni di cunfigurazione. L'estensioni sò, in essenza, un mecanismu di plugin chì vi permette di creà aghjunte à e suluzioni di l'applicazioni senza cambià a suluzione di l'applicazione. Spostà l'API d'integrazione in l'estensione di cunfigurazione vi permetterà di evità difficultà quandu unisce e cunfigurazioni quandu si move à una nova versione di una suluzione standard.
  2. Utilizà i meccanismi di integrazione di a piattaforma chì furnisce l'accessu esternu à u mudellu di l'ughjettu di l'applicazione è ùn necessitanu micca mudificazione di l'applicazione o creazione di una estensione. U vantaghju di stu approcciu hè chì ùn ci hè bisognu di cambià l'applicazione 1C. Minus - se l'applicazione 1C hè stata migliurata, allora i megliurenze ponu esse dumandate in l'applicazione integrata. Un esempiu di questu approcciu hè l'usu di u protokollu OData per l'integrazione, implementatu à u latu di a piattaforma 1C: Enterprise (più nantu à quì sottu).
  3. Utilizazione di protokolli d'applicazione pronti implementati in soluzioni standard 1C. Parechje suluzioni standard da 1C è partenarii implementanu i so protokolli di l'applicazioni, focalizati in compiti specifichi, basatu nantu à i meccanismi di integrazione furniti da a piattaforma. Quandu usu di sti miccanismi, ùn ci hè bisognu di scrive codice in u latu di l'applicazione 1C, perchè Utilizemu e capacità standard di a suluzione di l'applicazione. In u latu di l'applicazione 1C, avemu solu bisognu di fà certi paràmetri.

Meccanismi di integrazione in a piattaforma 1C: Enterprise

Import / export files

Eppo supponi chì simu di fronte à u compitu di scambià dati bidirezionale trà una applicazione 1C è una applicazione arbitraria. Per esempiu, avemu bisognu di sincronizà una lista di prudutti (directory Nomenclature) trà l'applicazione 1C è una applicazione arbitraria.

I metudi di integrazione cù 1C
Per risolve stu prublema, pudete scrive una estensione chì scarica u repertoriu di Nomenclatura in un schedariu di un certu formatu (testu, XML, JSON, ...) è ponu leghje stu formatu.

A piattaforma implementa un mecanismu per serializà l'oggetti di l'applicazione in XML sia direttamente, attraversu i metudi di cuntestu glubale WriteXML / ReadXML, sia utilizendu l'ughjettu ausiliariu XDTO (XML Data Transfer Objects).

Ogni ughjettu in u sistema 1C: Enterprise pò esse serializatu in una rapprisentazione XML è vice versa.

Questa funzione restituverà una rappresentazione XML di l'ughjettu:

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

Questu hè ciò chì l'esportazione di u repertoriu di Nomenclatura à XML cù XDTO serà cusì:

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

Simply mudificà u codice, esportemu u cartulare à JSON. I prudutti seranu scritti à un array; Per variità, quì hè a versione inglese di a sintassi:

&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

Allora tuttu ciò chì resta hè di trasfiriri i dati à u cunsumadore finale. A piattaforma 1C: Enterprise supporta i principali protokolli Internet HTTP, FTP, POP3, SMTP, IMAP, cumprese e so versioni sicure. Pudete ancu aduprà HTTP è / o servizii Web per trasfiriri dati.

HTTP è servizii web

I metudi di integrazione cù 1C

L'applicazioni 1C ponu implementà i so propri servizii HTTP è web, è ancu chjamate HTTP è servizii web implementati da applicazioni di terzu.

Interfaccia REST è protocolu OData

Partendu da a versione 8.3.5, a piattaforma 1C: Enterprise pò automaticamente creà una interfaccia REST per tutta a suluzione di l'applicazione. Ogni ughjettu di cunfigurazione (directory, document, registru di l'infurmazioni, etc.) pò esse dispunibule per riceve è mudificà e dati via l'interfaccia REST. A piattaforma usa u protocolu cum'è un protocolu d'accessu OData versione 3.0. A publicazione di i servizii OData hè realizatu da u menù di u Configuratore "Amministrazione -> Publicazione nantu à un servitore web", a casella "Pubblica l'interfaccia standard OData" deve esse marcata. I formati Atom/XML è JSON sò supportati. Dopu chì a suluzione di l'applicazione hè publicata nantu à u servitore web, i sistemi di terzu pò accede à l'interfaccia REST cù richieste HTTP. Per travaglià cù l'applicazione 1C via u protocolu OData, a prugrammazione in u latu 1C ùn hè micca necessariu.

Allora, un URL cum'è http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура ci rinviarà u cuntenutu di u catalogu di Nomenclatura in formatu XML - una cullizzioni di elementi di entrata (u titulu di u missaghju hè omesso per brevità):

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

Aghjunghjendu a stringa "?$format=application/json" à l'URL, uttene u cuntenutu di u catalogu di Nomenclatura in formatu JSON (URL di a forma 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 кВт, режимы работы: тепло/холод"
}, …

Fonti di dati esterni

I metudi di integrazione cù 1C
In certi casi, u scambiu di dati via fonti di dati esterni pò esse a megliu suluzione. I fonti di dati esterni sò un oggettu di cunfigurazione di l'applicazione 1C chì vi permette di interagisce cù qualsiasi basa di dati cumpatibile ODBC, sia per leghje è scrive. I fonti di dati esterni sò dispunibili nantu à Windows è Linux.

Meccanisimu di scambiu di dati

Meccanisimu di scambiu di dati hè destinatu sia per creà sistemi distribuiti geograficamente basati in 1C: Enterprise, sia per urganizà u scambiu di dati cù altri sistemi d'infurmazione micca basati in 1C: Enterprise.

Stu mekanismu hè attivamente utilizatu in implementazioni 1C, è a gamma di compiti risolti cù u so aiutu hè assai larga. Questu include u scambiu di dati trà l'applicazioni 1C installate in i rami di l'urganizazione, è u scambiu trà l'applicazione 1C è u situ web di a tenda in linea, è u scambiu di dati trà l'applicazione di u servitore 1C è u cliente mobile (creatu cù a piattaforma mobile 1C: Enterprise), è assai. più.

Unu di i cuncetti chjave in u mecanismu di scambiu di dati hè u pianu di scambiu. Un pianu di scambiu hè un tipu speciale di l'ughjettu di a piattaforma di l'applicazione 1C, chì determina, in particulare, a cumpusizioni di e dati chì participanu à u scambiu (chì repertorii, documenti, registri, etc.). U pianu di scambiu cuntene ancu infurmazioni nantu à i participanti di scambiu (i cosiddetti nodi di scambiu).
U sicondu cumpunente di u mecanismu di scambiu di dati hè u mecanismu di registrazione di cambiamentu. Stu mecanismu monitorizza automaticamente u sistema per i cambiamenti di dati chì deve esse trasferitu à l'utilizatori finali cum'è parte di u pianu di scambiu. Utilizendu stu mecanismu, a piattaforma traccia i cambiamenti chì sò accaduti da l'ultima sincronizazione è permette di minimizzà a quantità di dati trasferiti durante a prossima sessione di sincronizazione.

U scambiu di dati si faci cù missaghji XML di una certa struttura. U messagiu cuntene dati chì anu cambiatu da l'ultima sincronizazione cù u node è qualchì infurmazione di serviziu. A struttura di missaghju sustene a numerazione di messagi è vi permette di riceve cunferma da u node destinatariu chì i missaghji sò stati ricevuti. Tali cunfirmazione hè cuntenuta in ogni missaghju chì vene da u node di ricivutu, in a forma di u numeru di l'ultimu missaghju ricevutu. I missaghji di numerazione permette à a piattaforma di capisce ciò chì i dati sò digià stati trasmessi bè à u nodu di ricivutu, è per evità a retransmission trasmettendu solu dati chì anu cambiatu da quandu u nodu di mandatu hà ricivutu l'ultimu missaghju cù una ricevuta per i dati ricevuti da u nodu di ricivutu. Stu schema operativu assicura una consegna garantita ancu cù canali di trasmissione inaffidabili è perdita di missaghju.

Cumpunenti esterni

In una quantità di casi, quandu si risolve i prublemi di integrazione, unu deve trattà cù esigenze specifiche, per esempiu, protokolli d'interazzione, formati di dati, chì ùn sò micca previsti in a piattaforma 1C: Enterprise. Per una tale gamma di compiti, a piattaforma furnisce tecnulugia di cumpunenti esterni, chì permette di creà moduli plug-in dinamichi chì espansione a funziunalità di 1C: Enterprise.

Un esempiu tipicu di un compitu cù esigenze simili seria l'integrazione di una soluzione di applicazione 1C cù l'equipaggiu di vendita, chì varieghja da scale à cash registers è scanners di codici a barre. I cumpunenti esterni ponu esse cunnessi sia in u latu di u servitore 1C: Enterprise sia in u latu di u cliente (cumpresu, ma micca limitatu à, u cliente web, è ancu a prossima versione di a piattaforma mobile 1C: Impresa). A tecnulugia di cumpunenti esterni furnisce una interfaccia di software (C++) abbastanza simplice è comprensibile per l'interazzione di cumpunenti cù a piattaforma 1C: Enterprise, chì deve esse implementata da u sviluppatore.

E pussibulità chì si apre quandu utilizanu cumpunenti esterni sò assai largu. Pudete implementà l'interazzione utilizendu un protokollu di scambiu di dati specificu cù i dispositi è i sistemi esterni, custruisce in algoritmi specifichi per processà dati è formati di dati, etc.

Meccanismi di integrazione obsoleti

A piattaforma furnisce miccanismi d'integrazione chì ùn sò micca cunsigliati per l'usu in soluzioni novi; sò lasciati in per ragioni di cumpatibilità backward, è ancu in casu chì l'altra parte ùn pò micca travaglià cù protokolli più muderni. Unu di elli travaglia cù schedarii di furmatu DBF (supportatu in a lingua integrata cù l'ughjettu XBase).

Un altru mecanismu di integrazione legatu hè l'usu di a tecnulugia COM (dispunibule solu nantu à a piattaforma Windows). A piattaforma 1C: Enterprise furnisce dui metudi d'integrazione per Windows chì utilizanu a tecnulugia COM: Servitore d'automatizazione è Cunnessione esterna. Sò assai simili, ma una di e differenze fundamentali hè chì in u casu di u servore Automation, una applicazione cliente 1C: Enterprise 8 cumpleta hè lanciata, è in u casu di una cunnessione esterna, un COM in-process relativamente chjucu. u servitore hè lanciatu. Questu hè, se travagliate per u servitore di l'automatizazione, pudete aduprà a funziunalità di l'applicazione cliente è eseguisce azzioni simili à l'azzioni interattivi di l'utilizatore. Quandu si usa una cunnessione esterna, pudete aduprà solu funzioni di logica cummerciale, è ponu esse eseguite sia in u latu di u cliente di a cunnessione, induve un servitore COM in-process hè creatu, è pudete chjamà a logica cummerciale nantu à u servitore 1C: Enterprise. latu.

A tecnulugia COM pò ancu esse aduprata per accede à i sistemi esterni da u codice di l'applicazione nantu à a piattaforma 1C: Enterprise. In questu casu, l'applicazione 1C agisce cum'è un cliente COM. Ma deve esse ricurdatu chì sti miccanismi sò solu travaglià se u servitore 1C opera in un ambiente Windows.

Meccanismi di integrazione implementati in cunfigurazioni standard

Format di dati di l'impresa

I metudi di integrazione cù 1C
In una quantità di cunfigurazioni 1C (lista sottu), basatu annantu à u mecanismu di scambiu di dati di piattaforma descrittu sopra, hè implementatu un mecanismu prontu per scambià dati cù applicazioni esterne, chì ùn deve micca cambià u codice fonte di e cunfigurazioni (preparazione per i dati). u scambiu hè fattu in i paràmetri di suluzione di l'applicazione):

  • "1C: ERP Enterprise Management 2.0"
  • "Automazione cumplessa 2"
  • "Contabilità di l'impresa", edizione 3.0
  • "Accounting for a CORP enterprise", edizione 3.0
  • "Retail", edizione 2.0
  • "Basic Trade Management", edizione 11
  • Gestione di u cummerciu, Edizione 11
  • "Salari è gestione di u persunale CORP", edizione 3

U furmatu utilizatu per u scambiu di dati hè EnterpriseData, basatu annantu à XML. U furmatu hè orientatu à l'affari - e strutture di dati descritte in questu currispondenu à l'entità cummerciale (documenti è elementi di repertoriu) presentati in i prugrammi 1C, per esempiu: attu di cumpiimentu, ordine di ricezione di cash, contraparty, item, etc.

U scambiu di dati trà l'applicazione 1C è una applicazione di terzu pò esse:

  • via un cartulare di schedari dedicatu
  • via u cartulare FTP
  • attraversu un serviziu web implementatu da u latu di l'applicazione 1C. U schedariu di dati hè passatu cum'è un paràmetru à i metudi web
  • via email

In u casu di scambiu via un serviziu web, una applicazione di terzu hà da inizià una sessione di scambiu di dati chjamendu i metudi web currispondenti di l'applicazione 1C. In altri casi, l'iniziatore di a sessione di scambiu serà l'applicazione 1C (pusendu u schedariu di dati in u cartulare appropritatu o mandendu u schedariu di dati à l'indirizzu email cunfiguratu).
Ancu da u latu 1C pudete cunfigurà a frequenza di a sincronizazione (per l'opzioni cù u scambiu di schedari via un annuariu è email):

  • secondu u calendariu (cun ​​​​una frequenza specifica)
  • manualmente; l'utilizatore hà da principià manualmente a sincronizazione ogni volta chì hà bisognu

A ricunnosce i missaghji

L'applicazioni 1C mantenenu registri di i missaghji di sincronizazione mandati è ricevuti è aspettanu u listessu da l'applicazioni di terzu. Questu permette di utilizà u mecanismu di numerazione di missaghju descrittu sopra in a rùbbrica "Meccanisimu di scambiu di dati".

Durante a sincronizazione, l'applicazioni 1C trasmettenu solu l'infurmazioni nantu à i cambiamenti chì sò accaduti cù l'entità cummerciale da l'ultima sincronizazione (per minimizzà a quantità di infurmazione trasferita). Duranti a prima sincronizazione, l'applicazione 1C caricarà tutte e entità cummerciale (per esempiu, l'articuli di u libru di riferimentu di l'articulu) in u furmatu EnterpriseData in un schedariu XML (perchè sò tutti "novi" per l'applicazione esterna). L'applicazione di terzu deve processà l'infurmazioni da u schedariu XML ricevutu da 1C è, durante a prossima sessione di sincronizazione, mette in u schedariu mandatu à 1C, in una sezione XML speciale, infurmazione chì u messagiu da 1C cù un certu numaru hè statu successu. ricevutu. U missaghju di ricevuta hè un signalu à l'applicazione 1C chì tutte e entità cummerciale sò state trattate cù successu da l'applicazione esterna è ùn ci hè più bisognu di trasmette infurmazioni nantu à elli. In più di u ricivutu, un schedariu XML da una applicazione di terzu pò ancu cuntene dati per a sincronizazione da l'applicazione (per esempiu, documenti per a vendita di merchenzie è servizii).

Dopu avè ricivutu u missaghju di ricevuta, l'applicazione 1C marca tutti i cambiamenti trasmessi in u missaghju precedente cum'è sincronizzati bè. Solu i cambiamenti micca sincronizzati à l'entità cummerciale (creendu novi entità, cambià è sguassà quelli esistenti) seranu mandati à l'applicazione esterna durante a prossima sessione di sincronizazione.

I metudi di integrazione cù 1C
Quandu si trasferisce dati da una applicazione esterna à l'applicazione 1C, l'imaghjini hè invertitu. L'applicazione esterna deve cumprità a sezione di ricezione di u schedariu XML per quessa è mette i dati di l'affari per a sincronizazione da a so parte in u furmatu EnterpriseData.

I metudi di integrazione cù 1C

Scambiu di dati simplificatu senza handshake

Per i casi di integrazione simplice, quandu hè abbastanza per trasferisce solu l'infurmazioni da una applicazione di terzu à l'applicazione 1C è u trasferimentu inversu di dati da l'applicazione 1C à una applicazione di terzu ùn hè micca necessariu (per esempiu, integrazione di una applicazione in linea). magazzini chì trasferisce l'infurmazioni di vendita à 1C: Accounting), ci hè una opzione simplificata di travaglià attraversu un serviziu web (senza ricunniscenza), chì ùn hà micca bisognu di paràmetri à u latu di l'applicazione 1C.

Soluzioni d'integrazione persunalizati

Ci hè una suluzione standard "1C: Cunversione di Dati", chì usa meccanismi di piattaforma per cunvertisce è scambià dati trà cunfigurazioni standard 1C, ma pò ancu esse aduprata per integrazione cù applicazioni di terzu.

Integrazione cù soluzioni bancarie

Standard "Client Bank", sviluppatu da specialisti 1C più di 10 anni fà, hè diventatu un standard di l'industria in Russia. U prossimu passu in sta direzzione hè a tecnulugia DirectBank, chì permette di mandà documenti di pagamentu à u bancu è riceve dichjarazioni da u bancu direttamente da i prugrammi di u sistema 1C:Enterprise pressendu un buttone in u prugramma 1C; ùn hè micca necessariu installà è eseguisce prugrammi supplementari in l'urdinatore cliente.

Ci hè ancu standard per u scambiu di dati in i prughjetti di salari.

Прочее

Vale a pena mintuvà protokollu di scambiu trà u sistema 1C: Enterprise è u situ web, standard di scambiu di informazioni cummerciale CommerceML (sviluppatu cumuna cù Microsoft, Intel, Price.ru è altre cumpagnie), standard per u scambiu di dati per acquistà transazzione.

Source: www.habr.com

Add a comment