Métodos de integração com 1C

Quais são os requisitos mais importantes para aplicativos de negócios? Algumas das tarefas mais importantes são as seguintes:

  • Facilidade de alterar/adaptar a lógica do aplicativo às mudanças nas tarefas de negócios.
  • Fácil integração com outros aplicativos.

Como a primeira tarefa é resolvida em 1C foi brevemente descrita na seção “Personalização e Suporte” este artigo; Voltaremos a este interessante tópico em um artigo futuro. Hoje falaremos sobre a segunda tarefa, a integração.

Tarefas de integração

As tarefas de integração podem ser diferentes. Para resolver alguns problemas, basta uma simples troca interativa de dados - por exemplo, para transferir uma lista de funcionários a um banco para emissão de cartões plásticos de salário. Para tarefas mais complexas, pode ser necessária a troca de dados totalmente automatizada, possivelmente com referência à lógica empresarial de um sistema externo. Existem tarefas de natureza especializada, como a integração com equipamentos externos (por exemplo, equipamentos de varejo, scanners móveis, etc.) ou com sistemas legados ou altamente especializados (por exemplo, com sistemas de reconhecimento de etiquetas RFID). É extremamente importante selecionar o mecanismo de integração mais adequado para cada tarefa.

Opções de integração com 1C

Existem diferentes abordagens para implementar a integração com aplicativos 1C; qual escolher depende dos requisitos da tarefa.

  1. Baseado em implementação mecanismos de integraçãofornecido pela plataforma, sua própria API especializada no lado do aplicativo 1C (por exemplo, um conjunto de serviços Web ou HTTP que chamará aplicativos de terceiros para trocar dados com o aplicativo 1C). A vantagem dessa abordagem é a resistência da API a mudanças na implementação do lado do aplicativo 1C. A peculiaridade da abordagem é que é necessário alterar o código-fonte de uma solução 1C padrão, o que pode potencialmente exigir esforço ao mesclar códigos-fonte ao mudar para uma nova versão da configuração. Neste caso, uma nova funcionalidade progressiva pode ajudar - extensões de configuração. As extensões são, em essência, um mecanismo de plug-in que permite criar adições às soluções de aplicativos sem alterar as próprias soluções de aplicativos. Mover a API de integração para a extensão de configuração permitirá evitar dificuldades ao mesclar configurações ao migrar para uma nova versão de uma solução padrão.
  2. Utilizar mecanismos de integração de plataforma que fornecem acesso externo ao modelo de objeto da aplicação e não requerem modificação da aplicação ou criação de extensão. A vantagem desta abordagem é que não há necessidade de alterar o aplicativo 1C. Menos - se o aplicativo 1C foi aprimorado, podem ser necessárias melhorias no aplicativo integrado. Um exemplo dessa abordagem é o uso do protocolo OData para integração, implementado na plataforma 1C:Enterprise (mais sobre isso abaixo).
  3. Uso de protocolos de aplicação prontos implementados em soluções 1C padrão. Muitas soluções padrão da 1C e de parceiros implementam seus próprios protocolos de aplicação, focados em tarefas específicas, com base nos mecanismos de integração fornecidos pela plataforma. Ao usar esses mecanismos, não há necessidade de escrever código no lado do aplicativo 1C, porque Usamos os recursos padrão da solução de aplicativo. Do lado do aplicativo 1C, precisamos apenas fazer algumas configurações.

Mecanismos de integração na plataforma 1C:Enterprise

Importar/exportar arquivos

Suponha que nos deparemos com a tarefa de troca bidirecional de dados entre um aplicativo 1C e um aplicativo arbitrário. Por exemplo, precisamos sincronizar uma lista de produtos (diretório de nomenclatura) entre o aplicativo 1C e um aplicativo arbitrário.

Métodos de integração com 1C
Para resolver este problema, você pode escrever uma extensão que baixe o diretório Nomenclature em um arquivo de um determinado formato (texto, XML, JSON, ...) e possa ler este formato.

A plataforma implementa um mecanismo de serialização de objetos de aplicação em XML tanto diretamente, por meio dos métodos de contexto global WriteXML/ReadXML, quanto utilizando o objeto auxiliar XDTO (XML Data Transfer Objects).

Qualquer objeto no sistema 1C:Enterprise pode ser serializado em uma representação XML e vice-versa.

Esta função retornará uma representação XML do objeto:

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

