Construindo um aplicativo móvel 1s. Como tropecei na configuração do "construtor de aplicativos móveis". Um exemplo de desenvolvimento de um aplicativo móvel para um mensageiro de loja online usando o "Mobile Application Builder"

Construindo um aplicativo móvel 1s. Como tropecei na configuração do "construtor de aplicativos móveis". Um exemplo de desenvolvimento de um aplicativo móvel para um mensageiro de loja online usando o "Mobile Application Builder"

Este artigo é para quem tem interesse no cliente mobile. Veremos como instalar um cliente móvel no Android, conectar a depuração e montar um aplicativo apk na configuração “Mobile Application Builder”.

Finalmente, apareceu a plataforma móvel de teste 8.3.12, e agora podemos testar o funcionamento do cliente móvel. Não sei sobre você, mas muitos desenvolvedores que conheço estão esperando por isso desde a publicação do artigo sobre “1C: Através do Espelho” (cliente móvel).

Presumo que você esteja familiarizado com a instalação de um aplicativo móvel e do construtor de aplicativos móveis, e também que já tenha Android SDK, Apache Ant, etc. Já existem muitos artigos sobre este assunto.

Para nossos experimentos, vamos pegar a configuração de demonstração do “Aplicativo Gerenciado” e, primeiro, tentar conectá-lo a um cliente móvel pronto. No meu caso, a distribuição do cliente é o arquivo “1cem-client-arm.apk”. A capacidade de instalar aplicativos de fontes desconhecidas deve primeiro ser habilitada em seu smartphone. Para mim é assim:

O cliente mobile é análogo ao cliente web, portanto, para acessar o banco de dados, ele deve estar publicado no servidor web. Tudo é padrão aqui, eu publico em um servidor web IIS chamado “demo”. Meu banco de dados é baseado em arquivo, então preciso conceder direitos de diretório ao usuário IUSR. Fico feliz que o próprio sistema tenha me lembrado disso.

Conecte o banco de dados no cliente móvel:

Claro que não foi possível entrar no banco de dados de imediato. A questão toda é que o Administrador abre o processamento para trabalhar com e-mail e tenta definir um ícone para a barra de tarefas, que não está presente no cliente mobile. Como esta funcionalidade também não está disponível no cliente web, o código é enquadrado nas diretivas de compilação “#If Not WebClient Then”. Precisamos apenas encontrar todos os locais onde esta diretiva é usada e alterá-la para “#If Not WebClient AND Not MobileClient Then”. Para começar, isso é suficiente e finalmente podemos ver o cliente móvel funcionando. A interface de comando é semelhante a esta:

Aqui está a lista de contrapartes:

É claro que estes não são todos os locais que precisam ser adaptados para o cliente móvel. Você pode verificar a configuração usando “Menu principal - Configuração - ---Verificar configuração”:

Encontrei 84 erros, incluindo objetos de metadados não suportados. Mais aqueles três lugares no código que já limitei com diretivas. Portanto, você ainda terá que trabalhar na adaptação, mas certamente não é o mesmo que escrever um aplicativo móvel do zero.

O lançamento para outras funções ocorre da mesma forma, basta definir o direito de lançamento do cliente móvel.

Se não entendermos qual é o erro, a depuração nos ajudará. Está disponível no cliente móvel, mas apenas a depuração HTTP é usada. Eu tenho um banco de dados de arquivos, então usarei o servidor de depuração local (“Ferramentas - Opções - Depuração”) e configurarei uma conexão automática para o cliente móvel (“Depuração - Conexão - Conexão automática”):

Especifique os parâmetros e pronto:

A configuração do cliente apk pré-preparado da 1C está concluída.

Agora vamos construir nosso apk usando o construtor de aplicativos móveis. Francamente, passei várias horas tentando construir o aplicativo pela primeira vez. A montagem prosseguiu, mas uma lista vazia de bancos de dados foi aberta.

E assim, temos um arquivo da versão mobile da plataforma. Nós o carregamos no diretório “Versões móveis”:

Nas configurações do coletor, um item separado apareceu para SDK 26 e superior (se você, como eu, não atualiza há muito tempo, inicie o SDK Manager e baixe novos pacotes):

Em seguida você precisa preparar um arquivo de configuração. Foi com essa etapa que tive problemas logo no início. Aí abri a documentação e tudo ficou um pouco mais claro. O guia do desenvolvedor diz o seguinte sobre isso: “Cada configuração que pode funcionar no cliente móvel contém algumas informações auxiliares que permitem rastrear a substituição da configuração”.
O arquivo de configuração deve ser assinado. Neste caso, para cada configuração é gerada sua própria chave privada, e a chave pública (campo DSAKey) é carregada no arquivo 1cemca.xml, com o qual é comparada a assinatura da configuração.

Para gerar chave e assinatura, acesse as propriedades da configuração “Assinatura do cliente móvel” (imediatamente nas permissões necessárias, caso suas propriedades estejam divididas por categoria e não em ordem alfabética) e veja as configurações de assinatura:

Primeiro, criamos uma chave privada e a escondemos de espiões e inimigos. A seguir, criamos uma assinatura de configuração. Para o futuro, o manual aconselha ir ao “Menu Principal - Configuração - Cliente Móvel - Configurar a utilização do cliente móvel”. Na caixa de diálogo, marque a caixa de seleção “Verificar assinatura do cliente móvel ao atualizar a configuração do banco de dados” e clique no botão “OK”. A julgar pelo manual, a assinatura mudará se alterarmos a composição ou os nomes dos tipos de objetos de metadados, bem como os nomes e/ou composição das chaves de entrada de registro. Aqueles. alterar os formulários definitivamente não afeta a assinatura e, a julgar pela descrição, altera a composição dos detalhes dos diretórios e documentos existentes (mas isso não é certo).

