1c alias de solicitação esperado.

Lar / Discos rígidos

; Consultas aninhadas (em desenvolvimento).

Recebimento de mercadorias e serviços E Devolução de mercadorias ao fornecedor pelo período especificado.

Novas guias: Uniões/aliases.

Parte teórica da aula nº 4

1C Query Builder permite criar combinações de consultas. Com a ajuda deles, você pode gerar sequencialmente dados obtidos de várias consultas sem usar conexões. A única condição para mesclar é o mesmo conjunto de campos em cada solicitação individual.

No designer, vá para a aba Uniões/aliases. Ele foi projetado para criar junções de consulta e definir aliases para campos de consulta. Os aliases de campo serão necessários se você não estiver satisfeito com os nomes de campo padrão do banco de dados. Se um campo de consulta consistir apenas em um campo de tabela de banco de dados, não será necessário um alias para ele. Se você usou funções de linguagem de consulta ao criar um campo, será necessário um alias para esse campo. O designer de consulta cria aliases padrão para esses campos Campo1…CampoN, esses aliases podem ser substituídos por aqueles que forem mais convenientes para você.

Vejamos as seções da guia Uniões/aliases:

  • Solicitações(quadro vermelho). Esta seção contém uma tabela que mostra todas as consultas combinadas. Usando o menu localizado acima desta seção, você pode adicionar novas, copiar as existentes, excluir as selecionadas e também alterar seus locais. Ao adicionar ou copiar uma solicitação, o designer vai até a aba Tabelas e campos, onde você pode especificar tabelas de banco de dados e os campos obrigatórios para uma nova consulta. Você pode alternar entre consultas usando as guias que aparecerão com lado direito designer, à medida que novas solicitações 1C são adicionadas;

  • Na mesa Solicitações duas colunas:
    • Nome. Definir automaticamente no formato Solicitação 1… Solicitação N;
    • Sem duplicatas. Definido quando é necessário excluir linhas duplicadas ao mesclar com uma consulta anterior. Vale ressaltar que esta flag atuará apenas na fusão da requisição em que está setada com a requisição anterior.

  • Apelidos(quadro azul). Nesta seção, você pode definir aliases para campos de consulta, bem como definir a correspondência dos campos para consultas combinadas, para que, como resultado da consulta, eles fiquem na mesma coluna e sejam exibidos sob o mesmo alias. Se os campos nas consultas mescladas tiverem o mesmo nome, a correspondência entre eles será ajustada automaticamente. Para configurar a correspondência de campos, você precisa encontrar a linha com o alias desejado na tabela, encontrar a consulta necessária nas colunas e selecionar o campo na lista suspensa.

Parte prática da lição nº 4

Vejamos a solução para o problema dada no início da lição. Deixe-me lembrá-lo das condições:

Tarefa: use uma consulta para selecionar todos os documentos publicados Recebimento de mercadorias e serviços E Devolução de mercadorias ao fornecedor pelo período especificado.

  1. Vamos criar uma nova solicitação;
  2. Vamos lançar o designer de consultas;
  3. Vamos selecionar uma mesa Recebimento de Mercadorias e Serviços do fio Documentos;
  4. Da mesa Recebimento de Mercadorias e Serviços selecione um campo Link;
  5. Vamos para a aba Termos;
  6. Na seção Campos, vamos abrir o tópico Recebimento de Mercadorias e Serviços usando o botão “+”;
  7. Vamos encontrar os adereços Data e arraste-o para a seção de condições, selecione o operador de comparação Entre e indicar os parâmetros de início e final do período, por exemplo Início do período E Fim do período;
  8. Vamos para a aba Uniões/aliases.
  9. Adicione uma nova solicitação, sinalize Sem duplicatas não há necessidade de levantar, pois usamos tipos diferentes documentos;

  10. 1C Query Builder irá automaticamente para a guia Tabelas e campos. No lado direito da janela você verá que a segunda solicitação de adesão está ativa;


  11. Vamos repetir os pontos 1 a 7 para a tabela Devolução de mercadorias ao fornecedor;
  12. Vamos para a aba novamente Uniões/aliases. Na tabela de alias você pode ver que os campos Link ambas as tabelas estão na mesma linha, o que significa que os links para ambos os documentos serão encontrados na mesma coluna como resultado da consulta;
  13. Vamos mudar o nome da coluna de Link sobre Documento(defina o alias do campo). Para fazer isso, clique duas vezes com o botão esquerdo do mouse no nome do campo. Depois disso, você pode definir seu nome, escreva-o lá Documento;

  14. A solicitação está pronta, clique no botão “OK” na parte inferior da janela do designer.

Como resultado, receberemos uma solicitação com o seguinte texto.

A linguagem de consulta em 1C 8 é um análogo simplificado da conhecida “linguagem de programação estruturada” (como é mais frequentemente chamada SQL). Mas em 1C ele é usado apenas para leitura de dados; um modelo de dados de objeto é usado para alterar dados.

Outra diferença interessante é a sintaxe russa. Embora na verdade você possa usar construções em inglês.

Solicitação de exemplo:

ESCOLHER
Bancos.Nome,
Bancos.CorrAccount
DE
Directory.Banks COMO Bancos

Este pedido permitir-nos-á ver informação sobre o nome e conta de correspondente de todos os bancos existentes na base de dados.

A linguagem de consulta é a mais simples e maneira eficaz obtenção de informações. Como pode ser visto no exemplo acima, na linguagem de consulta você precisa usar nomes de metadados (esta é uma lista de objetos do sistema que compõem a configuração, ou seja, diretórios, documentos, registros, etc.).

Descrição das construções da linguagem de consulta

Estrutura de consulta

Para obter os dados, basta utilizar as construções “SELECT” e “FROM”. A solicitação mais simples é assim:

SELECIONE * DE Diretórios.Nomenclatura

Onde “*” significa selecionar todos os campos da tabela, e Directories.Nomenclature – o nome da tabela no banco de dados.

Vejamos um exemplo mais complexo e geral:

ESCOLHER
<ИмяПоля1>COMO<ПредставлениеПоля1>,
Soma(<ИмяПоля2>) COMO<ПредставлениеПоля2>
DE
<ИмяТаблицы1>COMO<ПредставлениеТаблицы1>
<ТипСоединения>COMPOSTO<ИмяТаблицы2>COMO<ПредставлениеТаблицы2>
POR<УсловиеСоединениеТаблиц>

ONDE
<УсловиеОтбораДанных>

Agrupar por
<ИмяПоля1>

ENCOMENDAR POR
<ИмяПоля1>

RESULTADOS
<ИмяПоля2>
POR
<ИмяПоля1>

