Novas funções para trabalhar com strings. Novas funções para trabalhar com strings Valor na string 1c

24.07.2023

Os recursos básicos de uma linguagem de programação geralmente incluem trabalhar com números e strings. Normalmente, esses recursos são codificados no código do compilador (ou as classes “base” da linguagem de programação são implementadas).

Em 1C, a capacidade de trabalhar com strings é programada na própria plataforma. Hoje veremos os recursos de trabalho com strings 1C em programas na linguagem 1C integrada.

Valor da linha 1C

1. Vamos começar com o mais simples. Criar uma variável e atribuir um valor de string constante a ela é assim em 1C:

Variável = "Olá, mundo!";

Se você precisar especificar um caractere de aspas em um valor de string 1C constante, será necessário dobrá-lo “”

Variável = "Olá, mundo"!;

2. A quebra de linha 1C pode ser especificada de duas maneiras ao mesmo tempo. A primeira é usar o símbolo |

Variável = "Olá,
| mundo! ";

A segunda é usar a enumeração do sistema de símbolos. Ele permite adicionar quebras de linha 1C e outros caracteres não imprimíveis, como TAB.

Variável = "Olá" + Símbolos.PS + "paz!";

3. As configurações em 1C podem ser desenvolvidas não apenas para um idioma (russo, inglês ou outro) - mas simultaneamente para vários idiomas. Neste caso, o idioma atualmente utilizado é selecionado na parte inferior da janela 1C.

A lista de idiomas está localizada na janela de configuração no ramo Geral/Idiomas. Cada idioma possui um identificador curto, como ru ou inglês.

É claro que ao programar tal configuração, as linhas 1C também podem ser multilíngues. Para fazer isso, é possível criar uma linha 1C especificando through; opções por identificador de idioma:

Variável = "ru=""Olá, mundo! ""; en=""Olá, mundo! """;

Se você usar a linha 1C formada desta forma como de costume, então será o que está escrito nela. Para que o sistema o divida em duas opções e utilize a desejada, é necessário utilizar a função НStr():

//corrige para configurações bilíngues
Relatório(NStr(Variável));

Adereços com linha tipo 1C

O atributo é um campo no diretório/documento 1C. Difere de uma variável em um programa na linguagem 1C porque seu tipo é indicado com precisão para o atributo (número, string 1C, etc.). Se você precisar refrescar a memória sobre o que é um adereço, assista à lição.

Se você especificar o tipo de atributo - linha 1C, deverá especificar adicionalmente os parâmetros.

As linhas 1C vêm em comprimento ilimitado (indicado como comprimento = 0) e comprimento limitado, indicando o número exato de caracteres. As linhas 1C de comprimento ilimitado são armazenadas em um separado Tabela SQL, portanto seu uso é menos produtivo do que limitado.

É por isso que o uso de strings 1C de comprimento ilimitado tem suas limitações - não é possível usá-las em todos os lugares. Por exemplo, não é permitido como número de documento, código de referência ou medição.

Trabalhando com strings 1C

Existem várias funções integradas da plataforma 1C para trabalhar com strings.

  • AbbrLP (“Incrível, mas é verdade!”)
    Remove da linha 1C espaços extras. Também pode ser usado para converter qualquer tipo em uma string 1C (por exemplo, números).
  • Variável = "Vasya" + AbbrLP("mais") + "Olya"; //haverá "Vasya mais Olya"
    Um exemplo de soma de vários valores de string 1C. O resultado será uma linha 1C.
  • Variável = Lev("Música", 2); //será "Mu"
    Variável = Médio("Música", 2, 2); //haverá "ameaça"
    Variável = Direitos("Música", 2); //haverá "ka"
    Várias opções para obter uma substring de uma string 1C.
  • Variável = Find("Música", "zy"); //serão 3
    Procure uma substring na string 1C, começando com o caractere 1.
  • Variável = StrLength("Música"); //serão 6
    Retorna o número de caracteres na linha 1C.
  • Report("Hello") //na janela de mensagem na parte inferior da janela 1C
    Alert("Olá") //caixa de diálogo pop-up
    Status("Hello") //na linha de exibição de status no canto inferior esquerdo
    .

