Quais são os principais requisitos para aplicativos empresariais? Entre os mais importantes estão as seguintes tarefas:
- Facilidade de alteração/adaptação da lógica de operação do aplicativo às mudanças nas necessidades de negócios.
- Facilidade de integração com outros aplicativos.
A forma como a primeira tarefa é resolvida no 1C foi brevemente descrita na seção 'Customização e suporte'; voltaremos a esse tema interessante em um dos próximos artigos. Hoje, falaremos sobre a segunda tarefa, a integração. Tarefas de integração
As tarefas de integração podem ser variadas. Para algumas, uma simples troca interativa de dados é suficiente – por exemplo, para enviar ao banco uma lista de funcionários para a emissão de cartões de crédito para pagamento de salários. Para tarefas mais complexas, pode ser necessário um intercâmbio de dados totalmente automatizado, possivelmente com chamada à lógica de negócios de um sistema externo. Existem tarefas de natureza especializada, como a integração com hardware externo (por exemplo, equipamentos de ponto de venda, scanners móveis etc.) ou com sistemas legados ou altamente especializados (como sistemas de reconhecimento de etiquetas RFID). É extremamente importante escolher o mecanismo de integração mais adequado para cada tarefa.
Capacidades de integração com 1C
Existem diferentes abordagens para implementar a integração com aplicativos 1C; qual escolher depende dos requisitos da tarefa.
Implementação baseada em
- mecanismos de integração extensões de configuração . Extensões são, na essência, um mecanismo de plug-ins que permite a criação de complementos para soluções aplicacionais, sem modificar as próprias soluções. A exportação da API de integração para a extensão de configuração irá evitar complicações durante a fusão de configurações ao migrar para uma nova versão da solução padrão.
- O uso de mecanismos de integração da plataforma que fornecem acesso externo ao modelo de objeto do aplicativo e não requerem ajustes no aplicativo ou a criação de extensões. A vantagem dessa abordagem é que não é necessário alterar o aplicativo 1C. A desvantagem é que, se o aplicativo 1C foi modificado, ajustes podem ser necessários no aplicativo que está sendo integrado. Um exemplo dessa abordagem é a utilização do protocolo OData para integração, implementado no lado da plataforma 1C:Enterprise (mais detalhado abaixo).
- A utilização de protocolos aplicacionais prontos, implementados nas soluções padrão 1C. Muitas soluções padrão da 1C e de parceiros implementam, com base nos mecanismos de integração oferecidos pela plataforma, seus próprios protocolos aplicacionais, voltados para tarefas específicas. Ao usar esses mecanismos, não é necessário escrever código no lado do aplicativo 1C, uma vez que utilizamos as capacidades padrão da solução aplicacional. No lado do aplicativo 1C, apenas precisamos realizar certas configurações.
Mecanismos de integração na plataforma 1C:Enterprise
Importação/exportação de arquivos
Suponha que a tarefa em questão seja a troca bidirecional de dados entre o aplicativo 1C e um aplicativo arbitrário. Por exemplo, precisamos sincronizar a lista de produtos (catálogo de nomenclatura) entre o aplicativo 1C e um aplicativo arbitrário.

