Relatórios e processamento 1c. Adicionando processamento externo ao banco de dados

Vá para o topo do menu Serviço->->.

Aparece o formulário da lista do livro de referência de processamento externo. No menu superior, pressione o botão Adicionar.

Um formulário para adicionar um novo objeto aparecerá. Pressionamos o botão abrir e selecionamos o arquivo com o processamento desejado. Depois de ter escolhido arquivo desejado, se necessário, especifique o nome do tratamento (campo Nome). Depois disso, você precisa clicar em OK para salvar as alterações feitas.

Em seguida, fecha-se a janela de criação de um item do catálogo, voltando ao formulário da lista, onde já existe um novo processamento.

Isso é tudo! O processo de adição de processamento à configuração está concluído. Para abrir esse processamento posteriormente, siga o caminho antigo: Serviço->Relatórios e processamento adicionais->Tratamentos externos adicionais.

Para BP 3.0, ZUP 3.0, UT 11, ERP 2.0.

Os tratamentos externos para 1C: Empresa 8 são de vários tipos. Neste tutorial, mostrarei como anexar processamento para modificação em lote e processamento para preencher objetos específicos.

Para o primeiro caso, vamos adicionar processamento para o preenchimento da lista de estoque do Excel.

Vá para a seção apropriada do programa:


É necessário que a sinalização de uso de relatórios e processamento adicionais seja definida, siga o hiperlink para a lista de objetos externos:

Na lista, clique em Crio:


Na caixa de diálogo que se abre, selecione o arquivo desejado com processamento:


O cartão de um novo objeto externo no programa foi preenchido, resta apenas configurar alojamento(seções do programa nas quais o processamento estará disponível):


Selecione uma seção arbitrária (ou várias) como posicionamento:


Anotamos e fechamos o cartão do objeto externo:


Agora vamos abrir o processamento na interface:


A lista está vazia, clique Lista personalizada:


Nós escolhemos nosso processamento:


Agora está disponível para seleção. Para abrir o processamento, você precisa clicar Executar:


Agora vamos ver como o processamento para preencher (modificar) objetos específicos é adicionado. Por exemplo, pegue processamento externo, que anexa digitalizações aos elementos selecionados de diretórios ou documentos do sistema. O início da adição desse processamento não difere da opção anterior. A diferença é que em nesse caso a localização é preenchida automaticamente (e não pela seção do programa, mas pelos tipos de objetos do banco de dados):


Se desejar, a lista de canais pode ser ajustada ( não adicione canais adicionais, mas remova os desnecessários):


Para aceitar a alteração, o cartão do objeto externo também deve ser registrado.

Para usar o processamento, você precisa ir para um objeto base específico (da lista de colocação), clicar Encher no painel de comando e selecione o comando:

Atenção!
Todo o processamento dos discos ITS é destinado a fins informativos e exclusivamente para usuários ITS registrados.

Seleção e processamento de objetos. (Universal)

Pesquisa objetos em documentos e diretórios que atendam a certas condições. Processa os resultados da pesquisa.

Dobrando a infobase. (Universal)

Acumula configurações típicas de segurança da informação:

  • SCP 3.1.
  • BP 1.6.
  • UT 10.3.

Registro de mudanças para troca. (Universal)

Edita, no modo de aplicativo gerenciado, o registro das alterações nos objetos de troca. Permite que você altere o registro atual em vários nós. Altera o número de mensagens recebidas e enviadas.

Converta o registro de atividades do usuário. (Universal)

Converte um registro de atividades do usuário em um programa integrado.

Pesquisa de dados de texto completo. (Universal)

Indexação e pesquisa de dados.

Encontrar e substituir valores. (Universal)

Pesquisa e substitui valores de referência em objetos IB.

Configurando um log tecnológico. (Universal)

Cria ou edita um arquivo de log de tecnologia. Tem a capacidade de configurar a criação de um dump de uma terminação anormal, configurar condições e eventos, caso ocorram, as informações serão gravadas neste log.

Quest Console. (Universal)

Monitora trabalhos em segundo plano e agendados. Exclui, cria novos.

Conversão de tratamentos externos. (Universal)

Mudança de informações confidenciais. (Universal)

Mudança seletiva ou liberação de segurança da informação de certas informações.

Mudança de grupo de detalhes. (Universal)

Muda detalhes e seções tabulares em documentos e livros de referência.

Descarregando e carregando usuários. (Universal)

Descarrega e carrega usuários IB em um arquivo XML.

Upload de dados para bancos de dados externos. (Universal)

Carrega estruturas de dados para DBMS externo usando ADO em dois modos:

  • Descarregar tudo
  • Upload de alterações (usado para sincronizar alterações no IS de trabalho, com o IS - o receptor). Este modo usa mecanismos de plano de troca.

Suporta o seguinte DBMS:

  • Microsoft SQL
  • IBM DB2
  • Oráculo
  • PostgreSQL
  • MySQL

Descarregando e carregando dados XML. (Universal)

Descarrega e carrega dados em IB, no todo e em parte. É usado para transferir dados entre configurações com composição de objeto semelhante.

Carregando dados de um documento de planilha. (Universal)