Trazendo objetos para a linha 1C

Como você sabe, o formato mais popular para troca de informações estruturadas atualmente é o XML. Até versão mais recente EM Palavra do escritório e Excel salvam arquivos neste formato (docx e xlsx, respectivamente, alteram a extensão para zip, abrem em um arquivador).

A plataforma 1C para troca de dados oferece diversas opções, sendo a principal delas também o XML.

1. O método mais simples é usar a função Abbreviation() ou String(). Você pode usar a função REPRESENTATION() no corpo da solicitação. O resultado de sua ação é o mesmo - eles geram uma representação em string de qualquer objeto 1C para o usuário.

Para um diretório, por padrão, este será o seu nome. Para um documento – nome, número e data do documento.

2. Qualquer objeto 1C (com restrições) pode ser convertido em XML e vice-versa. O processo de conversão é chamado de serialização.

StringViewXml = XMLString(Valor); //obtém XML do valor 1C
Valor1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //obtém o valor 1C da string XML, você deve especificar o tipo 1C que deve ser recebido

3. Existe uma maneira própria da plataforma 1C de converter qualquer objeto 1C em uma string. Migrou da versão 1C 7.7. Este formato não é compreendido por outros programas, mas outro 1C o compreende, o que facilita sua utilização para troca entre bancos de dados 1C.

Linha = ValorInRowInt(Valor1C); //obtém a string 1C do valor 1C
ValueVFile("C:\MeuArquivo.txt", Valor1C); //outra opção, obtemos um arquivo com uma string salva do valor 1C
Valor1C = ValorFromStringInt(String); //volta da linha 1C
Valor1C = ValueFile("C:\MeuArquivo.txt"); //volta do arquivo

Editando linhas 1C no formulário

Além de trabalhar com strings 1C em um programa na linguagem 1C, é claro que gostaria que o usuário pudesse editá-las. Existem várias possibilidades para isso:

1. A maneira mais fácil é solicitar a entrada de uma linha 1C sob demanda. Este método é usado no ensino de programação 1C na vida e é usado com muito menos frequência (mas é usado!).

Variável = "";
Linha = EnterValue(Variável, "Digite o Nome Completo");

2. Para exibir os detalhes de um objeto 1C (diretório/documento) ou detalhes do formulário (consulte), um campo de entrada é mais frequentemente usado. Esta é a ferramenta mais comum em 1C para o usuário trabalhar com edição de campos.

3. Os recursos do campo de entrada podem ser expandidos (veja propriedades do campo de entrada, clique com o botão direito sobre ele, mais detalhes):

  • Caixa de seleção Modo de edição multilinha
  • Caixa de seleção de edição avançada (disponível se a caixa de seleção anterior estiver marcada)
  • Caixa de seleção Modo de senha (consulte).

4. Se todos os recursos do campo de entrada não forem suficientes para você, existe um editor integrado. Para adicioná-lo ao formulário, você precisa adicionar Campo ao menu de controle Formulário/Inserir documento de texto. Em suas propriedades você pode especificar seu modo de operação – a propriedade Extensão.

Um campo de documento de texto não pode ser associado diretamente aos dados. É necessário escrever uma função no manipulador de eventos OnOpen() do formulário (veja):

Formulário Elements.ElementNameTextDocumentField.SetText(StringValue); //aqui ValueString é o texto recebido, por exemplo, do atributo

E no gerenciador de salvamento - por exemplo, no botão Salvar - adicione um salvamento:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValorA linha aqui é o atributo onde salvamos o valor

5. Em 1C versão 8.2.11, em formulários controlados, apareceu nova oportunidade Representação de linha 1C – Campo de documento formatado.