Nesta consulta, selecionamos os dados dos campos “FieldName1” e “FieldName1” das tabelas “TableName1” e “TableName”, atribuímos sinônimos aos campos usando o operador “HOW” e os conectamos usando uma determinada condição “TableConnectionCondition ”.

A partir dos dados recebidos, selecionamos apenas os dados que atendem à condição “WHERE” “Condição de seleção de dados”. A seguir, agrupamos a solicitação pelo campo “Nome do campo1”, enquanto somamos o “Nome do campo2”. “Nome do Campo1” e o campo final “Nome do Campo2”.

A última etapa é classificar a solicitação usando a construção ORDER BY.

Projetos gerais

Vejamos as estruturas gerais da linguagem de consulta 1C 8.2.

PRIMEIROn

Usando este operador, você pode obter o número n dos primeiros registros. A ordem dos registros é determinada pela ordem na consulta.

SELECIONE OS 100 PRIMEIROS
Bancos.Nome,
Bancos. Código AS BIC
DE
Directory.Banks COMO Bancos
ENCOMENDAR POR
Bancos.Nome

A solicitação receberá os 100 primeiros registros do diretório “Bancos”, ordenados em ordem alfabética.

PERMITIDO

Este design é relevante para trabalhar com o mecanismo. A essência do mecanismo é restringir a leitura (e outras ações) aos usuários de registros específicos em uma tabela de banco de dados, e não da tabela como um todo.

Se um usuário tentar utilizar uma consulta para ler registros que não estão disponíveis para ele, ele receberá uma mensagem de erro. Para evitar isso, você deve utilizar a construção “ALLOWED”, ou seja, a requisição irá ler apenas os registros que lhe são permitidos.

SELECIONE PERMITIDO
Link do repositório de informações adicionais.
DE
Diretório.Repositório de informações adicionais

VÁRIOS

Usar “DIFERENTE” evitará que linhas duplicadas entrem no resultado da consulta 1C. Duplicação significa que todos os campos de solicitação correspondem.

SELECIONE OS 100 PRIMEIROS
Bancos.Nome,
Bancos. Código AS BIC
DE
Directory.Banks COMO Bancos

Tabela Vazia

Esta construção é usada muito raramente para combinar consultas. Ao ingressar, pode ser necessário especificar uma tabela aninhada vazia em uma das tabelas. O operador “EmptyTable” é ideal para isso.

Exemplo da ajuda 1C 8:

SELECIONE Link.Número, TABELA VAZIA.(Nº, Item, Quantidade) COMO Composição
DO Documento. Fatura de Despesas
COMBINE TUDO
SELECIONE Link.Number, Contents.(LineNumber, Produto, Quantidade)
DE Documento.Fatura Documento.Fatura.Composição.*

É NULO

Um recurso muito útil que permite evitar muitos erros. YesNULL() permite substituir o valor NULL pelo valor desejado. Muito utilizado para verificar a presença de um valor em tabelas unidas, por exemplo:

ESCOLHER
Referência de Nomenclatura,
IsNULL(Item Restante.QuantidadeRemanescente,0) AS QuantidadeRemanescente
DE


Pode ser usado de outras maneiras. Por exemplo, se para cada linha não se sabe em qual tabela o valor existe:

ISNULL(FaturaRecebida.Data, FaturaEmitida.Data)

COMO é um operador que nos permite atribuir um nome (sinônimo) a uma tabela ou campo. Vimos um exemplo de uso acima.

Essas construções são muito semelhantes - elas permitem obter uma representação em string do valor desejado. A única diferença é que REPRESENTATION converte qualquer valor em um tipo string, enquanto REPRESENTATIONREF converte apenas valores de referência. REPRESENTAÇÃO DE REFERÊNCIA é recomendada para uso em consultas de sistema de composição de dados para otimização, a menos, é claro, que o campo de dados de referência seja planejado para ser usado em seleções.

ESCOLHER
View(Link), //string, por exemplo “Relatório antecipado nº 123 datado de 10/10/2015
View(DeletionMark) AS DeleteMarkText, //string, “Sim” ou “Não”
ViewReferences(DeletionMark) AS DeleteMarkBoolean //booleano, True ou False
DE
Documento.Relatório Avançado

EXPRESSAR

Express permite converter valores de campo para o tipo de dados desejado. Você pode converter um valor em um tipo primitivo ou em um tipo de referência.

Expresso para um tipo de referência é usado para restringir os tipos de dados solicitados em campos de tipo complexo, geralmente usados ​​para otimizar o desempenho do sistema. Exemplo:

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items).Tipo de ActivityForTaxAccountingCosts

Para tipos primitivos, esta função é frequentemente usada para limitar o número de caracteres em campos de comprimento ilimitado (tais campos não podem ser comparados). Para evitar o erro " Parâmetros inválidos na operação de comparação. Você não pode comparar campos
comprimento ilimitado e campos de tipos incompatíveis
", você precisa expressar esses campos da seguinte forma:

EXPRESS(Comentário AS Linha(150))

DATA DIFERENÇA

Obtenha 267 videoaulas em 1C gratuitamente:

Um exemplo de uso de IS NULL em uma solicitação 1C:

SELECIONE * DE
Referência
CONEXÃO ESQUERDA RegisterAccumulations.ProductsInWarehouses.Remaining AS Produto Restante
Software NomenclatureRef.Link = MercadoriasVendidasCommitteesRemains.Nomenclature
ONDE NÃO Mercadorias Restantes QuantidadeRemanescente É NULO.

O tipo de dados em uma consulta pode ser determinado usando as funções TYPE() e VALUETYPE() ou usando o operador lógico REFERENCE. As duas funções são semelhantes.

Valores predefinidos

Além de usar parâmetros passados ​​em consultas na linguagem de consulta 1C, você pode usar valores predefinidos ou . Por exemplo, transferências, diretórios predefinidos, planos de contas e assim por diante, é utilizada a construção “Value()”.

Exemplo de uso:

WHERE Nomenclatura.Tipo de Nomenclatura = Valor(Diretório.Tipos de Nomenclatura.Produto)

WHERE Contrapartes.Tipo de informações de contato = Valor(Enumeração.Tipos de informações de contato.Telefone)

ONDE Saldos de contas. Conta contábil = Valor (Plano de contas. Lucro. Perda de lucros)

Conexões

Existem 4 tipos de conexões: ESQUERDA, CERTO, COMPLETO, INTERNO.

CONEXÃO ESQUERDA E DIREITA