Ele carrega dados em diretórios e seções tabulares de documentos tabulares.

É executado em um cliente pesado como um aplicativo regular.

Console de consulta. (Universal)

Fornece uma enorme assistência na geração de relatórios e criação de consultas.

Muitas vezes, quando durante uma consulta há uma necessidade de resolver um problema difícil, sugiro que meus clientes implementem no programa 1C usando qualquer processamento externo ou placa de impressão externa... E muitas vezes me deparo com o fato de que uma pessoa simplesmente não está familiarizada com esta possibilidade de programas no 1C Enterprise 8. Às vezes eles até me xingam, acreditando que o desenvolvimento e implementação de tal processamento em sua configuração levará à impossibilidade de atualizando automaticamente o programa. Que você tem que pagar muito dinheiro para atualizar o programa.

Para esclarecer tais questões, bem como falar sobre o que características úteis dar tratamentos externos e externos formulários impressos Decidi escrever este artigo. Neste artigo, não irei considerar o lado técnico do processo de criação de processamento. Isso provavelmente será discutido em outra publicação. Aqui, tentarei explicar a própria essência do mecanismo e dar exemplos específicos daqueles casos em que o processamento externo e a impressão de formulários podem beneficiar o usuário.

O artigo discutirá as seguintes opções para objetos adicionais conectáveis ​​externos:

  • Processamento externo adicional de seções tabulares;
  • Placas de impressão externas adicionais;
  • Relatórios externos adicionais;
  • Tratamentos externos adicionais.

O que são processamento externo adicional, relatórios e formulários para impressão




Para começar, gostaria de falar em geral sobre o que são esses processamento externo, relatórios e formulários de impressão... Muitas vezes, ao trabalhar com uma configuração típica, seja 1C ZUP ou 1C Enterprise Accounting ou alguma outra configuração, há a necessidade de alguma funcionalidade que não é fornecida pelos desenvolvedores de 1C. Por exemplo, você pode precisar formulário impresso, que não é regulamentado, mas é usado para as necessidades internas da organização. Ou é necessário de certa forma processo (mudar, corrigir) disponíveis no banco de dados. Por exemplo, para alterar um determinado atributo em documentos para o período exigido, o que é inconveniente de fazer manualmente com grandes quantidades de informações.

Nesse caso, existem duas opções. Primeiro, podemos modificar a própria configuração, o próprio programa. Depois disso, ele deixará de ser típico e será atualizado com aqueles de maneiras simples, sobre o qual escrevi, não funcionará. Atualizar uma configuração atípica é um processo mais longo e mais sério, portanto, com essa abordagem, você provavelmente terá que pagar um especialista 1C mensalmente para atualizar o programa. Segundo uma opção é desenvolver ou solicitar o desenvolvimento de um processamento externo ou formulário impresso (relatório). Este é essencialmente um módulo externo, que também é desenvolvido na linguagem de programação 1C do Configurador, mas não faz alterações na configuração típica. Ele existe independentemente da própria configuração. Para armazená-los, são usados ​​livros de referência especiais: o item do menu principal "Serviço" -> "Relatórios adicionais e processamento".

Processamento externo adicional para preencher seções tabulares

Seminário "Life hacks on 1C ZUP 3.1"
Análise de 15 hacks de vida para contabilidade em 1s ZUP 3.1:

CHECK-LIST para verificar a folha de pagamento em 1C ZUP 3.1
VÍDEO - mensal auto-verificação contabilidade:

Folha de pagamento em 1C ZUP 3.1
Instruções passo a passo para iniciantes:

Agora vamos dar uma olhada em quais oportunidades cada um dos quatro disponíveis módulos externos... Vamos começar com processamento externo de seções tabulares... Parece-me que este processamento de seções tabulares de documentos ilustram da maneira mais completa como você pode modificar seriamente o programa, sem recorrer à edição da configuração típica, mas fazendo apenas processamento externo.

Para tornar mais claro, darei um exemplo específico da minha prática, em que usei processamento externo de seções tabulares... Na configuração "Gestão de Salários e Recursos Humanos 1C" versão 2.5 existe um documento “Pagamento de feriados e finais de semana”(este documento foi escrito em detalhes). V forma típica este documento fornece a capacidade de preencher automaticamente a seção tabular pelos funcionários "Trabalhando em Férias".

O contabilista solicitou que fosse implementada a possibilidade de preenchimento deste documento pelos colaboradores cujos dias de trabalho caíssem ao fim-de-semana de acordo com o horário, ou seja, "Trabalhar no fim de semana".

Este arquivo foi carregado para o diretório "Processamento externo de seções tabulares"(item de menu "Serviço" -> "Relatórios e processamento adicionais" -> "Processamento externo adicional de seções tabulares"). Ao criar um elemento deste directório, foi indicado a que documento pertence o processamento carregado - "Pagamento de feriados e fins-de-semana da organização", bem como a que secção tabular - "Colaboradores". Em nosso exemplo, o documento possui uma seção tabular, mas em outros documentos pode haver várias delas, portanto, é necessário indicar especificamente a qual delas o processamento se aplica.