A assinatura está pronta, podemos continuar. Deixe-me dizer imediatamente que os processos em segundo plano não estão disponíveis no cliente móvel, portanto, eles precisam ser desabilitados nas permissões do cliente móvel. O compartilhamento de arquivos de um PC também não está disponível. Além disso, desabilitei a geoposicionamento para que durante a montagem não houvesse erros por falta de chave para trabalhar com mapas. Acabei com a seguinte lista de permissões:

Um exemplo de desenvolvimento de um aplicativo móvel em 1C:Enterprise 8.3 para o trabalho de um mensageiro de loja online na entrega de mercadorias aos clientes. A configuração "Mobile Application Builder" foi utilizada para desenvolvimento.

Um exemplo de desenvolvimento de um aplicativo móvel para um mensageiro de loja online usando o "Mobile Application Builder"

Assim, desenvolvemos um aplicativo mobile para o trabalho de um entregador de loja online na entrega de mercadorias aos clientes. Claro, é bastante esquemático e não pode cobrir todas as tarefas que realmente surgem durante o trabalho de um mensageiro. Mas implementa todas as funcionalidades que queríamos mostrar neste livro.

Agora, após a conclusão do desenvolvimento, basta montar nosso aplicativo mobile em um arquivo e baixá-lo para o tablet.

Embora usaremos uma configuração especial para montagem Construtor de aplicativos móveis, que facilita o processo de montagem, ainda não é fácil nem rápido de fazer pela primeira vez. Portanto, você precisa ser paciente e seguir com atenção e atenção a sequência de ações descritas a seguir.


Onde baixar e como instalar o Mobile Application Builder

Configuração Construtor de aplicativos móveis fornecido como parte da plataforma móvel. No primeiro capítulo do livro na seção “Plataforma móvel 1C: Enterprise” descompactamos o arquivo com a plataforma móvel no computador. Neste diretório existe uma pasta MobileAppMaker com um arquivo Setup.exe para instalação do modelo de configuração. Vamos executar este arquivo e instalar o modelo de configuração no diretório de modelos “1C:Enterprise” (Fig. 5.1).

Arroz. 5.1. Instalando o modelo de configuração do Mobile Application Builder

Em seguida, adicionaremos uma nova base de informações à lista de bases de informações “1C:Enterprise” e criaremos uma base de informações a partir do modelo criado anteriormente (Fig. 5.2).

Arroz. 5.2. Criando a base de informações “Mobile Application Builder” a partir de um modelo

Em seguida, abriremos esse banco de dados no configurador e adicionaremos o usuário Administrador com as propriedades de Autenticação 1C:Enterprise, as funções de Administrador e Usuário e o idioma Russo (Fig. 5.3).

Arroz. 5.3. Criando um usuário "Administrador"

Vamos salvar a configuração, fechá-la e abri-la no modo 1C:Enterprise como usuário Administrador. Agora este banco de dados está vazio. Devemos preenchê-lo com todos os parâmetros necessários para a montagem, que serão salvos e utilizados para montagens posteriores.

Primeiro (se o banco de dados estiver vazio), as informações gerais de ajuda sobre o construtor de aplicativos móveis são abertas na página inicial do aplicativo. Você também pode acessá-lo no menu principal – Menu Principal > Ajuda > Conteúdo da Ajuda > Mobile Application Builder. Além disso, páginas de ajuda adicionais sobre a montagem de aplicativos móveis são abertas a partir de formulários de configuração individuais (Fig. 5.4).

Arroz. 5.4. Ajuda de configuração do Mobile Application Builder


Configurando parâmetros de solução de aplicativo

Primeiro temos que definir as configurações do coletor. Para fazer isso, no menu Ferramentas, acesse o item Configurações do aplicativo. Não iremos construir um aplicativo móvel para Apple agora, então deixaremos a caixa de seleção correspondente vazia.

No formulário de configurações, precisamos preencher a tabela Diretórios de componentes nos computadores participantes do processo de construção, que conterá os caminhos para os componentes de software necessários para construir o aplicativo móvel. Para fazer isso, clique no botão Criar acima desta tabela (Fig. 5.5).

Arroz. 5.5. Criando uma entrada de tabela “Catálogos de componentes...”

O formulário Caminhos de componentes será aberto. Ao ligar para a ajuda deste formulário, você pode ver links para obter componentes de software e suas descrições (Fig. 5.6).

Arroz. 5.6. Ajuda para descrever caminhos para componentes

Primeiro você precisa instalar o Java SDK e no campo JDK indicar o diretório no qual este componente está instalado. O Java SDK pode ser obtido em: http://www.oracle.com/technetwork/java/javase/downloads/index.html. Recomenda-se baixar o Java Platform Package (JDK).

Na página que se abre, na parte superior você precisa clicar no botão Download (Fig. 5.7).

Arroz. 5.7. Obtendo o Java SDK

Na próxima página você precisa aceitar o contrato de licença (marque a caixa Aceitar Contrato de Licença) e clicar no link com a distribuição desejada na coluna Download (para Windows de 64 bits - este é o arquivo jdk-8u60-windows-x64. exe), Fig. 5.8.

Arroz. 5.8. Obtendo o Java SDK

O instalador resultante precisa ser iniciado e o Java SDK instalado, por exemplo, no diretório: C:\Program Files\Java\jdk1.8.0_60 (Fig. 5.9).