Esta é a aparência da exportação do diretório Nomenclature para XML usando XDTO:

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

Simplesmente modificando o código, exportamos o diretório para JSON. Os produtos serão gravados em um array; Para variar, aqui está a versão em inglês da sintaxe:

&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

Então só falta transferir os dados para o consumidor final. A plataforma 1C:Enterprise suporta os principais protocolos de Internet HTTP, FTP, POP3, SMTP, IMAP, incluindo suas versões seguras. Você também pode usar serviços HTTP e/ou Web para transferir dados.

Serviços HTTP e web

Métodos de integração com 1C

Os aplicativos 1C podem implementar seus próprios serviços HTTP e web, bem como chamar serviços HTTP e web implementados por aplicativos de terceiros.

Interface REST e protocolo OData

A partir da versão 8.3.5, a plataforma 1C:Enterprise pode automaticamente crie uma interface REST para toda a solução de aplicação. Qualquer objeto de configuração (diretório, documento, cadastro de informações, etc.) pode ser disponibilizado para recebimento e modificação de dados via interface REST. A plataforma usa o protocolo como protocolo de acesso Dados O versão 3.0. A publicação dos serviços OData é realizada a partir do menu do Configurador “Administração -> Publicação em servidor web”, a caixa de seleção “Publicar interface OData padrão” deve estar marcada. Os formatos Atom/XML e JSON são suportados. Depois que a solução do aplicativo é publicada no servidor web, sistemas de terceiros podem acessá-la por meio da interface REST usando solicitações HTTP. Para trabalhar com o aplicativo 1C através do protocolo OData, não é necessária programação no lado 1C.

Então, um URL como http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура nos retornará o conteúdo do catálogo de Nomenclatura em formato XML - uma coleção de elementos de entrada (o título da mensagem foi omitido por questões de brevidade):

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

Adicionando a string “?$format=application/json” à URL, obtemos o conteúdo do catálogo de Nomenclatura no formato JSON (URL do formato 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 кВт, режимы работы: тепло/холод"
}, …

Fontes de dados externas

Métodos de integração com 1C
Em alguns casos, a troca de dados via fontes de dados externas pode ser a melhor solução. Fontes de dados externas são um objeto de configuração de aplicativo 1C que permite interagir com qualquer banco de dados compatível com ODBC, tanto para leitura quanto para gravação. Fontes de dados externas estão disponíveis no Windows e no Linux.

Mecanismo de troca de dados

Mecanismo de troca de dados destina-se tanto à criação de sistemas distribuídos geograficamente baseados em 1C:Enterprise, quanto à organização da troca de dados com outros sistemas de informação não baseados em 1C:Enterprise.

Este mecanismo é usado ativamente em implementações 1C e a gama de tarefas resolvidas com sua ajuda é muito ampla. Isso inclui a troca de dados entre os aplicativos 1C instalados nas filiais da organização, e a troca entre o aplicativo 1C e o site da loja online, e a troca de dados entre o aplicativo do servidor 1C e o cliente móvel (criado usando a plataforma móvel 1C:Enterprise), e muito mais.

Um dos conceitos-chave do mecanismo de troca de dados é o plano de troca. Um plano de troca é um tipo especial de objeto da plataforma de aplicação 1C, que determina, em particular, a composição dos dados que participarão da troca (quais diretórios, documentos, cadastros, etc.). O plano de troca também contém informações sobre os participantes da troca (os chamados nós de troca).
O segundo componente do mecanismo de troca de dados é o mecanismo de registro de alterações. Este mecanismo monitora automaticamente o sistema em busca de alterações nos dados que devem ser transferidos aos usuários finais como parte do plano de troca. Usando este mecanismo, a plataforma rastreia as alterações que ocorreram desde a última sincronização e permite minimizar a quantidade de dados transferidos durante a próxima sessão de sincronização.

A troca de dados ocorre por meio de mensagens XML de uma determinada estrutura. A mensagem contém dados que foram alterados desde a última sincronização com o nó e algumas informações de serviço. A estrutura da mensagem suporta numeração de mensagens e permite receber confirmação do nó destinatário de que as mensagens foram recebidas. Tal confirmação está contida em cada mensagem proveniente do nó receptor, na forma do número da última mensagem recebida. A numeração de mensagens permite que a plataforma entenda quais dados já foram transmitidos com sucesso ao nó receptor e evite a retransmissão, transmitindo apenas os dados que foram alterados desde que o nó remetente recebeu a última mensagem com um recibo dos dados recebidos pelo nó receptor. Este esquema operacional garante entrega garantida mesmo com canais de transmissão não confiáveis ​​e perda de mensagens.