Como resultado da adição deste processamento ao diretório "Processamento externo adicional para preencher as seções tabulares" no documento “Pagamento de feriados e finais de semana” haverá um botão “Preencher” com uma lista suspensa, na qual será possível iniciar este processamento. No nosso caso, o botão "Preencher Domingos" está disponível na lista suspensa. Pressioná-lo inicia o algoritmo que está sendo processado. Neste exemplo, a seção tabular será preenchida com funcionários cujos dias de trabalho caíram em um fim de semana. Observe que este botão não estava presente anteriormente (imagem acima).

Esse mecanismo permite que você resolva uma ampla variedade de problemas sem ter que modificar a própria configuração. Portanto, muitas vezes uso esta oportunidade para implementar tarefas de cliente.

Placas de impressão externas adicionais

Seminário "Life hacks on 1C ZUP 3.1"
Análise de 15 hacks de vida para contabilidade em 1s ZUP 3.1:

CHECK-LIST para verificar a folha de pagamento em 1C ZUP 3.1
VÍDEO - autoverificação mensal da contabilidade:

Folha de pagamento em 1C ZUP 3.1
Instruções passo a passo para iniciantes:

Esta opção é muito semelhante à anterior. Você provavelmente já viu e sabe que quase todos os documentos e até mesmo alguns elementos de diretórios possuem formulários para impressão. Eles, como regras, estão localizados no canto inferior direito do formulário de um item de catálogo ou documento. Às vezes, os formulários impressos padrão não são suficientes. Por exemplo, uma organização pode ter sua própria forma de contrato de trabalho. Gostaria de lembrar que o formulário padrão impresso "Contrato de trabalho" está incluído no formulário da lista "Empregados".

Você pode adicionar o seu próprio a esses formulários impressos do livro de referência. Para isso, é criado um imprimível externo com a extensão “.epf”. Em seguida, um elemento de diretório é criado para ele. "Chapas de impressão externas adicionais"(item de menu "Serviço" -> "Relatórios adicionais e processamento") e um arquivo com a extensão ".epf" é adicionado a este elemento do livro de referência. Também é necessário indicar para qual documento ou referência o processamento é adicionado.

Com isso, aparecerá outro formulário nos impressos dos elementos da lista “Empregados” - “Contrato de Trabalho (LLC Alpha)”, que antes não existia. E ela aparência e o preenchimento dos dados é definido pelo programador no arquivo “.epf”.

Essa capacidade de adicionar os formulários de impressão necessários para documentos e livros de referência também é frequentemente solicitada e, em minha opinião, é uma funcionalidade bastante conveniente de programas na plataforma 1C Enterprise.

Relatórios externos adicionais

Neste caso, você pode desenvolver relatório externo... É um arquivo “.erf”. É este arquivo que determinará a aparência do relatório, quais dados de configuração ele utilizará e quais dados de configuração solicitará do usuário (por exemplo, período, seleção por funcionário ou por departamento). O arquivo é criado no configurador 1C na linguagem de programação 1C.

Um relatório externo pode ser armazenado como parte de uma configuração usando a referência "Relatórios externos adicionais" (item de menu "Serviço" -> "Relatórios adicionais e processamento"). Eles não estão relacionados a um documento ou livro de referência específico, essas informações não são obrigatórias.

Com esta opção de armazenamento, o relatório é iniciado a partir do mesmo diretório (clicando duas vezes).

Você também pode iniciar um relatório externo usando o item de menu "Arquivo" -> "Abrir". Esta opção pode ser usada se for mais conveniente para você armazenar relatórios externos não dentro do programa, mas simplesmente nas pastas do computador.

Tratamentos externos adicionais

Tratamentos externos têm quase o mesmo significado que relatórios externos. Mas, ao contrário dos relatórios, que são usados ​​para visualizar os dados da infobase em um formato amigável, o processamento é projetado para modificar, editar ou transformar dados. base de informação... A gama de tarefas que podem ser resolvidas usando processamento externo é bastante ampla.

por exemplo, processamento para descarregar extratos para pagamento remunerações... Apesar da presença de processamento padrão no ZUP (leia sobre isso), às vezes pode não ser adequado para um determinado banco e um processamento externo é desenvolvido para converter e descarregar informações no formato necessário.

eu darei mais um exemplo completamente despretensioso, mas bastante exigido processamento. Se você não mantiver o documento “Transferência do imposto de renda de pessoa física para o orçamento” no ZUP 1C durante o ano, então, ao formar 2 imposto de renda de pessoa física para o ano, o campo “Enumerado” para cada funcionário será zero, que é geralmente incorreto. Entrar no documento “Transferência do Imposto de Renda das Pessoas Físicas para o orçamento” de todo o ano pode ser entediante, dadas as peculiaridades do próprio documento. Mas você pode fazer o processamento externo, que no 2-NDFL gerado simplesmente preencherá o campo "Enumerado" para cada funcionário, com base nos valores do campo "Calculado". Normalmente, os contadores realmente gostam dessa opção.

O processamento externo tem exatamente as mesmas duas opções para armazenamento e lançamento: use a referência "Tratamentos externos adicionais"(item de menu "Ferramentas" -> "Relatórios e processamento adicionais"), ou item de menu principal "Arquivo" -> "Abrir".