Arroz. 5.9. Instalando Java SDK

Em seguida, esse caminho deve ser especificado no campo JDK do formulário para definir caminhos para componentes do aplicativo Mobile Application Builder (Fig. 5.10).

Arroz. 5.10. Configurando caminhos para componentes do aplicativo Mobile Application Builder

No próximo campo do formulário de configuração, Diretório de trabalho e cache do construtor, você precisa especificar qualquer diretório em latim no qual o programa de construção colocará os arquivos de serviço. O usuário em cujo nome os aplicativos móveis serão construídos deve ter direitos totais para este diretório (Fig. 5.11).

Arroz. 5.11. Configurando caminhos para componentes do aplicativo Mobile Application Builder

No campo Android SDK, especifique o caminho para o diretório onde o SDK Manager está localizado. Instalamos o Android SDK no Capítulo 1, na seção “Android SDK” (Fig. 5.12).

Arroz. 5.12. Configurando caminhos para componentes do aplicativo Mobile Application Builder

Então você precisa instalar o Apache ANT e no campo Apache ANT especificar o diretório no qual este componente está instalado. O Apache ANT é necessário para construir um aplicativo móvel para o sistema operacional Android. Apache Ant pode ser obtido.

Nesta página precisamos baixar o arquivo apache-ant-1.9.6-bin.zip (Fig. 5.13).

Arroz. 5.13. Obtendo o Apache ANT

Descompacte este arquivo em seu computador e especifique o caminho para ele na forma de configuração de caminhos para componentes (Fig. 5.14).

Arroz. 5.14. Configurando caminhos para componentes do aplicativo Mobile Application Builder

Então você precisa instalar o sistema PuTTY e no campo PuTTY especificar o diretório no qual este componente está instalado. PuTTY pode ser obtido.

PuTTY é usado se você estiver criando um aplicativo móvel para Apple. Para construir aplicativos móveis, são necessários os utilitários pscp.exe e plink.exe. Por precaução, vamos baixar o pacote de instalação completo putty-0.65-installer.exe (Fig. 5.15).

Arroz. 5.15. Obtendo PuTTY

O instalador resultante precisa ser iniciado e o PuTTY instalado, por exemplo, no diretório: C:\Program Files (x86)\PuTTY (Fig. 5.16).

Arroz. 5.16. Instalando PuTTY

A seguir indicamos o caminho obtido ao instalar o PuTTY no formulário de configuração de caminhos para componentes (Fig. 5.17).

Arroz. 5.17. Configurando caminhos para componentes do aplicativo Mobile Application Builder

Isso conclui a configuração dos caminhos dos componentes. Clique em Gravar e Fechar.


Configurando opções do provedor

Agora precisamos definir as configurações do provedor. Para isso, chame o item Editar parâmetros do fornecedor do menu Ferramentas.

Será aberto o formulário Fornecedores, no qual você deverá especificar um nome arbitrário do fornecedor na aba Parâmetros Gerais, e também definir o Prefixo de ID do Aplicativo. Este campo deve ser preenchido em latim e iniciar com a linha “com”. As regras de preenchimento deste campo encontram-se na ajuda contextual, que pode ser aberta clicando no botão com o sinal “?”.

Então você precisa observar para quais sistemas operacionais o aplicativo móvel está sendo construído. No nosso caso, marque a caixa de seleção Para sistema operacional Android.

Para trabalhar com notificações push através do serviço auxiliar “1C:Enterprise” iremos especificar os parâmetros de acesso ao serviço. Para fazer isso, clique no botão Adicionar acima da tabela na parte inferior do formulário do fornecedor. Na janela que se abre, Configurações de acesso ao serviço auxiliar “1C:Enterprise”, marque a opção Cadastrar-se em – usuário selecionado, selecione o usuário coletor – Administrador e indique o endereço de e-mail e senha com os quais nos registramos anteriormente no serviço quando teste de trabalho com notificações push. Clique no botão Salvar e Fechar. Além disso, você pode se registrar no serviço 1C:Enterprise diretamente deste formulário usando o botão Registrar-se no serviço 1C:Enterprise, caso isso ainda não tenha sido feito (Fig. 5.18).

Arroz. 5.18. Definir configurações do provedor de aplicativos do Mobile App Builder

Além disso, você pode acessar a janela de configuração de parâmetros de acesso ao serviço 1C:Enterprise no menu Ferramentas, item Parâmetros de acesso ao serviço 1C:Enterprise.

Depois disso, você precisa preencher o grupo de campos Chave do desenvolvedor na guia Configurações do sistema operacional Android. Para fazer isso, primeiro crie uma chave de desenvolvedor clicando no link Criar uma chave de desenvolvedor. No formulário Criar uma chave de desenvolvedor que se abre, preencha os campos aleatoriamente (para o campo País você precisa especificar o código da Rússia no padrão ISO - ru) e clique no botão Gerar chave (Fig. 5.19).

Arroz. 5.19. Definir configurações do provedor de aplicativos do Mobile App Builder

Depois disso, os campos dos parâmetros-chave do desenvolvedor serão preenchidos automaticamente (Fig. 5.20).

Arroz. 5.20. Definir configurações do provedor de aplicativos do Mobile App Builder

O valor no campo SHA1 Hash da chave do desenvolvedor será usado no futuro para obter a chave para trabalhar com o Google Maps. Este valor é necessário se o aplicativo móvel utilizar ferramentas de geolocalização na plataforma Android.