Para resolver essa tarefa, podemos escrever uma extensão que exporta o catálogo de nomenclatura para um arquivo de um formato específico (texto, XML, JSON, …) e que saiba ler esse formato.
Na plataforma, está implementado um mecanismo de serialização de objetos aplicacionais em XML, tanto diretamente, através dos métodos do contexto global EscreverXML/LerXML, quanto com o uso do 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á a representação do objeto em formato XML:
Função Objeto_Em_XML(Objeto)
RegistroXML = Novo RegistroXML();
RegistroXML.DefinirString();
EscreverXML(RegistroXML, Objeto);
Retornar RegistroXML.Fechar();
FimFunção
assim será a aparência da exportação do catálogo Nomenclatura para XML usando XDTO:
&NoServidor
Procedimento ExportarXMLNoServidor()
NovoSerializadorXDTO = SerializadorXDTO;
NovoRegistroXML = Novo RegistroXML();
NovoRegistroXML.AbrirArquivo("C:DataNomenclatura.xml", "UTF-8");
NovoRegistroXML.EscreverDeclaraçãoXML();
NovoRegistroXML.EscreverInícioElemento("CatálogoNomenclatura");
Seleção = Catálogos.Nomenclatura.Select();
Enquanto Seleção.Próximo() Faça
ObjetoNomenclatura = Seleção.ObterObjeto();
NovoSerializadorXDTO.EscreverXML(NovoRegistroXML, ObjetoNomenclatura, TipoDeAtribuiçãoXML.Explícito);
FimEnquanto;
NovoRegistroXML.EscreverFimElemento();
NovoRegistroXML.Fechar();
FimProcedimento
Com uma simples reformulação do código, exportamos o catálogo para JSON. Os produtos serão registrados em um array; para variar, apresentamos uma variante em inglês da sintaxe:
&NoServidor
Procedimento ExportarJSONNoServidor()
NovoSerializadorXDTO = SerializadorXDTO;
NovoEscritorJSON = Novo EscritorJSON();
NovoEscritorJSON.AbrirArquivo("C:DataNomenclatura.json", "UTF-8");
NovoEscritorJSON.EscreverInícioObjeto();
NovoEscritorJSON.EscreverNomePropriedade("CatálogoNomenclatura");
NovoEscritorJSON.EscreverInícioArray();
Seleção = Catálogos.Nomenclatura.Select();
Enquanto Seleção.Próximo() Faça
ObjetoNomenclatura = Seleção.ObterObjeto();
NovoEscritorJSON.EscreverInícioObjeto();
NovoEscritorJSON.EscreverNomePropriedade("Nomenclatura");
NovoSerializadorXDTO.EscreverJSON(NovoEscritorJSON, ObjetoNomenclatura, TipoDeAtribuiçãoXML.Implícito);
NovoEscritorJSON.EscreverFimObjeto();
FimEnquanto;
NovoEscritorJSON.EscreverFimArray();
NovoEscritorJSON.EscreverFimObjeto();
NovoEscritorJSON.Fechar();
FimProcedimento
Depois, só resta 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. Também é possível usar HTTP e/ou Web Services para transferência de dados.
Serviços HTTP e Web

Aplicativos 1C podem implementar seus próprios serviços HTTP e Web, assim 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 para toda a solução de aplicativo. Qualquer objeto de configuração (catálogo, documento, registro de informações, etc.) pode ser disponibilizado para obtenção e modificação de dados através da interface REST. Como protocolo de acesso, a plataforma usa o protocolo versão 3.0. A publicação de serviços OData é feita a partir do menu do Configurador «Administração -> Publicação no servidor web», a opção «Publicar interface padrão OData» deve estar marcada. Os formatos atom/XML e JSON são suportados. Após a solução aplicada ser publicada no servidor web, sistemas externos podem acessá-la através da interface REST usando solicitações HTTP. Para trabalhar com o aplicativo 1C através do protocolo OData, programação do lado do 1C não é necessária.
Assim, um URL do tipo http:////odata/standard.odata/Catalog_Номенклатура retornará o conteúdo do catálogo Номенклатура em formato XML — uma coleção de elementos entry (o cabeçalho da mensagem foi omitido por brevidade):
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')
2016-06-06T16:42:17
35d1f6e4-289b-11e6-8ba4-e03f49b16074
AAAAAgAAAAA=
false
000000001
Ar-condicionado Mitsubishi
Potência 2,5 kW, modos de operação: aquecimento/frio
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
Adicionando a string «?$format=application/json» ao URL, obteremos o conteúdo do catálogo Номенклатура em formato JSON (URL do tipo 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": "Ar-condicionado Mitsubishi",
"Описание": "Potência 2,5 kW, modos de operação: aquecimento/frio"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Ar-condicionado Daikin",
"Описание": "Potência 3 kW, modos de operação: aquecimento/frio"
}, …
Fontes de dados externas