Isso é tudo por hoje!

Para ser o primeiro a saber sobre novas publicações, inscreva-se nas atualizações do meu blog:

Considere a criação de um relatório externo em 1c 8 sem usar um sistema de composição de dados. Para criar um relatório externo, usaremos a configuração da Contabilidade 2.0, dados iniciais: “Escreva um relatório na conta 62 contabilidade em que os volumes de negócios para o período especificado serão exibidos no contexto Contrapartes e Acordos de empreiteiros.

1. Crie um relatório

Em primeiro lugar, vamos criar um arquivo de relatório externo, para isso vamos para 1c 8 no modo Configurador, vá para o menu Arquivo -> Novo ou clique no ícone Novo Documento.

Na lista, selecione o item Relatório externo... Depois de criar o relatório externo, dê a ele um Nome (por exemplo Relatório mais simples) e salve-o no disco. Também adicionaremos dois adereços: Início do período e Fim do Período modelo encontro, precisaremos deles para limitar o intervalo de tempo para amostragem de dados ao gerar um relatório.

2. Criação de um layout para um relatório externo

Para gerar um relatório em 1c 8, você precisa de um layout, este é um modelo para exibir dados em que todos parâmetros desejados, tabelas são desenhadas, etc. Vamos adicionar um novo layout, para isso, na árvore de metadados do relatório, selecione o item Layouts e aperte o botão Adicionar, ao criar, selecionamos o tipo para o layout Documento de planilha.

Nosso layout terá 4 áreas:

  • Cabeçalho - nesta área exibiremos o nome do relatório, o período para o qual foi gerado e o cabeçalho da tabela;
  • DataContractor - nesta área exibiremos os dados da contraparte na tabela;
  • Dados do Contrato da Contratada - nesta área exibiremos os dados do contrato da contraparte na tabela;
  • Porão - nesta área exibiremos os totais de todo o relatório para os campos de receita e despesa.

Vamos começar a criar as áreas de layout. Para criar uma área no layout, selecione o número necessário de linhas e pressione Menu Tabela -> Nomes -> Atribuir Nome(Ou Ctrl + Shift + N) Para a área Boné escreva o nome do relatório: Volume de negócios 62 contas, vamos desenhar com a ferramenta Fronteiras cabeçalho do relatório, bem como definir os parâmetros Início do período e Fim do Período... Usando os parâmetros, você pode exibir os dados necessários no relatório, trataremos disso na próxima fase de desenvolvimento, ou seja, ao escrever o código do programa do relatório. Para criar um parâmetro no layout, selecione a célula desejada, escreva o nome do parâmetro nele (sem espaços), clique com o botão direito sobre ele, no menu que se abre, selecione o item Propriedades... Nas propriedades da célula em um favorito Layout selecione o enchimento Parâmetro.

Depois disso, o nome do parâmetro na célula será colocado entre colchetes angulares (”<>“). Como resultado, a área Boné deve ser parecido com isto:

Na área de DataContractor vamos criar parâmetros para exibir o nome da contraparte, bem como para as receitas e despesas de 62 contas, utilizando a ferramenta Fronteiras Vamos organizar a área na forma de uma linha de tabela.

Na área de Contrato de DataContractor vamos criar parâmetros para visualização do nome do contrato, bem como para receitas e despesas da conta 62, utilizando a ferramenta Fronteiras, vamos organizar a área em forma de linha de tabela. Vamos fazer um pequeno recuo na frente do parâmetro Contrato do Empreiteiro(Isso pode ser feito dividindo e mesclando células. Clique com o botão direito do mouse em uma célula -> Combinar ou Quebrar a célula), é necessário para que possa ser visto no relatório que a linha do contrato está mais abaixo na hierarquia do que a linha da contraparte.

Na área de Porão Vamos criar parâmetros para totais de receitas e despesas.

Como resultado, devemos obter um layout como este:

3. Criação de um formulário de relatório

Para saída de dados, definindo o período de formação e botões Para moldar nosso relatório precisará de um formulário. Para criar um formulário, encontre o item na árvore de metadados do relatório externo Formulários e aperte o botão Adicionar... Na primeira página do designer de formulário, você não precisa fazer nenhuma alteração, basta clicar no botão Avançar.

No próxima página construtor, selecionamos os dois adereços disponíveis ( Início do período, Fim do Período) para colocação no formulário.

Como resultado, obtemos o seguinte formulário:

Mas neste formulário, não nos convém, faremos algumas alterações nele:

  • Arraste o botão Para moldar do painel inferior do relatório para o superior (será mais conveniente para o usuário);
  • Estique a forma verticalmente e horizontalmente;
  • Organize os campos Início do período e Fim do Período horizontalmente;
  • Adicionar ao formulário um elemento de controle Campo de um documento de planilha (nosso relatório será exibido nele), dê um nome a ele TabDoc;
  • Vamos criar um botão para selecionar um período (ao pressioná-lo, uma caixa de diálogo com uma escolha conveniente do período necessário será exibida). Não escreveremos o código do programa para ele ainda, então simplesmente colocaremos o botão próximo aos campos do período.