Isto completa a configuração dos parâmetros do fornecedor. Clique em Gravar e Fechar.


Carregando a plataforma móvel

Agora precisamos baixar a plataforma móvel 1C:Enterprise, sob a qual o aplicativo móvel montado será executado. Pode haver várias versões da plataforma móvel, mas elas não devem ser inferiores à versão 8.3.4.

O diretório Mobile Platforms destina-se ao download e armazenamento de diferentes versões da plataforma móvel. Uma entrada separada deve ser criada para cada versão de plataforma neste diretório.

No painel de comando do aplicativo, abra o diretório Plataformas móveis e clique no botão Criar. Depois disso, aparecerá uma caixa de diálogo de seleção de arquivos na qual você precisa selecionar o arquivo com o arquivo da plataforma móvel mobile.zip, que salvamos no computador ao receber a plataforma móvel no primeiro capítulo do livro, na seção “Plataforma móvel 1C: Empresa”. Selecione-o e clique no botão Abrir.

Se a plataforma for carregada com sucesso, será aberto o formulário para criação de um item de diretório Plataformas móveis, no qual os campos Versão da plataforma móvel e Nome serão preenchidos automaticamente, e aparecerá a caixa de seleção Arquivos da plataforma móvel carregados (Fig. 5.21).

Clique em Gravar e Fechar.


Carregando configuração móvel

Agora precisamos carregar a configuração móvel da Courier Online Store que desenvolvemos. Vamos abrir esta configuração no configurador. Na paleta de propriedades de configuração, defina as propriedades Vendor – myfirm e Version – 1.0.0 (Fig. 5.22).

Arroz. 5.22. Propriedades da configuração móvel da “Loja Online Courier”

Em seguida, faremos o upload desta configuração para um arquivo executando o comando do configurador Configuração > Aplicativo móvel > Gravar no arquivo...

O livro de referência de configurações móveis é usado para fazer download e armazenar diferentes versões de configurações de aplicativos móveis. O diretório assume uma estrutura de dois níveis: os grupos descrevem soluções de aplicativos e os elementos nos grupos representam diferentes versões das configurações dessas soluções de aplicativos. Para baixar uma nova versão da configuração, é necessário ir ao grupo correspondente à solução da aplicação e criar um novo elemento neste grupo.

No painel de comando da aplicação, abra o diretório Configurações Móveis e clique no botão Criar grupo com o nome da nossa configuração Loja Online Courier (Fig. 5.23).

Arroz. 5.23. Criando um grupo de diretórios "Configurações móveis"

Então neste grupo criaremos um novo elemento de diretório.

Depois disso, uma caixa de diálogo de seleção de arquivo aparecerá na qual você precisa selecionar o arquivo 1cema.xml no qual acabamos de salvar nossa configuração móvel. Selecione-o e clique no botão Abrir.

Se a configuração for carregada com sucesso, todos os campos do formulário serão preenchidos automaticamente e não deverão ser alterados manualmente. A tabela de permissões indicará todas as permissões para o aplicativo móvel trabalhar com multimídia, geoposicionamento, notificações, etc., que definimos durante o seu desenvolvimento. Além disso, serão exibidas mensagens sobre a impossibilidade de trabalhar com calendários e contatos, permissões para as quais não definimos (Fig. 5.24).


Clique em Gravar e Fechar.


Descrição dos parâmetros do aplicativo móvel

Agora precisamos descrever os parâmetros do aplicativo móvel que coletaremos no livro de referência de aplicativos móveis.

O livro de referência deve ter uma estrutura de dois níveis, onde o grupo descreve os principais parâmetros de montagem e o elemento de grupo especifica os parâmetros de montagem para uma versão específica do aplicativo móvel. Um grupo separado deve ser criado para cada aplicativo móvel e para cada versão do aplicativo móvel neste grupo você deve criar seu próprio elemento.

No painel de comando do aplicativo, abra o diretório Aplicativos Móveis e clique no botão Criar grupo. No formulário que se abre, defina o nome do aplicativo móvel Courier Online Store.

Temos apenas um fornecedor - Minha empresa. Ele será preenchido automaticamente. A caixa de seleção Para sistema operacional Android também estará marcada. Deixe o campo Plataforma móvel vazio - a versão mais recente da plataforma será usada automaticamente durante a montagem.

No campo ID da solução, insira uma string arbitrária em latim. O próximo campo será preenchido automaticamente (Fig. 5.25).

Arroz. 5.25. Criando um grupo de diretórios “Aplicativos móveis”

Após isso, o campo Parâmetro para obtenção de chave para trabalhar com Google Maps será preenchido automaticamente (neste campo é inserido o valor do parâmetro Hash SHA1 da chave do desenvolvedor do fornecedor Minha Empresa do formulário de configurações do fornecedor, ver Fig. 5.20 + linha identificadora da solução) - precisaremos disso para obter a chave para trabalhar com o Google Maps. Para isso, devemos entrar em contato com o serviço Google e, após receber a chave, anotá-la no campo Chave para trabalhar com Google Maps.

O desenvolvimento de aplicações móveis está sempre associado à necessidade de aprender tecnologias adicionais. E se reconsiderarmos a questão e usarmos ferramentas já familiares?

Pela primeira vez, a empresa 1C tentou entrar mercado de desenvolvimento móvel no ano de 2006. Naquela época, havia uma verdadeira pressa em automatizar o trabalho dos funcionários remotos por meio de PDAs. Novos programas para resolver esses problemas surgiram como cogumelos, e um fornecedor como a 1C, com produtos de sucesso para automatizar diversas áreas de negócios, não poderia perder a chance de entrar em um mercado lucrativo.