Semelhante ao campo de um documento de texto, você deve defini-lo ao abri-lo e anotá-lo ao salvá-lo usando o programa.

  • No objeto 1C cujo formulário estamos criando (diretório, documento, processamento, etc.) - adicione um atributo com o tipo Value Storage
  • Na função OnReadOnServer() definimos o texto do atributo

    //aqui o Atributo é o atributo adicionado do objeto 1C
    //aqui FormattedDocument é o nome do campo no formulário para edição
    &NoServidor

    FormattedDocument = CurrentObject.Attributes.Get();
    Fim do procedimento

  • Na função BeforeWritingOnServer() ou através do botão, escreveremos o texto do campo

    &NoServidor
    Procedimento ao ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Fim do procedimento

O tipo String é encontrado em todas as linguagens de programação. É primitivo e em 1C existem muitas funções para trabalhar com ele. Neste artigo vamos dar uma olhada mais de perto várias maneiras trabalhando com tipos de string em 1C 8.3 e 8.2 usando exemplos.

Linha

Para converter uma variável de qualquer tipo em uma string, existe uma função de mesmo nome “String()”. O parâmetro de entrada será a própria variável, cuja representação em string deve ser obtida.

String(Falso) // retorna "Não"
String(12345) // retorna "12.345"
String(DataAtual()) //"21/07/2017 11:55:36″

É possível converter não apenas tipos primitivos em string, mas também outros, por exemplo, elementos de diretórios e documentos.

SokrLP, SokrL, SokrP

Os parâmetros de entrada dessas funções são uma variável do tipo string. As funções removem caracteres insignificantes (espaços, retornos de carro, etc.): dos lados esquerdo e direito, apenas do lado esquerdo e apenas do lado direito, respectivamente.

Abbreviation("Os espaços serão removidos em ambos os lados") // "Os espaços serão removidos em ambos os lados"
Abreviação("Os espaços em ambos os lados serão removidos") // "Os espaços à esquerda serão removidos"
Abreviação("Os espaços em ambos os lados serão removidos") // "Os espaços à direita serão removidos"

Leão, Direita, Médio

Essas funções permitem cortar parte de uma string. A função "Left()" retornará a parte de uma string do lado esquerdo do comprimento especificado. A função "Right()" é semelhante, mas corta da direita. A função “Avg()” permite especificar o número do caractere a partir do qual a linha será selecionada e seu comprimento.

Lev("String variável", 4) // retorna "Str"
Right("String variável", 7) // retorna "variável"
Medium("String variável", 2, 5) // retorna "troco"

Comprimento da Força

A função determina o número de caracteres contidos em uma variável de string.

StrLength("Word") // o resultado da execução será o número 5

Encontrar

A função permite pesquisar parte de uma string em uma variável de string. O valor de retorno será um número que mostra a posição do início da string encontrada. Se nenhuma correspondência for encontrada, zero será retornado.

Observe que a pesquisa diferencia maiúsculas de minúsculas. Se houver mais de uma ocorrência da substring de pesquisa na string original, a função retornará o início da primeira ocorrência.

Find("um, dois, um, dois, três", "dois") // função retornará o número 6

Cadeia Vazia

O uso desta função permite determinar se uma string está vazia. Caracteres secundários como espaço, retorno de carro e outros não são levados em consideração.

EmptyString("Pupkin Vasily Ivanovich") // função retornará o valor False
EmptyString(" ") //função retornará o valor True

VReg, NReg, TReg

Essas funções são muito úteis ao comparar e converter variáveis ​​de string. "Vreg()" retornará a string original em maiúsculas, "HPreg()" em minúsculas e "TReg()" irá formatá-la para que o primeiro caractere de cada palavra individual seja maiúsculo e todos os caracteres subsequentes sejam maiúsculos.