As junções são usadas para vincular duas tabelas com base em uma condição específica. Recurso quando PARTIR À ESQUERDAé que pegamos a primeira tabela especificada em sua totalidade e vinculamos condicionalmente a segunda tabela. Os campos da segunda tabela que não puderam ser vinculados pela condição são preenchidos com o valor NULO.

Por exemplo:

Irá retornar toda a tabela de Contrapartes e preencher o campo “Banco” apenas nos locais onde a condição “Contrapartes.Nome = Bancos.Nome” for atendida. Se a condição não for atendida, o campo Banco será definido como NULO.

RIGHT JOIN na linguagem 1C absolutamente semelhante Conexão ESQUERDA, com exceção de uma diferença - em DIREITO DE CONEXÃO A tabela “principal” é a segunda, não a primeira.

CONEXÃO COMPLETA

CONEXÃO COMPLETA difere da esquerda e da direita porque exibe todos os registros de duas tabelas e conecta apenas aqueles que podem ser conectados por condição.

Por exemplo:

DE

CONEXÃO COMPLETA
Directory.Banks COMO Bancos

POR

A linguagem de consulta retornará ambas as tabelas completamente somente se a condição para unir os registros for atendida. Ao contrário de uma junção esquerda/direita, é possível que NULL apareça em dois campos.

JUNÇÃO INTERNA

JUNÇÃO INTERNA difere de completo porque exibe apenas os registros que podem ser conectados de acordo com uma determinada condição.

Por exemplo:

DE
Diretório de Contrapartes AS Clientes

JUNÇÃO INTERNA
Directory.Banks COMO Bancos

POR
Clientes.Nome = Bancos.Nome

Esta consulta retornará apenas linhas em que o banco e a contraparte tenham o mesmo nome.

Associações

As construções JOIN e JOIN ALL combinam dois resultados em um. Aqueles. o resultado da execução de dois será “fundido” em um, comum.

Ou seja, o sistema funciona exatamente como os normais, apenas para uma tabela temporária.

Como usar INDEX BY

Contudo, um ponto deve ser levado em consideração. A construção de um índice em uma tabela temporária também leva tempo para ser concluída. Portanto, é aconselhável usar a construção “ ” somente se houver certeza de que haverá mais de 1-2 registros na tabela temporária. EM de outra forma o efeito pode ser o oposto – o desempenho dos campos indexados não compensa o tempo necessário para construir o índice.

ESCOLHER
Taxas de câmbio Última seção transversal Moeda AS Moeda,
Taxas de câmbio Última seção transversal.
Taxas de moeda PUT
DE
Registro de informações.Taxas de moeda.Última fatia (&Período,) Taxas de moeda ASÚltima fatia
ÍNDICE POR
Moeda
;
ESCOLHER
PreçosNomenclatura.Nomenclatura,
PreçosNomenclaturas.Preço,
PreçosNomenclaturas.Moeda,
Taxas de câmbio.Taxa
DE
Cadastro de Informações.Preços de Nomenclatura.Última Fatia(&Período,
Nomenclatura B (&Nomenclatura) AND PriceType = &PriceType) AS PriceNomenclature
LEFT JOIN Taxas de câmbio AS Taxas de câmbio
Preços de softwareNomenclaturas.Moeda = Taxas de moeda.Moeda

Agrupamento

A linguagem de consulta 1C permite que você use funções agregadas especiais ao agrupar os resultados da consulta. O agrupamento também pode ser usado sem funções agregadas para “eliminar” duplicatas.

Existem as seguintes funções:

Quantidade, Quantidade, Número de diferentes, Máximo, Mínimo, Média.

Exemplo #1:

ESCOLHER
Nomenclatura de Vendas de Bens e Serviços.
SOMA(Vendas de MercadoriasServiçosBens.Quantidade) AS Quantidade,
SOMA(Vendas de MercadoriasServiçosBens.Valor) AS Valor
DE

Agrupar por
Nomenclatura de Vendas de Bens e Serviços.

A consulta recebe todas as linhas com mercadorias e as resume por quantidade e valores por item.

Exemplo nº 2

ESCOLHER
Bancos.Código,
QUANTIDADE(DIFERENTES Banks.Link) COMO Número de duplicatas
DE
Directory.Banks COMO Bancos
Agrupar por
Bancos.Código

Este exemplo exibirá uma lista de BICs no diretório “Bancos” e mostrará quantas duplicatas existem para cada um deles.

Resultados

Os resultados são uma forma de obter dados de um sistema com estrutura hierárquica. Funções agregadas podem ser usadas para campos de resumo, assim como para agrupamentos.

Uma das maneiras mais populares de usar os resultados na prática é a baixa de mercadorias em lote.

ESCOLHER




DE
Documento. Venda de Bens e Serviços COMO Vender Bens e Serviços.
ENCOMENDAR POR

RESULTADOS
SOMA(Quantidade),
SOMA(Soma)
POR
Nomenclatura

O resultado da consulta será o seguinte hierárquico:

Resultados gerais

Se você precisar obter os totais de todos os “totais”, use o operador “GENERAL”.

ESCOLHER
Vendas de Bens e Serviços Bens. Nomenclatura AS Nomenclatura,
Vendas de Bens e Serviços Bens Link AS Documento,
Vendas de bens e serviços. Quantidade AS Quantidade,
Vendas de Bens e Serviços Valor AS Valor.
DE
Documento. Venda de Bens e Serviços COMO Vender Bens e Serviços.
ENCOMENDAR POR
Data de Vendas de Bens e Bens de Serviços.
RESULTADOS
SOMA(Quantidade),
SOMA(Soma)
POR
EM GERAL,
Nomenclatura

Como resultado da execução da solicitação, obtemos o seguinte resultado:

Em que 1 nível de agrupamento é a agregação de todos os campos necessários.

Organizando

O operador ORDER BY é usado para classificar o resultado de uma consulta.

A classificação por tipos primitivos (string, número, booleano) segue as regras usuais. Para campos de tipo de referência, a classificação ocorre pela representação interna do link (o identificador exclusivo), em vez de por código ou por representação de referência.

ESCOLHER

DE
Diretório.Nomenclatura AS Nomenclatura
ENCOMENDAR POR
Nome

A solicitação exibirá uma lista de nomes no diretório de nomenclatura, classificados em ordem alfabética.

Pedido automático

O resultado de uma consulta sem classificação é um conjunto de linhas apresentado de forma caótica. Os desenvolvedores da plataforma 1C não garantem que as linhas serão exibidas na mesma sequência ao executar as mesmas consultas.

Se precisar exibir registros de tabela em uma ordem constante, você deverá usar a construção Auto-Order.