Em meados de 2006, a empresa apresentou o lançamento de um novo produto com o nome promissor “1C:Enterprise 8. Extensão para computadores portáteis”. Os desenvolvedores 1C, que viram as perspectivas da 8ª plataforma, começaram a esperar que agora, usando uma ferramenta, fosse possível sem muita dificuldade desenvolver para o sistema operacional móvel “Windows Mobile”, popular naquela época.

Na prática, tudo parecia muito pior. Esta ferramenta não nos permitiu implementar ideias originais. Saco de plástico " Extensão para computadores portáteis» era mais um complemento para certas configurações típicas do que uma solução de desenvolvimento completa. Não foi prevista a expansão da funcionalidade de configuração adicionando novos objetos de metadados. Coisas muito simples foram deixadas para programadores terceirizados: criação de novos formulários para interação do usuário, processamento de eventos do usuário.

Sim, havia todo tipo de soluções alternativas para as restrições, mas mesmo elas não permitiam um desenvolvimento real. Além das limitações técnicas, os consumidores sentiram uma séria barreira financeira. As empresas que decidiram implementar a solução da 1C foram obrigadas a adquirir PDAs produtivos, adquirir licenças para Windows Mobile e também pagar à 1C pela entrega da solução e do aplicativo final.

A solução da 1C era muito cara. As empresas habituadas a poupar dinheiro continuaram a utilizar soluções alternativas. Além disso, os desenvolvedores de alternativas conseguiram equipar seus produtos com funcionalidades para interação com soluções 1C padrão.

As limitações técnicas e o alto custo não permitiram que o produto repetisse o sucesso colossal da plataforma desktop. A ideia de conquistar o mercado móvel do edifício.

aplicativos falharam miseravelmente.

Passo à frente

As perdas e prejuízos de um projeto malsucedido não puseram fim ao desenvolvimento de uma direção promissora. Em 2013, a empresa 1C apresentou a primeira versão estável da nova plataforma 8.3, que tem a função de desenvolver aplicações móveis.

A 1C repensou completamente sua abordagem para resolver o “teorema” móvel e levou em consideração os erros do produto anterior malsucedido. O resultado é uma ferramenta completamente nova, que nada tem em comum com seu antecessor e está focada nas plataformas móveis mais atuais – Android e iOS.

Aplicativos móveis no estilo 1C

Para conhecer totalmente as capacidades de desenvolvimento para plataformas móveis, tentaremos desenvolver uma pequena configuração. Usando um exemplo ponta a ponta, você pode avaliar melhor as funcionalidades disponíveis e decidir sobre a possibilidade de utilizar a plataforma 1C para solucionar problemas.

Para funcionar, você precisará da versão mais recente da plataforma 1C:Enterprise 8.3. A versão educacional da distribuição está disponível no site oficial da 1C. Há mais do que suficiente para recriar um exemplo de suas capacidades.

Além da plataforma 1C:Enterprise 8.3, precisaremos de várias ferramentas adicionais. Este artigo examinará um exemplo de desenvolvimento de um aplicativo Android. Para isso, você terá que baixar: Android SDK e servidor Apache WEB. O primeiro componente contém tudo o que é necessário para construir o aplicativo e um emulador para teste, e o servidor WEB é útil para baixar rapidamente o aplicativo para o sistema operacional móvel.

Também exigiremos a entrega de uma “Plataforma de Desenvolvedor Móvel”. Contém uma configuração para simplificar o processo de construção do aplicativo móvel criado, bem como uma plataforma de desenvolvedor móvel. Deve ser instalado em um dispositivo móvel ou emulador.

Para construir um aplicativo pronto para distribuição via Google Play, você precisará baixar Apacheante E Java JDK. Este tópico está além do escopo deste artigo, então você pode descobrir mais sobre como trabalhar com essas ferramentas e montar o aplicativo na seção correspondente do meu arquivo .

Configurando ferramentas

Plataforma " 1C:Empresa 8.3" e o servidor web Apache são fornecidos com instaladores e instalados de maneira padrão. SDK Android você só precisa descompactá-lo em um diretório separado e executar “ gerenciador sdk.exe" Uma janela aparecerá na sua frente com uma seleção de pacotes disponíveis para instalação. Para testar o exemplo discutido neste artigo, você precisará selecionar e instalar: Ferramentas SDK do Android, A Ferramentas da plataforma Android, API da plataforma SDK 17.

A última etapa será a criação de uma nova base de informações. Para aqueles que não estão envolvidos no desenvolvimento sob " 1C:Empresa“Vou explicar que qualquer solução para esta plataforma consiste em uma base de informações e configuração. A adição de um novo banco de dados é feita clicando no botão " Adicionar» janela inicial. Após adicionar o banco de dados, abra-o em " Configurador».

Primeira configuração móvel

No menu principal do configurador encontraremos a seção “ Configuração" e selecione "Abrir configuração". A árvore de configuração (os objetos que comporão a futura aplicação) será exibida no lado esquerdo da janela. Selecione a raiz da configuração nele e pressione a combinação de teclas “ Alt+Enter" O editor de propriedades será aberto à direita da janela do configurador.

Vamos chamar a configuração " PENDÊNCIA" e na propriedade "Finalidade de uso" indicamos " Dispositivo móvel" Observe que após realizar a última ação, alguns nós da árvore de configuração ficarão inativos. Infelizmente, não é possível utilizar todos os objetos de metadados na plataforma móvel.