Em alguns casos, a troca de dados através de pode ser a solução ideal. Fontes de dados externas são objetos de configuração aplicacional 1C que permitem a interação com qualquer banco de dados compatível com ODBC, tanto para leitura quanto para gravação. Fontes de dados externas estão disponíveis tanto no Windows quanto no Linux.
Mecanismo de intercâmbio de dados
destina-se tanto à criação de sistemas territorialmente distribuídos baseados em 1C:Enterprise quanto à organização do intercâmbio de dados com outros sistemas de informação que não são baseados em 1C:Enterprise.
Esse mecanismo é amplamente utilizado em implementações 1C, e a gama de tarefas que pode resolver é bastante ampla. Inclui a troca de dados entre aplicações 1C instaladas nas filiais da organização, bem como a troca entre aplicação 1C e o site da loja virtual, e o intercâmbio de dados entre a aplicação 1C e o cliente móvel (criado com a plataforma móvel 1C:Enterprise), entre muitos outros.
Um dos conceitos-chave no mecanismo de intercâmbio de dados é o plano de intercâmbio. O plano de intercâmbio é um tipo especial de objeto na plataforma 1C que define, entre outras coisas, o conjunto de dados que participarão da troca (quais diretórios, documentos, registros, etc.). O plano de intercâmbio também contém informações sobre os participantes da troca (os chamados nós de troca).
A segunda componente do mecanismo de intercâmbio de dados é o mecanismo de registro de mudanças. Este mecanismo rastreia automaticamente as mudanças de dados no sistema que devem ser transmitidas aos destinatários finais dentro do plano de intercâmbio. Com este mecanismo, a plataforma acompanha as alterações ocorridas desde a última sincronização, permitindo minimizar o volume de dados transmitidos durante a próxima sessão de sincronização.
A troca de dados ocorre por meio de mensagens XML de estrutura específica. A mensagem contém dados que mudaram desde a última sincronização com o nó, além de algumas informações de serviço. A estrutura das mensagens suporta a numeração de mensagens e permite receber confirmações do nó receptor sobre o recebimento das mensagens. Essa confirmação está contida em cada mensagem recebida do nó receptor, na forma do número da última mensagem recebida. A numeração das mensagens permite que a plataforma entenda quais dados já foram transmitidos com sucesso ao nó receptor e evita retransmissões, enviando apenas os dados que mudaram desde a última mensagem recebida pelo nó emissor com o recibo dos dados recebidos pelo nó receptor. Com esse esquema de trabalho, a entrega é garantida mesmo em canais de transmissão não confiáveis e na perda de mensagens.
Componentes externos
Em alguns casos, ao resolver problemas de integração, é necessário enfrentar requisitos específicos, como protocolos de interação e formatos de dados, com os quais a plataforma 1C:Enterprise não está preparada para trabalhar. Para esse tipo de tarefa, a plataforma prevê , que permite criar módulos conectáveis dinamicamente, ampliando a funcionalidade do 1C:Enterprise.
Um exemplo típico de tarefa com tais requisitos é a integração da solução aplicada 1C com equipamentos comerciais, desde balanças até caixas registradoras e leitores de código de barras. Os componentes externos podem ser conectados tanto do lado do servidor do 1C:Enterprise quanto no lado do cliente (incluindo, também, o cliente web, bem como 1C:Enterprise). A tecnologia de componentes externos proporciona uma interface de programação (C++) de interação simples e compreensível entre o componente e a plataforma 1C:Enterprise, que deve ser implementada pelo desenvolvedor.
As possibilidades abertas pelo uso de componentes externos são bastante amplas. É possível implementar a interação por meio de um protocolo específico de troca de dados com dispositivos e sistemas externos, incorporar algoritmos específicos de processamento de dados e formatos de dados, etc.
Mecanismos de integração obsoletos
Na plataforma, há mecanismos de integração disponíveis que não são recomendados para uso em novas soluções; eles foram mantidos por motivos de compatibilidade reversa e para o caso de outra parte não conseguir trabalhar com protocolos mais modernos. Um deles é o trabalho com arquivos no formato DBF (suportado na linguagem embutida através do objeto XBase).
Outro mecanismo de integração obsoleto é o uso da tecnologia COM (disponível apenas na plataforma Windows). A plataforma 1C:Enterprise fornece duas maneiras de integração para Windows que utilizam a tecnologia COM: Automation-server e Conexão externa. Eles são muito semelhantes, mas uma das principais diferenças é que, no caso do Automation-server, um aplicativo cliente completo 1C:Enterprise 8 é iniciado, enquanto no caso da conexão externa, um pequeno COM-server intra-processo é iniciado. Ou seja, ao trabalhar através do Automation server, é possível utilizar a funcionalidade do aplicativo cliente, executando ações semelhantes às ações interativas do usuário. Ao usar a conexão externa, apenas funções de lógica de negócios podem ser utilizadas, podendo ser executadas tanto do lado do cliente da conexão, onde o COM-server intra-processo é criado, quanto chamando a lógica de negócios do lado do servidor 1C:Enterprise.
Além disso, a tecnologia COM pode ser usada para interagir com sistemas externos a partir do código do aplicativo na plataforma 1C:Enterprise. Nesse caso, o aplicativo 1C atua como cliente COM. Mas deve-se lembrar que esses mecanismos funcionarão apenas se o servidor 1C operar em um ambiente Windows.
Mecanismos de integração implementados nas configurações padrão
Formato EnterpriseData