ESCOLHER
Nomenclatura.Nome AS Nome
DE
Diretório.Nomenclatura AS Nomenclatura
PEDIDO AUTOMÁTICO

Mesas virtuais

Tabelas virtuais em 1C são recurso exclusivo Linguagem de consulta 1C, que não é encontrada em outras sintaxes semelhantes. Mesa virtual – maneira rápida obtenção de informações de perfil de registros.

Cada tipo de registro possui seu próprio conjunto de tabelas virtuais, que podem diferir dependendo das configurações do registro.

  • corte do primeiro;
  • corte deste último.
  • sobras;
  • revoluções;
  • saldos e rotatividade.
  • movimentos do subconto;
  • revoluções;
  • velocidade Dt Kt;
  • sobras;
  • saldos e rotatividade
  • subconto.
  • base;
  • dados gráficos;
  • período de validade real.

Para o desenvolvedor da solução, os dados são retirados de uma tabela (virtual), mas na verdade a plataforma 1C os retira de várias tabelas, transformando-as no formato desejado.

ESCOLHER
Produtos em Armazéns Restos e Nomenclatura,
ProdutosEmArmazénsRemanescenteAndTurnover.QuantidadeInicialRemanescente,
ProdutosEmArmazénsRestosEFuturo.QuantidadeFuturo,
MercadoriasEmArmazénsRestosEFuturo.QuantidadeEntrada,
MercadoriasEmArmazénsRestosEFuturo.QuantidadeConsumo,
ProdutosEmArmazénsRestosEFuturo.QuantidadeFinalResto
DE
RegistrarAcumulações.MercadoriasEmArmazéns.RestosEFuturo COMO MercadoriasEmArmazénsRestosEFuturo

Esta solicitação permite que você obtenha rapidamente grande número dados.

Opções de mesa virtual

Um aspecto muito importante do trabalho com tabelas virtuais é o uso de parâmetros. Parâmetros de tabela virtual – parâmetros especializados para seleção e configuração.

Para tais tabelas, considera-se incorreto utilizar a seleção na construção “WHERE”. Além de a consulta ficar abaixo do ideal, é possível receber dados incorretos.

Um exemplo de uso desses parâmetros:

Registo de Acumulações de Mercadorias em Armazéns e Movimentos (& Início do Período, & Fim do Período, Mês, Movimentos e Fronteiras do Período, Nomenclatura = & Nomenclatura Obrigatória)

Algoritmo para tabelas virtuais

Por exemplo, a tabela virtual mais utilizada do tipo “Restos” armazena dados de duas tabelas físicas – saldos e movimentos.

Ao utilizar uma tabela virtual, o sistema realiza as seguintes manipulações:

  1. Obtemos o valor calculado mais próximo em termos de data e medidas na tabela de totais.
  2. “Somamos” o valor da tabela de movimentos ao valor da tabela de totais.


Tal passos simples pode melhorar significativamente o desempenho do sistema como um todo.

Usando o Construtor de Consultas

Construtor de consultas– uma ferramenta integrada ao sistema 1C Enterprise que facilita muito o desenvolvimento de consultas de banco de dados.

O construtor de consulta é bastante simples e intuitivo interface clara. No entanto, vamos examinar mais detalhadamente o uso do construtor de consulta.

O construtor do texto de consulta é iniciado no menu de contexto ( clique com o botão direito mouse) no lugar certo no código do programa.

Descrição do construtor de solicitação 1C

Vejamos cada guia do designer com mais detalhes. A exceção é a aba Builder, que é tema para outra discussão.

Guia Tabelas e Campos

Esta guia especifica a fonte de dados e os campos que precisam ser exibidos no relatório. Em essência, as construções SELECT.. FROM são descritas aqui.

A fonte pode ser uma tabela de banco de dados física, uma tabela de registro virtual, tabelas temporárias, consultas aninhadas, etc.

No menu de contexto das tabelas virtuais, você pode definir os parâmetros da tabela virtual:

Guia Conexões

A aba é utilizada para descrever conexões de diversas tabelas e criar construções com a palavra CONNECTION.

Guia Agrupamento

Nesta aba, o sistema permite agrupar e resumir os campos obrigatórios do resultado da tabela. Descreve o uso das construções GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, QUANTITY, NUMBER OF DIFFERENT.

Guia Condições

Responsável por tudo que vem no texto da solicitação após a construção do WHERE, ou seja, por todas as condições impostas aos dados recebidos.

Guia Avançado

Guia Adicionalmente repleto de todos os tipos de parâmetros que são muito importantes. Vejamos cada uma das propriedades.

Agrupamento Selecionando registros:

  • Primeiro N– um parâmetro que retorna apenas N registros para a consulta (o operador FIRST)
  • Sem duplicatas– garante a unicidade dos registros recebidos (operador DIFERENTE)
  • Permitido– permite selecionar apenas os registros que o sistema permite selecionar levando em consideração (construção PERMITIDA)

Agrupamento Tipo de solicitação determina que tipo de consulta será: recuperação de dados, criação de uma tabela temporária ou destruição de uma tabela temporária.

Abaixo há uma bandeira Bloqueie os dados recebidos para modificação posterior. Permite ativar a possibilidade de definir o bloqueio de dados, o que garante a segurança dos dados desde o momento da sua leitura até à sua alteração (relevante apenas para o modo Bloqueio automático, design FOR CHANGE).

Guia Junções/Aliases

Esta guia do designer de consulta define a capacidade de unir diferentes tabelas e aliases (a construção HOW). As tabelas estão indicadas no lado esquerdo. Se você definir os sinalizadores opostos à tabela, a construção UNITE será usada, caso contrário - UNITE ALL (diferenças entre os dois métodos). No lado direito é indicada a correspondência dos campos nas diferentes tabelas; caso a correspondência não seja especificada, a consulta retornará NULL;

Guia Pedido

Especifica a ordem em que os valores são classificados (ORDER BY) - decrescente (DESC) ou crescente (ASC).

Há também uma bandeira interessante - Pedido automático(no pedido - PEDIDO AUTOMÁTICO). Por padrão, o sistema 1C exibe os dados em uma ordem “caótica”. Se você definir esse sinalizador, o sistema classificará os dados por dados internos.

Guia Lote de Consultas

Na aba do designer de consultas, você pode criar novas e também utilizá-las como navegação. No texto da solicitação, os pacotes são separados pelo símbolo “;” (vírgula).

Botão “Consulta” no designer de consultas

No canto inferior esquerdo do designer de solicitações há um botão Solicitar, com o qual você pode visualizar o texto da solicitação a qualquer momento:

Nesta janela você pode fazer ajustes na solicitação e executá-la.


Usando o console de consulta