Para resolver nosso problema, precisaremos criar vários objetos de metadados na árvore de configuração:


Procedimento AddTask(Task) ExportRecordManager = CreateRecordManager(); RecordManager.Period = DataAtual(); RecordManager.Task = Tarefa; RecordManager.Status = Tarefa.Status; RecordManager.Record(); Procedimento Final

Listagem 2. Código da função “Obter Lista de Tarefas Não Fechadas()”

Função GetList de UnClosedTasks() Solicitação de Exportação = Nova Solicitação; Query.Text = "SELECT |TaskStatusSliceLast.Task AS Task, |TaskStatusSliceLast.Task.ExecutionDate AS ExecutionDate |FROM | Informações Register.TaskStatus.SliceLast(&CurrentDate, Status<>VALUE(Enumeration.TaskStatuses.Completed)) AS StateTasksSliceLast | |ORDEM POR | Data de Execução DESC"; Request.SetParameter("CurrentDate", CurrentDate()); Return Request.Execute().Unload(); EndFunction

Já resolvemos a obtenção dos dados do cadastro de informações e o registro deles, agora vamos ensinar nosso diretório como trabalhar com o cadastro. Para fazer isso, adicione um módulo comum à árvore de configuração com o nome “ Trabalhando com tarefas" Você pode passar sem isso, mas gostaria de focar imediatamente na possibilidade de dividir o código em módulos. Muitos desenvolvedores 1C ainda negligenciam esta recomendação e descrevem toda a lógica em um só lugar, complicando assim a manutenção subsequente do código. Vamos criar uma nova procedure no módulo " Criar nova tarefa"(veja Listagem 3).

Listagem 3. Código para o procedimento “Create NewTask”

Procedimento CreateNewTask(Link) Exportar If Link.ThisGroup Then Return; fim se; Solicitação = Nova Solicitação; Query.Text = "SELECT |TaskStatusSliceLast.Status |FROM |Informações Register.TaskStatus.SliceLast(&CurrentDate, Task = &Task) AS TaskStatusSliceLast"; Query.SetParameter("DataAtual", DataAtual()); Request.SetParameter("Tarefa", Link); Resultado = Query.Run().Select(); Se Result.Next() Então se Result.Status<>Link.Status Depois Registradores de Informações.Task Status.AddTask(Link); fim se; Caso contrário, Informações Registers.TaskStatus.AddTask(Link); fim se; Procedimento Final

Antes de criar um novo registro, é feita uma verificação da presença de registros existentes para a tarefa. Se o registro já existir, será necessário comparar os status das tarefas. Se o status do registro não diferir do status do elemento que está sendo gravado, não há necessidade de criar uma entrada adicional.

Como toque final, vamos abrir o formulário do item do diretório “Tarefas” e criar um manipulador de eventos “ AfterRecordingOnServer" Nele escreveremos uma chamada para o procedimento descrito na terceira listagem:

WorkWithTasks.CreateNewTask(CurrentObject.Link);

Estamos trabalhando na interface

A principal funcionalidade do aplicativo está pronta - o usuário pode criar tarefas, e cada nova tarefa cria uma entrada no cadastro de informações periódicas. Agora vamos passar para a interface. Vamos trazer o trabalho com tarefas para o primeiro plano. Certamente seria lógico exibir imediatamente uma lista de tarefas não fechadas e a capacidade de criar uma nova imediatamente após iniciar o aplicativo?

Vamos encontrar o nó " Formulários gerais" e adicione um novo formulário chamado " Área de Trabalho" Vamos abrir o formulário criado no designer de interface e adicionar um atributo como " Tabela de Valores" Vamos chamá-lo de “OpenZachi”. A tabela conterá duas colunas - “ Tarefa"(Link de referência.Tarefas) e" Data de execução" (Data de).

A próxima etapa é arrastar os adereços adicionados para o formulário. Deveríamos ter uma interface para uma tabela simples. Não especificaremos nenhuma dimensão; deixaremos a preocupação de dimensionar a interface para a plataforma.

Para a tabela criada, no Property Inspector, marque a caixa de seleção da propriedade " Somente visualizar", e a propriedade" Posição do painel de comando» definir o valor “Não”. Iremos preencher a tabela com informações dinâmicas, portanto não adianta editá-la por parte do usuário.

Agora vamos descrever o manipulador de eventos “When DesignedOnServer” para o formulário. Vamos adicionar uma linha de código a ele:

OpenTasks.Load(InformationRegisters.TaskStatus.GetListofUnClosedTasks());

No código, nos referimos ao procedimento que descrevemos " Obtenha a lista de tarefas não fechadas” e o resultado de sua execução é colocado na tabela.

Vamos voltar ao designer de formulários e adicionar um grupo do tipo “Grupo regular sem display” com dois botões: “ Criar" E " Atualizar" Propriedade " Agrupamento"Para o grupo adicionado, defina o valor como "Horizontal". Para deixar os botões mais expressivos, adicione imagens e altere a fonte padrão.

Agora selecione o botão " Criar"e dê o comando global" Tarefas: criar" Isso permitirá que você crie tarefas sem entrar no próprio diretório. Ao clicar no segundo botão, atualizaremos o conteúdo da tabela com tarefas. Para fazer isso, você precisará criar um comando de formulário adicional.

Todos os novos comandos do formulário são criados na aba de mesmo nome " Equipes" O princípio é simples - adicionamos um novo comando, descrevemos o código de ação nele e depois associamos o comando à interface, no nosso caso ao botão.