Componentes Externos

Em vários casos, ao resolver problemas de integração, é necessário lidar com requisitos específicos, por exemplo, protocolos de interação, formatos de dados, que não estão previstos na plataforma 1C:Enterprise. Para tal gama de tarefas, a plataforma oferece tecnologia de componentes externos, que permite criar módulos plug-in dinamicamente que expandem a funcionalidade do 1C:Enterprise.

Um exemplo típico de tarefa com requisitos semelhantes seria a integração de uma solução de aplicação 1C com equipamentos de varejo, desde balanças até caixas registradoras e leitores de código de barras. Componentes externos podem ser conectados tanto no lado do servidor 1C:Enterprise quanto no lado do cliente (incluindo, mas não limitado a, o cliente web, bem como próxima versão da plataforma móvel 1C:Empresa). A tecnologia de componentes externos fornece uma interface de software (C++) bastante simples e intuitiva para a interação dos componentes com a plataforma 1C:Enterprise, que deve ser implementada pelo desenvolvedor.

As possibilidades que se abrem ao usar componentes externos são muito amplas. Você pode implementar a interação usando um protocolo específico de troca de dados com dispositivos e sistemas externos, construir algoritmos específicos para processamento de dados e formatos de dados, etc.

Mecanismos de integração desatualizados

A plataforma disponibiliza mecanismos de integração que não são recomendados para uso em novas soluções; eles são deixados por motivos de compatibilidade com versões anteriores e também caso a outra parte não consiga trabalhar com protocolos mais modernos. Um deles é trabalhar com arquivos no formato DBF (suportados na linguagem interna usando o objeto XBase).

Outro mecanismo de integração legado é o uso da tecnologia COM (disponível apenas na plataforma Windows). A plataforma 1C:Enterprise oferece dois métodos de integração para Windows usando tecnologia COM: servidor de automação e conexão externa. Eles são muito semelhantes, mas uma das diferenças fundamentais é que, no caso do servidor Automation, um aplicativo cliente 1C:Enterprise 8 completo é iniciado e, no caso de uma conexão externa, um COM em processo relativamente pequeno servidor é iniciado. Ou seja, se você trabalhar por meio do servidor Automation, poderá utilizar a funcionalidade da aplicação cliente e realizar ações semelhantes às ações interativas do usuário. Ao usar uma conexão externa, você só pode usar funções de lógica de negócios, e elas podem ser executadas tanto no lado do cliente da conexão, onde um servidor COM em processo é criado, quanto você pode chamar a lógica de negócios no servidor 1C:Enterprise lado.

A tecnologia COM também pode ser usada para acessar sistemas externos a partir do código do aplicativo na plataforma 1C:Enterprise. Neste caso, o aplicativo 1C atua como um cliente COM. Mas deve ser lembrado que esses mecanismos só funcionarão se o servidor 1C operar em ambiente Windows.

Mecanismos de integração implementados em configurações padrão

Formato de dados empresariais

Métodos de integração com 1C
Em diversas configurações 1C (lista abaixo), com base no mecanismo de troca de dados da plataforma descrito acima, é implementado um mecanismo pronto para troca de dados com aplicativos externos, que não requer alteração do código fonte das configurações (preparação para dados a troca é feita nas configurações das soluções do aplicativo):

  • "1C:ERP Gerenciamento Empresarial 2.0"
  • "Automação complexa 2"
  • "Contabilidade Empresarial", edição 3.0
  • "Contabilidade de uma empresa CORP", edição 3.0
  • "Varejo", edição 2.0
  • "Gestão Comercial Básica", edição 11
  • Gestão Comercial, Edição 11
  • “Salários e gestão de pessoal CORP”, edição 3

O formato usado para troca de dados é Dados empresariais, baseado em XML. O formato é orientado para negócios - as estruturas de dados nele descritas correspondem a entidades empresariais (documentos e elementos de diretório) apresentadas em programas 1C, por exemplo: ato de conclusão, ordem de recebimento de dinheiro, contraparte, item, etc.