Como resultado, nosso formulário terá a seguinte aparência:

4. Programação

Depois de criar o formulário de relatório, vamos começar a programar. Para começar, criaremos um procedimento para exibir a caixa de diálogo de seleção de período (já criamos um botão para isso na etapa anterior). Clique com o botão direito no botão e selecione o item do menu Propriedades, nas propriedades do botão, vá para a guia Eventos, onde, usando o botão com o ícone da lupa, crie um procedimento Botão 1 Pressione no módulo de formulário.

Você pode alternar entre o formulário e seu módulo usando as guias na parte inferior do formulário

Para chamar o formulário de seleção de período, usaremos o procedimento padrão Contabilidade 2.0 do módulo geral WorkingWith Dialogs - HandlerSettingPeriodPressing, você precisa passar os detalhes do relatório para ele como parâmetros Início do período e Fim do Período.

Procedimento Botão 1 Pressione (Elemento) WorkingWith Dialogues.HandlerPeriodSettingPressing (PeriodBeginning, PeriodEnd); Fim do Procedimento

Agora, vamos escrever o código que irá gerar e exibir nosso relatório. Já existe um procedimento no módulo de formulário ButtonShapePress que será executado quando o botão for pressionado Para moldar, é onde escreveremos nosso código. Vamos começar inicializando as variáveis ​​necessárias. Em primeiro lugar, vamos criar uma variável para campos de documento de planilha no qual iremos enviar os dados, isso não é necessário, apenas a gravação das chamadas para ele ficará mais curta, o que significa que o código do programa será mais compreensível para leitura.

TabDoc = Elementos do formulário.TabDoc;

Obtenha o layout do relatório externo usando a função Obter Layout (<ИмяМакета>) , passaremos o nome do layout para o parâmetro e, se tal layout existir, a função o encontrará.

Layout = Obter Layout ("Layout");

Depois que o layout for recebido, vamos criar variáveis ​​para cada uma de suas áreas, vamos usar o método de layout para isso GetArea (<ИмяОбласти>) .

AreaHeat = Layout.GetArea ("Cabeçalho"); ScopeDataContractor = Layout.GetScope ( "DataContractor"); ScopeDataContract = Layout.GetScope ("ContractData"); AreaFooter = Layout.GetArea ("Footer");

Vamos limpar o campo do documento de planilha. Isso é necessário para que, a cada nova geração do relatório, os dados antigos sejam apagados.

TabDoc.Clear ();

Agora que a inicialização das variáveis ​​foi concluída, vamos prosseguir para preencher e exibir alternadamente as áreas do layout. Vamos começar com a tampa. Se você se lembra, criamos dois parâmetros nesta área. Início do período e Fim do Período, vamos transferir os valores do período de geração do relatório para lá, para isso utilizaremos o imóvel Parâmetrosárea do layout.

AreaHead.Parameters.PeriodStart = PeriodStart; AreaHead.Parameters.EndPeriod = EndPeriod;

Não há mais ação na área Boné o fabricante não é necessário, então exibimos seu campo no documento de planilha.

TabDok.Display (AreaHap);

A seguir, vamos escrever uma consulta ao banco de dados, com a qual tomaremos os volumes de negócios na conta 62 do registro contábil Auto-sustentável... Vamos definir uma variável na qual nossa solicitação estará localizada.

Pedido = novo pedido;

Antes de começarmos a escrever o texto da solicitação, vamos passar os parâmetros necessários para ele. Já que estamos escrevendo uma solicitação de fatura 62 contabilidade, então, primeiro de tudo, vamos criar um parâmetro para ele

Request.SetParameter ("Account62", Account Plans. Self-supported.FindByCode ("62"));

Também é necessário transferir o período de geração do relatório para a solicitação. Não se esqueça que para o período de formação temos detalhes especiais do relatório, e os passamos como parâmetros.

Request.SetParameter ("PeriodBeginning", PeriodBeginning); Request.SetParameter ("EndPeriod", EndPeriod);

Vamos começar a escrever o texto da solicitação, faremos isso usando o construtor de consulta. Em muitos material didáctico escreva que você precisa ser capaz de escrever uma consulta manualmente e usando um construtor, mas na prática esse não é o caso. Nas tarefas que são constantemente enfrentadas pelo programador 1C, a prioridade é escrever código de forma rápida e eficiente, e ao escrever uma solicitação para o banco de dados manualmente, isso é quase impossível de alcançar, você vai gastar muito tempo precioso tentando fazer corretamente reproduza todas as construções de consulta, encontre erros de digitação que você fez enquanto escrevia, etc. Portanto, não perca seu tempo tentando escrever consultas manualmente, mas use o construtor de consulta. Isso vai lhe poupar tempo e esforços especiais escrever consultas complexas. Para começar a escrever o texto da solicitação, escreva o código:

Request.Text = "";

Depois disso, coloque o cursor entre as aspas, pressione o botão direito do mouse e selecione o item Construtor solicitar. A janela do designer de consulta será aberta.

Agora precisamos selecionar a tabela do banco de dados 1C 8. Precisamos de uma tabela virtual Volume de negócios registro contábil Auto-sustentável... Vamos encontrá-lo no lado esquerdo da janela do construtor