O Query Console é uma maneira simples e conveniente de depurar consultas complexas e obter informações rapidamente. Neste artigo, tentarei descrever como usar o Query Console e fornecer um link para fazer download do Query Console.

Vamos dar uma olhada mais de perto nesta ferramenta.

Baixe o console de consulta 1C

Primeiro de tudo, para começar a trabalhar com o console de consulta, você precisa baixá-lo de algum lugar. Os tratamentos costumam ser divididos em dois tipos – formas controladas e convencionais (ou, às vezes, são chamados de 8.1 e 8.2/8.3).

Tentei combinar esses dois tipos em um tratamento - em modo desejado operação, o formulário desejado é aberto (no modo gerenciado, o console só funciona no modo grosso).

Descrição do console de consulta 1C

Vamos começar examinando o console de consulta com uma descrição do painel principal de processamento:

No cabeçalho do console de consulta, você pode ver o tempo de execução da última consulta com precisão de milissegundos, o que permite comparar diferentes designs em termos de desempenho.

O primeiro grupo de botões da barra de comando é responsável por salvar as consultas atuais no arquivo externo. Isso é muito conveniente; você sempre pode voltar a escrever uma solicitação complexa. Ou, por exemplo, armazene uma lista de exemplos típicos de determinados designs.

À esquerda, no campo “Solicitação”, você pode criar novas solicitações e salvá-las em uma estrutura em árvore. O segundo grupo de botões é responsável por gerenciar a lista de solicitações. Com ele você pode criar, copiar, excluir e mover uma solicitação.

  • Executarsolicitar– execução e resultados simples
  • Executar pacote– permite visualizar todas as consultas intermediárias em um lote de consultas
  • Visualizando tabelas temporárias– permite que você veja os resultados que as consultas temporárias retornam em uma tabela

Parâmetros de solicitação:

Permite definir os parâmetros atuais da solicitação.

Na janela de parâmetros de consulta, é interessante o seguinte:

  • Botão Obter da solicitação encontra automaticamente todos os parâmetros da solicitação para conveniência do desenvolvedor.
  • Bandeira Parâmetros comuns para todas as solicitações– quando instalado, seu processamento não limpa os parâmetros ao passar de solicitação em solicitação na lista geral de solicitações.

Defina um parâmetro com uma lista de valoresÉ muito simples, basta ao escolher um valor de parâmetro, clicar no botão limpar valor (cruz), o sistema solicitará que você selecione o tipo de dado, onde você precisa selecionar “Lista de Valores”:

Também no painel superior há um botão para acessar as configurações do console de consulta:

Aqui você pode especificar parâmetros para consultas de salvamento automático e parâmetros de execução de consultas.

O texto da solicitação é inserido no campo de solicitação do console. Isso pode ser feito simplesmente digitando um teste de consulta ou chamando uma ferramenta especial - o designer de consulta.

O construtor de solicitação 1C 8 é chamado de menu de contexto(botão direito do mouse) ao clicar no campo de entrada:

Também neste menu existem tais recursos úteis, como limpar ou adicionar quebras de linha (“|”) à solicitação ou obter o código da solicitação neste formato conveniente:

Solicitação = Nova Solicitação;
Solicitação.Text = ”
|SELECIONE
| Moedas.Link
|DE
| Diretório.Moedas AS Moedas”;
RequestResult = Request.Execute();

O campo inferior do console de consulta exibe o campo de resultado da consulta, por isso este processamento foi criado:



Além disso, o console de consultas, além da lista, pode exibir dados na forma de uma árvore - para consultas contendo totais.

Otimização de consulta

Um dos pontos mais importantes para aumentar a produtividade da empresa 1C 8.3 é otimizaçãosolicitações. Este ponto também é muito importante quando passando na certificação. Abaixo falaremos sobre motivos típicos para desempenho de consulta não ideal e métodos de otimização.

Seleções em uma tabela virtual usando a construção WHERE

É necessário aplicar filtros nos detalhes da tabela virtual somente através dos parâmetros do VT. Sob nenhuma circunstância você deve usar a construção WHERE para seleção em uma tabela virtual; isso é um erro grosseiro do ponto de vista da otimização; No caso de seleção através de WHERE, de fato, o sistema receberá TODOS os registros e só então selecionará os necessários.

CERTO:

ESCOLHER

DE
Cadastro de Acumulações. Liquidações Mútuas com Participantes de Organizações (.
,
Organização = &Organização
E Individual = &Individual) COMO Liquidações mútuas com participantes de organizações Saldos

ERRADO:

ESCOLHER
Liquidações mútuas com participantes de saldos de organizações.
DE
Cadastro de Acumulações com Participantes de Organizações (,) COMO Liquidações Mútuas com Participantes de Organizações.
ONDE
Liquidações mútuas com participantes de saldos de organizações Organização = & Organização.
E Liquidações Mútuas com Participantes de Saldos de Organizações Individual = &Individual.

Obtendo o valor de um campo de tipo complexo usando um ponto

Ao receber dados de tipo complexo em uma consulta através de um ponto, o sistema conecta com left join exatamente tantas tabelas quantos forem os tipos possíveis no campo do tipo complexo.

Por exemplo, é altamente indesejável para otimização acessar o campo de registro de registro – registrador. O registrador possui um tipo de dados composto, entre os quais estão todos os tipos de documentos possíveis que podem gravar dados no registrador.

ERRADO:

ESCOLHER
Conjunto de registros.Recorder.Date,
RecordSet.Quantidade
DE
RegisterAccumulations.ProductsOrganizations AS SetRecords

Ou seja, de fato, tal consulta acessará não uma tabela, mas 22 tabelas de banco de dados (este registro possui 21 tipos de registradores).

CERTO:

ESCOLHER
ESCOLHA
QUANDO ProdutosOrg.Registrar LINK Documento.Vendas de Produtos e Serviços
ENTÃO EXPRESSA(ProdutosOrg.Registrar AS Documento.Vendas de MercadoriasServiços).Data
QUANDO GoodsOrg.Registrar LINK Documento.Recebimento de MercadoriasServiços
ENTÃO EXPRESSA(GoodsOrg.Registrar AS Document.Receipt of GoodsServices).Data
TERMINA COMO DATA,
ProdutosOrg.Quantidade
DE
RegistrarAcumulações.ProdutosOrganizações AS ProdutosOrganização

Ou a segunda opção é adicionar essas informações aos detalhes, por exemplo, no nosso caso, adicionar uma data.

CERTO:

ESCOLHER
ProdutosOrganizações.Data,
ProdutosOrganizações.Quantidade
DE
Registro de Acumulações de Bens de Organizações COMO Bens de Organizações.