Em várias configurações 1C (lista abaixo), com base no mecanismo de intercâmbio de dados da plataforma descrito acima, um mecanismo pronto de troca de dados com aplicativos externos foi implementado, que não requer alteração do código-fonte das configurações (a preparação para a troca de dados é feita nas configurações das soluções aplicacionais):
- «1C:ERP Gestão Empresarial 2.0»
- «Automação Completa 2»
- «Contabilidade Empresarial», edição 3.0
- «Contabilidade Empresarial 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
Para a troca de dados, utiliza-se o formato , baseado em XML. O formato é orientado para negócios – as estruturas de dados descritas correspondem a entidades de negócios (documentos e elementos de diretórios) apresentados nos programas 1C, por exemplo: ato de serviços prestados, recibo de caixa, contraparte, nomenclatura, etc.
A troca de dados entre o aplicativo 1C e um aplicativo externo pode ocorrer:
- por meio de um diretório de arquivos dedicado
- por meio de um diretório FTP
- por meio de um serviço web implantado no aplicativo 1C. O arquivo com os dados é enviado como parâmetro dos métodos web
- por e-mail
No caso de troca via serviço web, o aplicativo externo iniciará a sessão de troca de dados chamando os métodos web correspondentes do aplicativo 1C. Nos demais casos, o iniciador da sessão de troca será o aplicativo 1C (colocando o arquivo com dados no diretório correspondente ou enviando o arquivo com dados para o endereço de e-mail configurado).
Também no lado do 1C, é configurado com que frequência a sincronização ocorrerá (para opções com troca de arquivos via diretório e e-mail):
- de acordo com um cronograma (com uma periodicidade definida)
- manualmente; o usuário deve iniciar manualmente a sincronização sempre que precisar
Confirmação de mensagens
Os aplicativos 1C mantêm registro das mensagens de sincronização enviadas e recebidas e esperam o mesmo dos aplicativos externos. Isso permite utilizar o mecanismo de numeração de mensagens, descrito acima na seção «Mecanismo de troca de dados».
As aplicações 1C durante a sincronização transmitem apenas informações sobre as alterações que ocorreram nas entidades de negócios desde a última sincronização (para minimizar o volume de dados transmitidos). Na primeira sincronização, a aplicação 1C exportará todas as entidades de negócios (como os itens do catálogo de nomenclatura) em formato EnterpriseData em um arquivo XML (uma vez que todas são consideradas "novas" para a aplicação externa). A aplicação externa deve processar as informações do arquivo XML recebido da 1C e, na próxima sessão de sincronização, incluir no arquivo enviado à 1C, em uma seção especial do XML, a informação de que a mensagem da 1C com um número específico foi recebida com sucesso. A mensagem de recibo é um sinal para a aplicação 1C de que todas as entidades de negócios foram processadas com sucesso pela aplicação externa e que não é mais necessário transmitir informações sobre elas. Além do recibo, o arquivo XML da aplicação externa também pode conter dados para sincronização do lado da aplicação (como documentos de venda de produtos e serviços).
Após receber a mensagem de recibo, a aplicação 1C marca todas as alterações enviadas na mensagem anterior como sincronizadas com sucesso. Apenas alterações não sincronizadas nas entidades de negócios (criação de novas entidades, alteração e exclusão das existentes) serão enviadas para a aplicação externa na próxima sessão de sincronização.

Ao transferir dados da aplicação externa para a aplicação 1C, a situação muda para o oposto. A aplicação externa deve preencher a seção de recibo no arquivo XML de forma adequada e incluir os dados comerciais para sincronização do seu lado no formato EnterpriseData.

Troca simplificada de dados sem recibos
Para casos de integração simples, onde é suficiente apenas transmitir informações da aplicação externa para a aplicação 1C, e a transferência de dados da aplicação 1C para a aplicação externa não é necessária (por exemplo, a integração de uma loja online que transmite informações sobre vendas para "1C:Contabilidade"), existe uma opção simplificada de operação através de um serviço web (sem recibos), que não requer configurações no lado da aplicação 1C.
Soluções de integração especializadas
Existe uma solução padrão chamada "1C: Conversão de Dados", que utiliza os mecanismos da plataforma para conversão e troca de dados entre configurações padrão do 1C, mas também pode ser utilizada para integração com aplicativos de terceiros.
Integração com soluções bancárias
Padrão , desenvolvido por especialistas do 1C há mais de 10 anos, tornou-se, na prática, o padrão da indústria na Rússia. O próximo passo nessa direção é a tecnologia , que permite enviar documentos de pagamento para o banco e receber extratos bancários diretamente dos programas do sistema "1C: Enterprise" com o toque de um botão no programa "1C"; para isso, não é necessária a instalação e execução de programas adicionais no computador do cliente.
Há também .
Outros
São dignos de menção , o padrão de troca de informações comerciais (desenvolvido em conjunto com Microsoft, Intel, Price.ru e outras empresas), .
Fonte: habr.com