Vamos movê-lo para a área Mesas e vamos preencher os parâmetros. Para todas as tabelas de consultas virtuais, existe um conjunto especial de parâmetros que permitem selecionar os dados desejados da tabela principal (no nosso caso, a tabela principal Registro Contábil Auto-sustentável) Vamos abrir a janela de parâmetros da tabela virtual.

Vamos preencher os parâmetros do período que passamos para a solicitação. Para usar um parâmetro no texto da solicitação, escreva o símbolo antes de seu nome e comercial (&)

Resta preencher a condição para a conta bukh. contabilidade. Para fazer isso, vamos encontrar nos parâmetros da mesa virtual a linha Condição da conta e escrever lá

Conta no HIERARCHY (& Account62)

Você também pode usar o construtor para desenhar as condições clicando no botão com três pontos.

Não há necessidade de impor mais condições à mesa virtual, então pressione o botão OK na janela de parâmetros da tabela virtual. Em seguida, você precisa selecionar os campos de que precisamos na tabela Auto-sustentável. Turnovers(nomeadamente: Contraparte, Acordo da Contraparte, Receitas e Despesas) Para ver a lista de campos disponíveis na tabela que selecionamos, pressione o símbolo "+" ao lado do seu nome. Depois disso, arraste os campos obrigatórios para a área mais à direita do designer de consulta, que é chamada de Campos. Se abrirmos o plano de contas, veremos isso para a conta 62 analítica para A contraparte é Subconto1 e por Contrato da Contratada - Subconto2.

Portanto, a partir dos campos da mesa virtual, selecionamos Subconto1 e Subconto2... Como precisamos da receita e despesa pelo valor, também selecionamos os campos AmountTurnoverDt e AmountTurnoverKt

Preencha os aliases dos campos que escolhemos, para isso vamos para a aba Sindicatos / pseudônimos e defina os nomes dos campos obrigatórios.

Como em nosso relatório os dados serão exibidos hierarquicamente (a contraparte está no primeiro nível e todos os seus contratos estão no segundo), configuraremos a saída de dados na hierarquia usando Totais. Vamos para o marcador no construtor Resultados... Nos campos de agrupamento, arraste sequencialmente Contraparte e Contrato do Empreiteiro, e no final Chegando e Consumo.

Isso conclui o trabalho no construtor de consulta, pressione o botão OK e vemos que o texto do nosso pedido apareceu no código do programa.

Request.Text = "SELECT | Turnovers auto-sustentáveis. Subkonto1 COMO uma contraparte, | Turnovers auto-sustentáveis. Subkonto2 AS A Contractor's Agreement, | Recibo autossuficiente para Turnover.AmountTurnoverDt AS, | Self-supportedTurnover.AmountTurnoverKt AS Consumption| DE | Livro-razão de contabilidade. Auto-sustentável. Rotatividade (e início do período e fim do período, conta em HIERARQUIA (& conta62),) AS Rotatividade auto-sustentável| RESULTADOS | SUM (chegada), | AMOUNT (Consumo) | Software | Contraparte, | Contrato da Contratada ";

Depois de terminar de escrever a solicitação, vamos começar a preencher as áreas DataContractor, DataAgreementContractor e Porão... Preencheremos todas essas áreas com os dados obtidos ao executar a solicitação. Como nossa consulta contém agrupamentos ( Contraparte e Contrato do Empreiteiro) selecione os dados da seguinte forma:

SelectContractor = Query.Run (). Select (QueryResultIndo.OnGroups);

Assim, receberemos registros com totais de todas as contrapartes.

Antes de percorrer os dados de amostra usando um loop, inicializamos as variáveis ​​projetadas para calcular os totais totais para o relatório:

TotalIncome = 0; Consumo total = 0;

Para que os dados do relatório sejam exibidos com uma hierarquia (e se espalhem ao longo de "+"), definiremos o início do agrupamento automático das linhas do documento de planilha:

TabDoc.StartAutoGroupLines ();

Todos os preparativos acabaram, agora vamos começar a examinar os resultados da consulta. Vamos realizar a travessia usando o loop Até

WhileSelectionContractor.Next () Cycle EndCycle;

No início do ciclo, defina os parâmetros para zero Chegando e Consumoáreas DataContractor... Para que serve? Imagine uma situação que para uma contraparte Tio vasya, receita 10 e despesa 5, e para isso a próxima contraparte Tio Petya não há receita nem despesa, neste caso, se não zerarmos os parâmetros Chegando e Consumo, então alinhado pela contraparte Tio Petya obterá receita 5 e despesa 10.

ScopeDataContractor.Parameters.Prihod = 0; ScopeDataContractor.Parameters.Expense = 0;

Depois disso, preenchemos a área DataContractor dados de item de amostra

FillPropertyValues ​​(ScopeDataContractor.Parameters, SelectionContractor);

Depois de preencher os dados, você pode exibir a área em Documento de planilha Como usamos o agrupamento automático de linhas, precisamos indicar o nível da linha no agrupamento (em nosso relatório haverá dois níveis; para empreiteiros, o primeiro para contratos é o segundo).