Também não devemos esquecer que estamos desenvolvendo um aplicativo gerenciado, por isso precisamos distinguir claramente entre código cliente e código servidor. Quando o botão for clicado, haverá um contexto " No cliente", e receberemos dados do banco de dados do servidor. No código fica assim:

&No procedimento do cliente UpdateTaskList(Command) UpdateList(); Fim do procedimento &No procedimento do servidor quando criado no servidor (Falha, StandardProcessing) OpenTasks.Load(InformationRegisters.TaskStatus.GetListofUnClosedTasks()); Procedimento Final

Agora vamos definir nosso formulário desktop como a área da página inicial. Abra as propriedades de configuração (selecione o nó superior e clique em “ Alt+Enter") e para a propriedade "Área de trabalho da página inicial" defina o valor " Uma coluna", em seguida, adicione nosso formulário à lista" Área de Trabalho».

O aplicativo está totalmente pronto e é hora de testá-lo em ação. Tente executar o exemplo e criar diversas tarefas com status diferente de " Concluído" O cadastro de informações foi reabastecido com novos registros (isso pode ser visualizado através do item de menu “ Todas as funções") e alguns deles são exibidos na área de trabalho.

Chegando ao Android

A configuração funciona muito bem no desktop e agora é a hora de testá-la em um emulador de sistema operacional móvel. Para preparar um novo emulador, execute o interpretador de comandos ( cmd.exe) e vá para o diretório “toos” da distribuição do Android SDK. Execute o comando " android.bat avd", que iniciará o gerenciador virtual de dispositivos Android. Nele, clique no botão “Criar” e na janela que aparecer especifique os parâmetros do dispositivo virtual. No meu ambiente de trabalho decidi imitar Nexus S com Android versão 4.2.2. (API nível 17).

Depois de criar o dispositivo, iremos iniciá-lo imediatamente. Enquanto o Android carrega, vamos voltar ao configurador e publicar nossa aplicação no servidor web. No menu principal do configurador, selecione o item “ Configuração» -> « Aplicativo móvel» -> « Publicar" Na janela de configurações de publicação, especificamos o nome da aplicação (pode ser qualquer coisa), o servidor web (deve haver um em nosso ambiente) e o diretório para armazenar as configurações.

Especificando como o nome " todo-móvel", o aplicativo estará disponível no endereço -" http://host/todo-mobile" Clique em “ok” e tente acessar o aplicativo publicado usando um navegador. Se for bem-sucedido, o servidor retornará o código XML da configuração criada.

Vamos voltar ao emulador e carregar nele o aplicativo com a plataforma de desenvolvedor móvel. O arquivo do aplicativo em si está disponível junto com a entrega da plataforma de desenvolvedor móvel e é denominado “1cem-arm.apk”. Para instalar este aplicativo no emulador, usaremos o utilitário “ adb.exe"do diretório" ferramentas de plataforma»: adb.exe instalar –r 1cem-arm.apk.

Após a instalação bem-sucedida, abra a lista de aplicativos no emulador e inicie a plataforma do desenvolvedor móvel. Na janela que se abre, clique em “ Adicionar aplicativo" e no campo "endereço" indicamos a URL do nosso servidor web. eu tenho isto http://192.0.168.106/todo-mobile. Clique em " Adicionar"e nossa configuração foi transferida com sucesso para a plataforma móvel. O aplicativo está pronto para uso. Teste o resultado e volte ao configurador, é hora de dotar os aplicativos de “funcionalidade móvel”.

Envio de mensagens SMS/MMS

Funções para trabalhar com SMS/MMS as mensagens são suportadas de forma diferente pelas plataformas móveis. Por exemplo, ao executar um aplicativo no Android, o desenvolvedor tem a oportunidade de assinar SMS e ter acesso a novas mensagens imediatamente após recebê-las. Infelizmente, esse mesmo recurso não está disponível no iOS, portanto a documentação deve estar disponível durante o desenvolvimento.

Um objeto é fornecido para envio de mensagens SMS Mensagem SMS. Vejamos um exemplo:

Procedimento &OnClient SendSMSMessage(Destinatário, MessageText) NewMessage = Nova SMSMessage(); NovaMensagem.Text = MensagemTexto; NewMessage.Recipients.Add(Destinatário); Ferramentas de Telefonia.SendSMS(NewMessage); Procedimento Final

O código é bastante simples e dispensa comentários. Agora vamos dar uma olhada na assinatura de mensagens recebidas:

&No procedimento do cliente ConnectMessageReceiveHandler() SubscribeToMessages = New AlertDescription("ProcessingNewMessages", ThisObject); Ferramentas de telefonia.ConnectSMSMessageHandler (SubscribeToMessages); Fim do Procedimento &No Procedimento do Cliente Processando Novas Mensagens (Mensagem, Parâmetros Adicionais) // Processando uma nova mensagem // Remetente, Mensagem. Procedimento Final

Procedimento " Processando novas mensagens" será chamado sempre que um novo SMS for recebido. Através do parâmetro " Mensagem"um objeto do tipo" é transmitido Mensagem SMS» e podemos obter facilmente o texto da mensagem e informações sobre o remetente.

Trabalhar com mensagens MMS é feito da mesma maneira. Primeiro criamos uma mensagem SMS e depois adicionamos um anexo (por exemplo, imagens) a ela. Com esta simples ação, um SMS se transforma em MMS:

NovaMensagem=Nova SMSMessage(); Anexo = Novo MMSAnexo; Anexo.Dados = Imagem; Attachment.ContentType = "imagem/jpeg"; MMSMessage.Attachments.Add(Anexo);

Fazendo chamadas de um aplicativo móvel

Uma chamada programática é feita através do método “Dial Number” do objeto global “Telephony Tools”. Antes de chamar o método, é altamente recomendável verificar a possibilidade de realizar uma chamada:

Se Telephony Tools.SupportedDialing() Então Telephony Tools.DialNumber(PhoneNumber, CallImmediately); fim se;

Parâmetro " Ligue imediatamente» afeta o desempenho de discagem. Quando é igual a " Verdadeiro", a discagem é realizada automaticamente por meio do aplicativo de chamada padrão. Se definido como False, o usuário também verá a interface padrão do discador, mas precisará pressionar o botão para fazer uma chamada. Chamar».

Registro de chamadas

A plataforma móvel permite ao desenvolvedor interagir com o registro de chamadas. Por exemplo, você pode obter facilmente uma lista de chamadas efetuadas, perdidas ou recebidas. Este recurso é compatível apenas com Android:

Registro de chamadas = Ferramentas de telefonia.GetCall Log(); Seleção = NewDataCompositionSelection; Elemento de seleção = Selection.Elements.Add(Type("Elemento DataCompositionSelection")); SelectionElement.LeftValue = NewDataCompositionField("CallType"); SelectionElement.ComparisonView = ComparisonTypeDataLayout.Equals; SelectionElement.RightValue = CallLogCallType.Missed; SelectionElement.Use = Verdadeiro; Lista de entradas do CallLog = CallLog.FindRecords(Selection); //A lista de entradas do registro de chamadas conterá uma coleção de entradas

Geoposicionamento

Quase todos os smartphones modernos possuem funções de geolocalização. Você pode usar essa funcionalidade na linguagem 1C integrada. A obtenção das coordenadas atuais do dispositivo pode ser dividida em 2 etapas: seleção de um provedor de geoposicionamento e processamento das coordenadas recebidas:

//Vamos fornecer a escolha do provedor para a plataforma IdealProvider = Geopositioning Tools.GetMost AccurateProvider(); Coordenadas = GeoPositioningTools.GetLastLocation(IdealProvider); //Se as coordenadas foram recebidas há muito tempo, atualize If Coordinates = Undefined OR CurrentDate() – Coordinates.Date > 3600 Then Geopositioning Tools.UpdateLocation(IdealProvider, 60); Coordenadas = GeoPositioningTools.GetLastLocation(IdealProvider); fim se;

Trabalhando com recursos multimídia

O desenvolvedor tem a oportunidade de tirar fotos, vídeos e gravações de áudio usando a linguagem integrada: Tire uma foto(), Faça uma gravação de vídeo(), Faça uma gravação de áudio().

Qual sistema operacional móvel é melhor para desenvolver em 1C?

Apesar do meu amor pela tecnologia Apple, é melhor criar aplicativos móveis usando a plataforma 1C para Android. Existem vários motivos para isso, mas o mais importante são as funções suportadas. Infelizmente, muitas coisas necessárias não são suportadas no iOS. Por exemplo, a incapacidade de assinar mensagens SMS de forma programática ou interagir com registros de chamadas pode impossibilitar a implementação de algumas ideias. O Android é mais amigável nesse aspecto. Não se esqueça do custo dos próprios dispositivos. Nem todas as empresas estarão prontas para comprar dispositivos móveis da Apple.

Em vez de conclusão

Plataforma " 1C:Empresa 8» provou na prática a sua disponibilidade para se tornar uma ferramenta simples para desenvolver o desenvolvimento corporativo. Aplicativos para plataformas móveis. Os exemplos discutidos no artigo são uma confirmação adicional disso. Não é necessário gastar recursos no estudo de ferramentas nativas se a funcionalidade do aplicativo se enquadrar nas capacidades da plataforma móvel e a empresa for dominada por produtos 1C.

De forma silenciosa e sem nenhuma descrição especial do trabalho, a 1C lançou a configuração “Mobile Application Collector”, que pretende se tornar uma espécie de organizador para o desenvolvimento de aplicações móveis.

Na versão mais recente 1.0.3.17 existem vários pequenos problemas que à primeira vista parecem bugs.

O primeiro problema que encontramos é a impossibilidade de iniciar a configuração sem usuário, obtemos o seguinte erro:

“A versão de configuração é diferente da versão da infobase. É necessário atualizar a configuração executando a solução do aplicativo como usuário com direitos de Administrador

Este problema pode ser resolvido de forma bastante simples; basta iniciar o configurador e adicionar um usuário com direitos de “Administrador”.

O segundo problema ocorre quando tentamos criar um elemento no diretório “Mobile Configurations”. Clicamos no botão “Criar” e obtemos o erro “Os itens só podem ser criados em grupos”:

Não tem problema, clicamos no botão “Criar Grupo” e de repente recebemos novamente a mensagem de erro “Os itens só podem ser criados em grupos”.

A solução é fazer o seguinte:

No painel superior há um botão “Criar” que abre um submenu. Nele, clique no item “Configuração móvel”:

Depois disso, uma janela bastante amigável é aberta na qual você pode criar grupos:

Também ocorre um problema ao criar um item de diretório “Aplicativos móveis”, recebemos a seguinte mensagem de erro:

"O prefixo do ID do aplicativo não está definido nas configurações do provedor":

A saída também está bem próxima:

E começamos a inserir dados no elemento do diretório “Provedores de soluções móveis”.

O prefixo deve ter um “ponto” dentro. E clique em “Criar chave de desenvolvedor”.

Visualizações