A troca de dados entre o aplicativo 1C e um aplicativo de terceiros pode ocorrer:

  • através de um diretório de arquivos dedicado
  • via diretório FTP
  • por meio de um serviço web implantado no lado do aplicativo 1C. O arquivo de dados é passado como parâmetro para métodos web
  • via email

No caso de troca por meio de um serviço web, um aplicativo de terceiros iniciará uma sessão de troca de dados chamando os métodos web correspondentes do aplicativo 1C. Em outros casos, o iniciador da sessão de troca será o aplicativo 1C (colocando o arquivo de dados no diretório apropriado ou enviando o arquivo de dados para o endereço de e-mail configurado).
Também no lado 1C você pode configurar a frequência com que a sincronização ocorrerá (para opções com troca de arquivos por meio de diretório e e-mail):

  • de acordo com o cronograma (com uma frequência especificada)
  • manualmente; o usuário terá que iniciar manualmente a sincronização sempre que precisar

Reconhecendo mensagens

Os aplicativos 1C mantêm registros de mensagens de sincronização enviadas e recebidas e esperam o mesmo de aplicativos de terceiros. Isso permite que você use o mecanismo de numeração de mensagens descrito acima na seção “Mecanismo de troca de dados”.

Durante a sincronização, os aplicativos 1C transmitem apenas informações sobre as alterações que ocorreram nas entidades comerciais desde a última sincronização (para minimizar a quantidade de informações transferidas). Durante a primeira sincronização, o aplicativo 1C carregará todas as entidades comerciais (por exemplo, itens do livro de referência de itens) no formato EnterpriseData em um arquivo XML (já que são todas “novas” para o aplicativo externo). A aplicação de terceiros deve processar as informações do arquivo XML recebido de 1C e, durante a próxima sessão de sincronização, colocar no arquivo enviado a 1C, em uma seção XML especial, a informação de que a mensagem de 1C com um determinado número foi com sucesso recebido. A mensagem de recebimento é um sinal para o aplicativo 1C de que todas as entidades comerciais foram processadas com sucesso pelo aplicativo externo e não há mais necessidade de transmitir informações sobre elas. Além do recibo, um arquivo XML de uma aplicação de terceiros também pode conter dados para sincronização pela aplicação (por exemplo, documentos de venda de bens e serviços).

Após receber a mensagem de recebimento, o aplicativo 1C marca todas as alterações transmitidas na mensagem anterior como sincronizadas com sucesso. Somente alterações não sincronizadas em entidades comerciais (criação de novas entidades, alteração e exclusão de entidades existentes) serão enviadas ao aplicativo externo durante a próxima sessão de sincronização.

Métodos de integração com 1C
Ao transferir dados de um aplicativo externo para o aplicativo 1C, a imagem se inverte. A aplicação externa deve preencher a seção de recebimento do arquivo XML adequadamente e colocar os dados de negócios para sincronização de sua parte no formato EnterpriseData.

Métodos de integração com 1C

Troca de dados simplificada sem handshake

Para casos de integração simples, quando basta transferir informações de um aplicativo de terceiros para o aplicativo 1C e não é necessária a transferência reversa de dados do aplicativo 1C para um aplicativo de terceiros (por exemplo, integração de um online loja que transfere informações de vendas para 1C: Contabilidade), existe uma opção simplificada de trabalhar através de um serviço web (sem aviso de recebimento), que dispensa configurações na lateral do aplicativo 1C.

Soluções de integração personalizadas

Existe uma solução padrão “1C: Conversão de Dados”, que utiliza mecanismos de plataforma para conversão e troca de dados entre configurações 1C padrão, mas também pode ser usada para integração com aplicativos de terceiros.

Integração com soluções bancárias

Padrão "Banco Cliente", desenvolvido por especialistas 1C há mais de 10 anos, tornou-se um padrão da indústria na Rússia. O próximo passo nessa direção é a tecnologia Banco direto, que permite enviar documentos de pagamento ao banco e receber extratos do banco diretamente dos programas do sistema 1C:Enterprise pressionando um botão no programa 1C; não requer instalação e execução de programas adicionais no computador cliente.

Há também padrão para troca de dados em projetos salariais.

outro

Vale a pena mencionar protocolo de troca entre o sistema 1C:Enterprise e o site, padrão de troca de informações comerciais CommerceML (desenvolvido em conjunto com Microsoft, Intel, Price.ru e outras empresas), padrão para troca de dados para transações de aquisição.

Fonte: habr.com

Adicionar um comentário