TabDok.Withdraw (ScopeDataContractor, 1);

Agora, para essa contraparte, faremos uma seleção de acordo com seus contratos.

SelectionContractorAgreement = SelectionContractor.Choose (BypassResultResult.On Groupings);

Vamos realizar a travessia usando o loop Até.

Enquanto SelectionContractor Agreement.Next () Ciclo Fim do Ciclo;

No ciclo de contratos de contrapartes, vamos zerar os parâmetros Chegando e Consumo, preencha a área Acordo de Dados da seleção e exibi-lo em um documento de planilha no segundo nível de registros.

ScopeDataContract.Parameters.Prihod = 0; ScopeDataAgreement.Parameters.Expense = 0; Preencha os valores de propriedade (ScopeDataContract.Parameters, SelectionContractorAgreement); TabDok.Withdraw (ScopeDataContract, 2);

Além disso, neste ciclo, adicionamos os valores atuais às variáveis ​​para calcular os valores totais de receita e despesa.

TotalIncome = TotalIncome + SelectionContractor Agreement.Income; TotalExpense = TotalExpense + SampleContractor Agreement.Expense;

Isso completa a saída dos dados na área DataContractor, DataAgreementContractor concluída, falta concluir o agrupamento automático das linhas do documento de planilha.

TabDoc.FinishAutoGroupLines ();

Totalmente loops responsáveis ​​pela saída de dados na área DataContractor e DataAgreementContractor parece com isso:

TabDoc.StartAutoGroupLines (); Enquanto SampleContractor.Next () Cycle RegionDataContractor.Parameters.Prihod = 0; ScopeDataContractor.Parameters.Expense = 0; FillPropertyValues ​​(ScopeDataContractor.Parameters, SelectionContractor); TabDok.Withdraw (ScopeDataContractor, 1); SelectionContractorAgreement = SelectionContractor.Choose (BypassResultResult.On Groupings); Enquanto SelectionDogovKontragenta.Sleduyuschiy () Cycle ScopeDataDogov.Parametry.Prihod = 0; ScopeDataAgreement.Parameters.Expense = 0; Preencha os valores de propriedade (ScopeDataContract.Parameters, SelectionContractorAgreement); TabDok.Withdraw (ScopeDataContract, 2); TotalIncome = TotalIncome + SelectionContractor Agreement.Income; TotalExpense = TotalExpense + SampleContractor Agreement.Expense; Fim do ciclo; Fim do ciclo; TabDoc.FinishAutoGroupLines ();

Resta a saída dos totais para a área Porão e exibir a própria área em Documento de planilha.

AreaBoard.Parameters.TotalIncoming = TotalIncoming; AreaBoard.Parameters.TotalExpense = TotalExpense; TabDok.Display (Área Basement);

Isso conclui o processo de escrever um relatório externo para 1C 8 sem usar o ACS. Agora ele pode ser gerado no modo 1C: Enterprise 8 e adicionado ao diretório ExternalProcessing Você pode baixar o arquivo de relatório considerado no artigo por.

Assista a um vídeo sobre como criar uma impressão externa para um aplicativo gerenciado:

Para conectar processamentos externos, relatórios, formulários impressos para a plataforma 1C: Enterprise 8.2 foi desenvolvido novo padrão para trabalhar em um aplicativo gerenciado (padrão do subsistema bibliotecas padrão 8.2). Havia "chips" que não existiam antes, a saber:

    O tipo de processamento foi expandido: preencher um objeto, criar objetos relacionados. Agora, em documentos, você pode adicionar seus próprios botões para preencher todo o documento, bem como seus próprios botões para inserir na base.

    Um processamento pode conter uma lista de várias operações (comandos) de uma vez, ou seja, você pode fazer um processamento, onde haverá vários itens de menu ao mesmo tempo: impressão e nota de remessa, impressão de um recibo de venda, impressão de um cartão de garantia. (Nota do autor: no início do padrão antigo, para fazer tais coisas, você tinha que fazer tudo de uma vez (mesmo que não precisasse) e você não precisava fechar, ou desenhar sua própria forma, no quais eram os botões necessários para selecionar a operação necessária)

    Você pode inserir e preencher objetos com base em vários objetos de uma vez, ao invés de um

    Você pode agendar a execução de comandos do servidor (no servidor).

    Você pode definir o modo "Seguro" ou "Inseguro", ou seja, iniciar o processamento levando em consideração a restrição de direitos ou ignorá-los (como em direitos plenos)

    Você pode definir o modo de uso: Não use, depure, use. "Não usar" - não está em uso, "Depurar" - visível apenas para administradores, "Usar no trabalho".

    Você pode incluir o uso em formulários de objeto e em forma de lista

    Você pode vincular um processamento ou relatório a todos os objetos de uma vez.

    Pode ser personalizado acesso rápido a comandos específicos para processamento externo.

    É possível especificar em quais seções da interface o processamento adicional e os relatórios devem aparecer.

Então, o que pode ser conectado às configurações padrão?

Do ponto de vista da plataforma, você pode conectar:

  • processamento externo (arquivos com extensão “epf”);
  • relatórios externos (arquivos com a extensão "erf").