VReg("DIRETOR GERAL") // valor de retorno - "DIRETOR GERAL"
NReg(“CEO DIRECTOR”) // valor de retorno – “CEO”
TREG(“CEO DIRECTOR”) // valor de retorno – “Diretor Geral”

Substituição de página

Esta função é análoga à substituição em editores de texto. Ele permite substituir um caractere ou conjunto de caracteres por outro em variáveis ​​de string.

StrReplace("vermelho, branco, amarelo", ","", ";") // retorna "vermelho; branco; amarelo"

StrNumberLines

A função permite determinar o número de linhas separadas por retornos de carro em uma variável de texto.

O loop no exemplo abaixo passará por três rodadas porque a função LineNumberRow retornará o valor 3:

Para ind = 1 por StrNumber de Strings ("Linha1" + Símbolos.PS + "Linha2" + Símbolos.PS + "Linha3") Ciclo
<тело цикла>
Fim do Ciclo;

StrGetString

Esta função funciona com texto multilinha da mesma forma que a anterior. Ele permite que você obtenha uma string específica de uma variável de texto.

StrGetString("String1" + Caracteres.PS + "String2" + Caracteres.PS + "String3", 2) // retorna "String2"

PageNumberOcorrências

A função conta o número de ocorrências de um caractere ou substring na string de pesquisa.

StrNumberAttachments("a;b;c;d; ", ";") // função retornará o número 4

Símbolo e código de símbolo

Essas funções permitem obter um caractere pelo seu código na codificação Unicode, bem como determinar esse código pelo próprio caractere.

SymbolCode("A") // função retornará o número 1.040
CharacterCode(1040) // função retornará “A”

Tarefas comuns ao trabalhar com strings

Concatenando Strings

Para combinar diversas strings (para realizar concatenação), basta utilizar o operador de adição.

“Linha 1″ + “Linha 2″ //o resultado da adição de duas linhas será “Linha 1 Linha 2”

Conversão de tipo

Para converter um tipo em string, por exemplo, um link para um elemento de diretório, um número, etc., basta utilizar a função “String()”. Funções como “ScrLP()” também converterão variáveis ​​em uma string, mas imediatamente com o corte de caracteres insignificantes.

String(1000) // retorna "1.000"

Observe que ao converter um número em uma string, o programa adicionou automaticamente um espaço separando os mil. Para evitar isso, você pode usar as seguintes construções:

StrReplace(String(1000),Characters.NPP,"") // retorna "1000"

String(Format(1000,"HG=")) // retorna "1000"

Citações em uma string

Muitas vezes você terá que lidar com a necessidade de especificar aspas em uma variável de string. Pode ser o texto da solicitação escrito no configurador ou apenas uma variável. Para resolver este problema, basta colocar duas aspas.

Header = String("Horns and Hooves LLC - somos nós!") // retornará "Horns and Hooves LLC - somos nós!"

Multilinha, quebra de linha

Para criar texto multilinhas, basta adicionar quebras de linha (Symbols.PS).

MultilineText = “Primeira Linha” + Symbols.PS + “Segunda Linha”

Como remover espaços

Para remover espaços à direita ou à esquerda, você pode usar a função “ScrAP()” (assim como “ScrL()” e “ScrP()”):

StringNoSpaces = Abbreviation("Muitas letras") // a função retornará o valor "Muitas letras"

Se, após converter um número em uma string, você precisar remover espaços inseparáveis, use a seguinte construção:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // retorna "99999"

Os programadores também costumam usar a seguinte construção, que permite remover ou substituir por outro caractere todos os espaços em uma variável de texto:

StringNoSpaces = StrReplace("olá","") // retorna "olá"

Comparando strings entre si

Você pode comparar os termos com o sinal de igual usual. A comparação diferencia maiúsculas de minúsculas.

"Olá" = "olá" // retorna Falso
"Olá" = "Olá" // retorna Verdadeiro
"Olá" = "Adeus" // retorna Falso

Notas através do espelho

18/08/2014 Novas funções para trabalhar com strings

Implementado na versão 8.3.6.1977.

Expandimos o conjunto de funções projetadas para trabalhar com strings. Fizemos isso para fornecer ferramentas mais avançadas para analisar dados de string. As novas funções serão convenientes e úteis em tarefas tecnológicas de análise de texto. Em tarefas relacionadas à análise de texto que contém dados em formato formatado. Pode ser uma análise de alguns arquivos recebidos do equipamento, ou, por exemplo, uma análise de um registro tecnológico.

Você poderia executar todas as ações que executavam novas funções antes. Usando algoritmos mais ou menos complexos escritos em uma linguagem integrada. Portanto, as novas funções não oferecem recursos fundamentalmente novos. No entanto, eles permitem reduzir a quantidade de código e torná-lo mais simples e compreensível. Além disso, permitem agilizar a execução das ações. Porque as funções implementadas na plataforma funcionam, é claro, mais rápido do que um algoritmo semelhante escrito em uma linguagem integrada.

Função de formatação StrTemplate()

Esta função substitui parâmetros em uma string. A necessidade de tal conversão surge frequentemente, por exemplo, ao exibir mensagens de aviso. A sintaxe desta função é a seguinte:

StrTemplate(<Шаблон>, <Значение1-Значение10>)

<Шаблон>- esta é a string na qual você precisa substituir as representações dos parâmetros.

<Значение1> , ... <Значение10>- são parâmetros (máximo dez), cujas representações devem ser substituídas na string.

Para indicar um local específico no template onde deseja realizar a substituição, você precisa usar marcadores como %1, ... %10. O número de marcadores envolvidos no modelo e o número de parâmetros contendo valores devem corresponder.

Por exemplo, o resultado da execução de tal operador:

haverá uma linha:

Erro de dados na linha 2 (tipo de data obrigatório)

Função para trabalhar com strings StrCompare()

Esta função compara duas strings sem distinção entre maiúsculas e minúsculas. Por exemplo, assim:

Você poderia realizar a mesma ação anteriormente usando o objeto Comparação de Valores:

No entanto, usar o novo recurso parece mais fácil. E além disso, uma função, em oposição a um objeto Comparação de Valores, trabalha em cliente fino e no cliente web.

Funções para trabalhar com strings StrStartsWith(), StrEndsAt()

Essas funções determinam se uma string começa com uma substring especificada ou se uma string termina com uma substring especificada. O algoritmo para essas funções não é difícil de implementar em uma linguagem incorporada, mas sua presença permite escrever um código mais limpo e compreensível. E eles trabalham mais rápido.

Por exemplo, é conveniente usá-los no operador Se:

Funções para trabalhar com strings StrDivide(), StrConnect()

Essas funções dividem uma string em partes usando um delimitador especificado. Ou vice-versa, combinam várias linhas em uma, inserindo o separador selecionado entre elas. Eles são convenientes para criar ou analisar logs e diários tecnológicos. Por exemplo, você pode facilmente analisar uma entrada de registro tecnológico em partes adequadas para análise posterior:

Função para trabalhar com strings StrFind()

Em vez da antiga função Encontrar() nós implementamos novo recurso, que possui recursos adicionais:

  • Pesquise em diferentes direções (do início, do fim);
  • Pesquise a partir de uma posição especificada;
  • Encontrar uma ocorrência com número especificado(segundo, terceiro, etc.).

Na verdade, duplica as capacidades da função antiga. Isto é feito para manter a compatibilidade com módulos compilados em versões mais antigas. Função antiga Encontrar() Recomenda-se não usar novamente.

Abaixo está um exemplo usando os novos recursos de pesquisa. A pesquisa reversa é útil quando você precisa da última parte de uma string formalizada, como o nome completo do arquivo em uma URL. E pesquisar a partir de uma posição especificada ajuda nos casos em que você precisa pesquisar em um fragmento conhecido, e não na string inteira.

Implementado na versão 8.3.6.1977.

Expandimos o conjunto de funções projetadas para trabalhar com strings. Fizemos isso para fornecer ferramentas mais avançadas para analisar dados de string. As novas funções serão convenientes e úteis em tarefas tecnológicas de análise de texto. Em tarefas relacionadas à análise de texto que contém dados em formato formatado. Pode ser uma análise de alguns arquivos recebidos do equipamento, ou, por exemplo, uma análise de um registro tecnológico.

Você poderia executar todas as ações que executavam novas funções antes. Usando algoritmos mais ou menos complexos escritos em uma linguagem integrada. Portanto, as novas funções não oferecem recursos fundamentalmente novos. No entanto, eles permitem reduzir a quantidade de código e torná-lo mais simples e compreensível. Além disso, permitem agilizar a execução das ações. Porque as funções implementadas na plataforma funcionam, é claro, mais rápido do que um algoritmo semelhante escrito em uma linguagem integrada.

Função de formatação StrTemplate()

Esta função substitui parâmetros em uma string. A necessidade de tal conversão surge frequentemente, por exemplo, ao exibir mensagens de aviso. A sintaxe desta função é a seguinte:

StrTemplate(<Шаблон>, <Значение1-Значение10>)

<Шаблон>- esta é a string na qual você precisa substituir as representações dos parâmetros.

<Значение1> , ... <Значение10>- são parâmetros (máximo dez), cujas representações devem ser substituídas na string.

Para indicar um local específico no template onde deseja realizar a substituição, você precisa usar marcadores como %1, ... %10. O número de marcadores envolvidos no modelo e o número de parâmetros contendo valores devem corresponder.

Por exemplo, o resultado da execução de tal operador:

haverá uma linha:

Erro de dados na linha 2 (tipo de data obrigatório)

Função para trabalhar com strings StrCompare()

Esta função compara duas strings sem distinção entre maiúsculas e minúsculas. Por exemplo, assim:

Você poderia executar a mesma ação anteriormente usando o objeto Comparação de valores:

No entanto, usar o novo recurso parece mais fácil. E além disso, a função, ao contrário do objeto Value Comparison, funciona tanto no thin client quanto no web client.

Funções para trabalhar com strings StrStartsWith(), StrEndsAt()

Essas funções determinam se uma string começa com uma substring especificada ou se uma string termina com uma substring especificada. O algoritmo para essas funções não é difícil de implementar em uma linguagem incorporada, mas sua presença permite escrever um código mais limpo e compreensível. E eles trabalham mais rápido.

Por exemplo, eles são convenientes para usar na instrução If:

Funções para trabalhar com strings StrDivide(), StrConnect()

Essas funções dividem uma string em partes usando um delimitador especificado. Ou vice-versa, combinam várias linhas em uma, inserindo o separador selecionado entre elas. Eles são convenientes para criar ou analisar logs e diários tecnológicos. Por exemplo, você pode facilmente analisar uma entrada de registro tecnológico em partes adequadas para análise posterior:

Função para trabalhar com strings StrFind()

Em vez da antiga função Find(), implementamos uma nova função que possui recursos adicionais:

  • Pesquise em diferentes direções (do início, do fim);
  • Pesquise a partir de uma posição especificada;
  • Pesquise uma ocorrência com um número especificado (segundo, terceiro, etc.).

Na verdade, duplica as capacidades da função antiga. Isto é feito para manter a compatibilidade com módulos compilados em versões mais antigas. É recomendado que você não use mais a antiga função Find().

Abaixo está um exemplo usando os novos recursos de pesquisa. A pesquisa reversa é útil quando você precisa da última parte de uma string formalizada, como o nome completo do arquivo em uma URL. E pesquisar a partir de uma posição especificada ajuda nos casos em que você precisa pesquisar em um fragmento conhecido, e não na string inteira.