Subconsultas em uma condição de junção

Para otimização, é inaceitável usar subconsultas em condições de junção; isso retarda significativamente a consulta. É aconselhável usar VT nesses casos. Para se conectar, é necessário utilizar apenas metadados e objetos VT, previamente indexados por campos de conexão.

ERRADO:

ESCOLHER …

JUNTE-SE À ESQUERDA (
SELECIONE EM RegisterInformation.Limits
ONDE …
GRUPO POR...
) POR …

CERTO:

ESCOLHER …
Limites PUT
DE Registro de Informações.Limites
ONDE …
GRUPO POR...
ÍNDICE POR...;

ESCOLHER …
DO Documento de Vendas de Bens e Serviços
Limites de LEFT JOIN
POR …;

Unindo Registros com Tabelas Virtuais

Existem situações em que, ao conectar uma mesa virtual a outras, o sistema não funciona de maneira ideal. Neste caso, para otimizar o desempenho da consulta, pode-se tentar colocar a tabela virtual em uma temporária, não esquecendo de indexar os campos unidos na consulta da tabela temporária. Isso se deve ao fato de que os VTs geralmente estão contidos em várias tabelas físicas do SGBD, como resultado, uma subconsulta é compilada para selecioná-los e o problema acaba sendo semelhante ao ponto anterior;

Usando seleções baseadas em campos não indexados

Um dos erros mais comuns ao escrever consultas é usar condições em campos não indexados, isso contradiz regras de otimização de consulta. O SGBD não pode executar uma consulta de maneira ideal se a consulta incluir seleção em campos não indexáveis. Se você usar uma tabela temporária, também precisará indexar os campos de conexão.

Deve haver um índice adequado para cada condição. Um índice adequado é aquele que satisfaz os seguintes requisitos:

  1. O índice contém todos os campos listados na condição.
  2. Esses campos estão no início do índice.
  3. Essas seleções são consecutivas, ou seja, valores que não estão envolvidos na condição de consulta não ficam “entalados” entre eles.

Se o SGBD não selecionar os índices corretos, toda a tabela será verificada - isso terá um impacto muito negativo no desempenho e pode levar ao bloqueio prolongado de todo o conjunto de registros.

Usando OR lógico em condições

Isso é tudo, este artigo abordou os aspectos básicos da otimização de consultas que todo especialista 1C deveria conhecer.

Um curso em vídeo gratuito muito útil sobre desenvolvimento e otimização de consultas, Eu recomendo fortemente para iniciantes e muito mais!

Solicitações são projetados para extrair e processar informações do banco de dados para fornecê-las ao usuário na forma exigida. Processar aqui significa agrupar campos, classificar linhas, calcular totais, etc. Você não pode alterar dados usando consultas em 1C!

A solicitação é executada de acordo com as instruções fornecidas - solicitar texto. O texto da solicitação é compilado de acordo com a sintaxe e as regras linguagem de consulta. A linguagem de consulta 1C:Enterprise 8 é baseada no padrão SQL, mas tem algumas diferenças e extensões.

Esquema de trabalhar com uma solicitação

O esquema geral de trabalho com uma solicitação consiste em várias etapas sucessivas:

  1. Criando um objeto Request e definindo o texto da solicitação;
  2. Configuração de parâmetros de solicitação;
  3. Executando uma solicitação e obtendo o resultado;
  4. Ignorando o resultado da solicitação e processando os dados recebidos.

1. Objeto Solicitar tem a propriedade Texto, ao qual você precisa atribuir o texto da solicitação.

// Opção 1
Solicitação = Nova Solicitação;
Solicitar . Texto =
"ESCOLHER
| Taxas de câmbio.Período,
| Taxas de câmbio. Moeda,
| Taxas de câmbio.Taxa
|DE

|ONDE
;

// Opção 2
Solicitação = Nova Solicitação("ESCOLHER
| Taxas de câmbio.Período,
| Taxas de câmbio. Moeda,
| Taxas de câmbio.Taxa
|DE
| Registro de Informações.Taxas de Moeda AS Taxas de Moeda
|ONDE
| Taxas de câmbio.Moeda = &Moeda");

2. A configuração dos valores dos parâmetros é realizada usando o método SetParameter(< Имя>, < Значение>) . Os parâmetros no texto da solicitação são indicados pelo símbolo “ & " e geralmente são usados ​​em condições de seleção (seção WHERE) e em parâmetros de tabelas virtuais.

Solicitar);

3. Após atribuir o texto e definir os parâmetros, a solicitação deve ser executada e o resultado da execução obtido. A execução é realizada pelo método Execute(), que retorna um objeto Resultado da consulta. A partir do resultado da consulta você pode:

  • obter uma seleção usando o método Select (< ТипОбхода>, < Группировки>, < ГруппировкиДляЗначенийГруппировок>) ;
  • fazer upload de valores para uma tabela de valores ou árvore de valores usando o método Upload (< ТипОбхода>) .

//Recebe uma amostra

Amostra = Resultado da consulta. Escolher();

// Obtendo uma tabela de valores
RequestResult = Solicitação. Correr();
Mesa = Resultado da consulta. Descarregar();

4. Você pode ignorar a seleção do resultado da consulta usando um loop:

Tchau Loop Sample.Next()
Relatório(Seleção.Curso);
Fim do Ciclo;

Um exemplo completo de como trabalhar com uma solicitação pode ser assim:

// Estágio 1. Criando uma solicitação e definindo o texto da solicitação
Solicitação = Nova Solicitação;
Solicitar . Texto =
"ESCOLHER
| Taxas de câmbio.Período,
| Taxas de câmbio. Moeda,
| Taxas de câmbio.Taxa
|DE
| Registro de Informações.Taxas de Moeda AS Taxas de Moeda
|ONDE
| Taxas de câmbio.Moeda = &Moeda";

// Estágio 2. Configuração de parâmetros
Solicitar . SetParameter("Moeda", SelectedCurrency);

// Etapa 3. Execução da consulta e obtenção da amostra
RequestResult = Solicitação. Correr();
Amostra = Resultado da consulta. Escolher();

//Percorrendo a seleção
Tchau Loop Sample.Next()
Relatório(Seleção.Curso);
Fim do Ciclo;

Composição do texto da solicitação

O texto da solicitação consiste em várias seções:

  1. Descrição da solicitação— lista de campos e fontes de dados selecionáveis;
  2. Mesclando consultas— expressões “UNITE” e “UNITE ALL”;
  3. Organizando resultados— a expressão “ORDER BY...”;
  4. Pedido automático— a expressão “ENCOMENDA AUTOMÁTICA”;
  5. Descrição dos resultados- a expressão “RESULTADOS… POR…”.