Do ponto de vista da área de aplicação (configuração), você pode conectar processamento externo e relatórios com a visão *:

  • Processamento Adicional
    • Apenas processamento adicional. É possível personalizar
  • Relatório adicional
    • Apenas um relatório adicional
  • Preenchendo o objeto
    • Botões próprios para preencher objetos (documento), anteriormente só existiam botões para preencher a seção tabular.
  • Formulário para impressão
    • Imprimível adicional (o botão "Imprimível adicional" é adicionado)
  • Relatório
    • Um relatório anexado a objetos (a diretórios e documentos).
  • Criação de objetos vinculados
    • Sua entrada com base em (o botão "Criar objetos relacionados ..." é adicionado ao item de menu "Entrada com base em")

* no exemplo da redação “Management of a small company, ed. 1,2 "

Vamos dar uma olhada em como tudo funciona. Para conectar processadores externos e relatórios, existe um padrão que descreve a interface para interagir com o processamento externo e um relatório, e existem requisitos gerais para todos os tipos, e existem específicos para cada tipo de processamento ou relatório.

Vamos começar com os requisitos gerais para todos os tipos de processamento e relatórios. Para criar um processamento ou relatório externo plugável, é necessário declarar a função de exportação ExternalProcessing Information () no módulo de objeto, que deve preencher a estrutura que descreve o comportamento. Um exemplo desta função:

Exportação de Função de Informação de Processamento Externo ()
RegistrationData = Nova Estrutura;
RegistrationData. Insert ("Nome", "Exemplo de uso de processamento externo 8.2.");
RegistrationData.Insert ("SafeMode", True);
RegistrationData. Insert ("Versão", "1.0");

// Processamento Adicional
// Relatório Adicional
// FillingObject
//Relatório
// PrintForm
// Criar LinkedObjects
RegistrationData.Insert ("View", "AdditionalProcessing");

RegistrationData.Insert ("Informações", "O processamento é feito de acordo com o novo padrão para conectar processadores externos 8.2. Um exemplo de processamento" "Hello Word" "");

///////////// Comandos ///////////////////////////
tzCommand = New ValuesTable;
tzComand.Columns.Add ("Identificador");
tzComand.Columns.Add ("Exibir");
tzComand.Columns.Add ("Modificador");
tzKomand.Kolonki.Add ("ShowNotification");
tzComand.Columns.Add ("Uso");


CommandString.Identifier = "1";
lineCommand.View = "command" "Hello Word" "(FormOpening)";

CommandString.Usage = "Abertura de formulário";

CommandString = tzCommand.Add ();
CommandString.Identifier = "2";
CommandString.View = "command" "Hello Word" "(CallClientMethod)";
CommandString.ShowNotification = True;
CommandString.Usage = "CallClientMethod";

CommandString = tzCommand.Add ();
CommandString.Identifier = "3";
CommandString.View = "command" "Hello Word" "(CallServerMethod)";
CommandString.ShowNotification = True;
CommandString.Usage = "CallServerMethod";

RegistrationData.Insert ("Comandos", tzKomand);

//////////////// propósito (em quais objetos é usado) ///////////////////////////
// para imprimir formulários, preencher, inserir objetos vinculados
// Assignment Array = New Array;
//AssignmentArray.Add("Document.* "); // todos os documentos são atribuídos
//AssignmentArray.Add("Document.AvailableReport ");
//ArrayAssignments.Add("Document.OrderBuyer ");
//RegistrationData.Insert ("Assignment", AssignmentArray);

Retornar dados de registro;

EndFunction

Assim, como você pode ver, a função preenche a estrutura RegistrationData, que possui os seguintes elementos (parâmetros):

    Nome - nome curto do tratamento

    Versão - informações sobre a versão de processamento

    Modo de segurança- é responsável por se o processamento deve ser executado levando em consideração os direitos do usuário. Se você definir o valor como "Falso", o processamento ou o relatório será executado sem levar em consideração as restrições de direitos (como no caso de direitos totais). Este recurso apareceu em 8.2, onde, ao criar processos externos e relatórios, o modo é especificado como o segundo parâmetro.

    Exibir - o tipo de processamento ou relatório. Listei os valores possíveis no início do artigo, e os valores possíveis para configuração no código estão indicados no comentário

  • Comandos - uma tabela de valores que lista os comandos usados. Colunas da tabela de valores:
    • Identificador - qualquer string (identificador de comando)
    • Ver - descrição do comando
    • Modificador - string (usado para formulários adicionais para impressão)
    • ShowNotification - uma janela de notificação aparecerá antes e depois da execução (para comandos de cliente e servidor sem um formulário)
    • Uso - modo de início de processamento:
      • Abertura do formulário - o formulário de processamento será aberto
      • ClientMethod call - chamar formulário de método de exportação do cliente
      • Chamada ServerMethod - chame o método de exportação do módulo de processamento

Dependendo do tipo de processamento ou relatório, bem como do modo de lançamento do comando "Utilizar", são chamados os métodos definidos no módulo de formulário, módulo de objeto. A lista de parâmetros passados ​​também é diferente. Exemplos de chamadas e uso de todos os tipos de processamento estão anexados.