Apenas a primeira seção é obrigatória.

Tabelas temporárias e consultas em lote

A linguagem de consulta 1C suporta o uso tabelas temporárias— tabelas obtidas como resultado de uma consulta e armazenadas temporariamente.

Muitas vezes você pode encontrar uma situação em que precisa usar não tabelas de banco de dados como origem de uma consulta, mas o resultado da execução de outra consulta. Este problema pode ser resolvido usando consultas aninhadas ou tabelas temporárias. O uso de tabelas temporárias permite simplificar o texto de uma consulta complexa, dividindo-o em suas partes componentes, e também, em alguns casos, agilizar a execução da consulta e reduzir o número de bloqueios. Para trabalhar com tabelas temporárias, utilize o objeto Gerenciador de horário. Uma tabela temporária é criada usando a palavra-chave PLACE seguida do nome da tabela temporária.

ManagerVT = Novo TemporaryTablesManager;
Solicitação = Nova Solicitação;
Solicitar . ManagerTemporaryTables = ManagerVT;

Solicitar . Texto =
"ESCOLHER
| Moedas.Código,
| Moedas.Nome
|Colocar em moeda
|DE
| Directory.Currencies AS Moedas";

RequestResult = Solicitação. Executar();

Para usar a tabela temporária VTVcurrency em outras consultas, é necessário atribuir um gerenciador de tabela temporária comum a essas consultas: Gerenciador VT.

Solicitação em loteé uma solicitação que contém várias solicitações separadas pelo caractere “;” Ao executar uma consulta em lote, todas as consultas incluídas nela são executadas sequencialmente e os resultados de todas as tabelas temporárias ficam disponíveis para todas as consultas subsequentes. Não é necessário atribuir explicitamente um gerenciador de tabela temporário a consultas em lote. Se um gerenciador de tabelas temporárias não for atribuído, todas as tabelas temporárias serão excluídas imediatamente após a execução da consulta.

Para consultas em lote, está disponível o método ExecuteBatch(), que executa todas as consultas e retorna uma matriz de resultados. As tabelas temporárias em uma consulta em lote serão representadas por uma tabela com uma linha e uma coluna “Contagem”, que armazena o número de registros. Para depurar solicitações em lote, você pode usar o método Executar lote COM DADOS INTERMEDIÁRIOS() : retorna o conteúdo real das tabelas temporárias, não o número de registros.

// Exemplo de trabalho com uma solicitação em lote
Solicitação = Nova Solicitação;
Solicitar . Texto =
"ESCOLHER
| Moedas.Nome
|DE
| Directory.Currencies AS Moedas
|;
|SELECIONE
| Nomenclatura.Nome
|DE
| Diretório. Nomenclatura AS Nomenclatura";

Resultado do lote = solicitação. ExecuteBatch();

Moedas TZ =PacoteResultado[ 0 ]. Descarregar();
TZNomenclature = Resultado do pacote[ 1 ]. Descarregar();

// Um ​​exemplo de uso de tabelas temporárias em uma solicitação em lote
Solicitação = Nova Solicitação;
Solicitar . Texto =
"ESCOLHER
| Produtos Link COMO FAZER Produto.
|COLOCAR Produtos VT
|DE
| Diretório.Nomenclatura COMO Produtos
|ONDE
| Produtos.Fabricante = &Fabricante
|;
|SELECIONE
| VTTProdutos.Produto,
| Escola profissional.
| Escola profissional. Preço,
| Escola profissional.Link AS DocumentRecibos
|DE
| Produtos VT COMO Produtos VT
| Documento de CONEXÃO ESQUERDA. Recebimento de Mercadorias e Serviços COMO PTU.
| Software VTProdutos.Produto = PTU.Nomenclatura"
;

Solicitar . SetParameter( "Fabricante", Fabricante);

RequestResult = Solicitação. Correr();
Amostra = Resultado da consulta. Escolher();

Tchau Loop Sample.Next()

Fim do Ciclo;

Mesas virtuais

Mesas virtuais- são tabelas que não ficam armazenadas no banco de dados, mas são geradas pela plataforma. Basicamente, essas são consultas aninhadas em uma ou mais tabelas físicas executadas pela plataforma. As tabelas virtuais recebem informações apenas de registradores e destinam-se principalmente à solução de problemas altamente especializados.

Existem as seguintes tabelas virtuais (os possíveis parâmetros são indicados entre parênteses):

  • Para registros de informações:
    • FatiaPrimeira(<Период>, <Условие>) — os registros mais antigos para a data especificada;
    • FatiaÚltimo(<Период>, <Условие>) — os registros mais recentes para a data especificada;
  • Para registros de acumulação:
    • Sobras (<Период>, <Условие>) — saldos na data especificada;
    • Revoluções (<НачалоПериода>, <КонецПериода>, <Периодичность>, <Условие>) — volume de negócios do período;
    • Permanece e rotatividade (<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <Условие>) — saldos e volume de negócios do período;
  • Para registros contábeis:
    • Sobras (<Период>, <УсловиеСчета>, <Субконто>, <Условие>) — saldos na data especificada por conta, dimensões e subcontas;
    • Revoluções (<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчета>, <Субконто>, <Условие>, <УсловиеКорСчета>, <КорСубконто>) — volume de negócios do período no âmbito de contas, medições, corr. contas, subconto, cor. subconto;
    • Permanece e rotatividade (<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <УсловиеСчета>, <Субконто>, <Условие>) — saldos e movimentos no âmbito das contas, medições e subcontas;
    • FaturamentoDtKt(<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчетаДт>, <СубконтоДт>, <УсловиеСчетаКт>, <СубконтоКт>, <Условие>) — volume de negócios do período por conta Dt, conta Kt, Subconto Dt, Subconto Kt;
    • MovimentosSubconto(<НачалоПериода>, <КонецПериода>, <Условие>, <Порядок>, <Первые>) — movimentos juntamente com valores de subconto;
  • Para registros de cálculo:
    • Base(<ИзмеренияОсновногоРегистра>, <ИзмеренияБазовогоРегистра>, <Разрезы>, <Условие>) — dados básicos do registo de cálculo;
    • Gráficos de dados(<Условие>)—dados gráficos;
    • ActualActionPeriod(<Условие>) é o período real de validade.

Ao trabalhar com tabelas virtuais, você deve aplicar seleções nos parâmetros das tabelas virtuais, e não na condição WHERE. O tempo de execução da consulta depende muito disso.

Construtor de consulta

Para agilizar a entrada dos textos de consulta, a plataforma conta com ferramentas especiais: Construtor de consulta E Construtor de consulta com processamento de resultados. Para chamar construtores, você precisa clicar com o botão direito e selecionar o item desejado:

Os construtores também podem ser chamados no menu principal Texto.

Usando o construtor de consultas, o programador pode construir interativamente o texto da consulta. Para isso, selecione com o mouse as tabelas e campos necessários, estabeleça relações, agrupamentos, totais, etc. Esta abordagem permite que você economize tempo e se livre de possíveis erros. Como resultado de seu trabalho, o construtor da consulta gera o texto da consulta.

O construtor de consulta com processamento de resultados, além de gerar o texto da consulta, cria um fragmento de código pronto para recebimento e processamento de dados.

Objeto RequestSchema

A plataforma permite criar e editar programaticamente o texto da solicitação usando o objeto Esquema de solicitação. Um objeto possui uma única propriedade Lote de solicitações, em que o objeto armazena as propriedades de todas as consultas editadas em no momento. O objeto RequestSchema oferece suporte aos seguintes métodos:

  • SetQueryText(< Текст>) — preenche a propriedade Query Packet com base no texto da solicitação enviada;
  • ObterQueryText() – retorna o texto da solicitação gerado com base na propriedade Request Packet;
  • FindParameters() – retorna os parâmetros da solicitação.

Vejamos um exemplo de trabalho com o objeto RequestSchema. Para gerar programaticamente o texto da solicitação

ENCOMENDAR POR
Moedas.Código

O código do idioma incorporado pode ser assim:

RequestScheme = Novo RequestScheme;
Pacote 1 = SolicitarScheme. SolicitarBatch[0];
Operador1 = Pacote1. Operadores[0];
//adicionando fonte
RegisterTable = Operador1. Fontes. Adicionar( "Diretório.Moedas", "Moedas" );
//adicionando campos
Campo Link = Operador1. Campos selecionáveis. Add("Moedas.Link", 0);
Código de Campo = Operador1. Campos selecionáveis. Add("Moedas.Código", 1);
// especificando aliases de campo
Pacote 1 . Colunas[0]. Alias ​​= "Moeda";
Pacote 1 . Colunas[1]. Alias ​​= "Código";
//adicionando uma condição
Operador1 . Seleção. Adicionar( "NÃO sinalizar exclusão");
//adiciona ordenação
Pacote 1 . Ordem. Adicionar(FieldCode);
RequestText = RequestScheme. ObterQueryText();

Suponha que temos um diretório Nomenclatura com detalhes: “Código”, “Nome”, “Artigo”. Este diretório pode ser apresentado em forma de tabela, com campos de mesmo nome:

Nomenclatura

O objetivo da consulta é informar ao banco de dados o que queremos selecionar e de onde. Nesta fase, assumiremos que o resultado da consulta é uma determinada tabela. Digamos que nosso objetivo seja obter todos os detalhes do diretório “Nomenclatura”, então o texto da solicitação terá o seguinte formato:

Solicitação.Text = "
|SELECIONE
| Nomenclatura.Código,
| Nomenclatura.Nome,
| Nomenclatura.Artigo
|DE

Resultado da consulta

Alguns esclarecimentos. Na seção ESCOLHER(SELECT) listamos quais campos de tabelas específicas queremos ver na saída. Na seção DE(DE) dizemos de quais tabelas retirá-los. Observe que a palavra-chave COMO(AS) declaramos um alias para a tabela Diretório.Nomenclatura, Você pode usar quase qualquer nome, com exceção de palavras-chave e números da linguagem de consulta 1C 8. Um alias também pode ser declarado para campos:

Solicitação.Text = "
|SELECIONE
| Código AS de mercadorias,
| Mercadorias.Nome COMO Descrição,
| Mercadorias.Artigo COMO Artigo
|DE
| Diretório. Nomenclatura AS Mercadorias"

A saída será uma tabela no formato:

Você também pode selecionar todos os campos da tabela usando " * ". Vale ressaltar que em nesse caso aos campos “Código”, “Nome”, “Artigo” serão adicionados vários detalhes padrão definidos para o objeto diretório, tais como: “Marca de exclusão”, “Pré-definido”, etc. Você pode visualizar a lista completa de detalhes padrão clicando no botão de mesmo nome na guia
Dados qualquer livro de referência. Exemplo:

Solicitação.Text = "
|SELECIONE *
|DE
| Diretório. Nomenclatura AS Nomenclatura";

Se os campos forem selecionados de uma tabela, você poderá acessá-los sem ponto, mas ninguém escreve assim - não é legível e, via de regra, mais de uma tabela aparece na consulta. O seguinte texto de solicitação será executado com sucesso:

Solicitação.Text = "
|SELECIONE
| Código,
| Nome,
| Artigo
|DE
| Diretório.Nomenclatura";

Em princípio, o pedido não pode conter uma secção DE, mas via de regra ninguém escreve assim:

Solicitação.Text = "
|SELECIONE
| Diretório.Nomenclatura.Código,
| Diretório.Nomenclatura.Nome,
| Diretório.Nomenclatura.Artigo";

A solicitação pode incluir não apenas campos da infobase, mas também campos de tipos primitivos, por exemplo:

Solicitação.Text = "
|SELECIONE
| Nomenclatura.Código,
| Nomenclatura.Nome,
| Nomenclatura. Número do artigo,
//número
| 3000 AS Custo Máximo,
//data
| DATETIME(2013, 1, 1) AS Data de Entrega,
//booleano
| A VERDADE COMO PAGA,
//linha
| "MebelStroy" COMO FABRICANTE
|DE
| Diretório. Nomenclatura AS Nomenclatura";

Diretivas da seção SELECT

VÁRIOS- indica que como resultado da consulta que queremos ver apenas os registros com campos diferentes serão simplesmente descartados:

Solicitação.Text = "
|SELECIONE VÁRIOS
| Nomenclatura.Nome
|DE
| Diretório. Nomenclatura AS Nomenclatura";

Como resultado da execução deste pedido não veremos um único nome repetido.

PRIMEIRO - indica que queremos ver apenas os primeiros n registros no resultado da consulta:

Solicitação.Text = "
|SELECIONE OS 100 PRIMEIROS
| Nomenclatura.Nome
|DE
| Diretório. Nomenclatura AS Nomenclatura";

PERMITIDO- limita a seleção de acordo com os direitos do usuário. Recomendo que você sempre use esta palavra-chave, você nunca sabe quando vai querer atribuir direitos aos usuários.

© 2024 ermake.ru - Sobre reparo de PC - Portal de informações