Casa / Internet / 1c trova la seconda occorrenza nella stringa. Il nome è simile a "ivano%"

1c trova la seconda occorrenza nella stringa. Il nome è simile a "ivano%"

Ciao a tutti
Oggi mi hanno chiesto di non visualizzare il prefisso del documento durante la stampa del documento di attuazione, il problema è stato risolto come segue.

StrReplace(Numero, Leone(Numero, 3 ), "" );

Quando ho esaminato l'assistente di sintassi, mi è piaciuto così tanto che volevo scriverne lavorare con le stringhe in 1C:Enterprise.

Una stringa in 1C fa riferimento a un tipo di dati primitivo.

Se guardi nella guida 1C, vedrai la seguente descrizione del tipo String (String)
I valori di questo tipo contengono una stringa Unicode di lunghezza arbitraria.
Se con parole tue sulle stringhe, allora funzionerà. Una stringa è una costante composta da vari caratteri, sempre racchiusi tra virgolette.

Specifica della stringa
Title = "Ciao passeggero";

Le stringhe multilinea nelle configurazioni tipiche vengono spesso create utilizzando il separatore verticale "|":
String = "Multilinea
|stringa
| scrivere
|testo";

Una citazione all'interno di una stringa è specificata da virgolette doppie.
String = ""Testo tra virgolette"";

Ci sono molte operazioni sulle stringhe (ricerca all'interno di una stringa, determinazione delle prime, ecc.), è meglio guardare il Syntax Helper.
Assistente di sintassi - descrizione generale linguaggio integrato-> funzioni integrate-> funzioni di manipolazione delle stringhe.

Funzioni per lavorare con le stringhe

Qui, in forma breve, darò le funzioni per lavorare con le stringhe:

VReg(<Строка>) - La funzione converte tutti i caratteri della stringa in maiuscolo.

SimboloCodice(<Строка>, <НомерСимвола>) – La funzione riceve il codice del carattere che si trova nella stringa passata nella posizione con il numero specificato.

Un leone(<Строка>, <ЧислоСимволов>) – La funzione seleziona i primi caratteri da sinistra della stringa.

Trovare(<Строка>, <ПодстрокаПоиска>) — La funzione trova l'occorrenza della stringa cercata come sottostringa nella stringa originale.

HReg(<Строка>) — La funzione converte tutti i caratteri della stringa in minuscolo.

Giusto(<Строка>, <ЧислоСимволов>) Questa funzione differisce dalle funzioni Left in quanto seleziona gli ultimi caratteri a destra della stringa.

Riga vuota(<Строка>) — La funzione controlla la stringa per la presenza di caratteri significativi.

Simbolo(<КодСимвола>) — La funzione converte il codice carattere in una stringa contenente il carattere.

Abbr(<Строка>) — La funzione taglia i caratteri non significativi a sinistra del primo carattere significativo nella stringa.

Abrl(<Строка>) — La funzione elimina i caratteri non significativi a sinistra del primo carattere significativo nella stringa e gli spazi a destra dell'ultimo carattere significativo nella stringa.

abbr(<Строка>) — La funzione taglia i caratteri non significativi a destra dell'ultimo carattere significativo nella stringa.

Mercoledì(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - La funzione seleziona una stringa di caratteri, a partire dal carattere<НачальныйНомер>, totale<ЧислоСимволов>.

StrLunghezza(<Строка>) — La funzione ottiene il numero di caratteri nella stringa.

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) — La funzione trova tutte le occorrenze della sottostringa di ricerca nella stringa di origine e la sostituisce con la sottostringa di sostituzione.

StrGetString(<Строка>, <НомерСтроки>) — La funzione ottiene la stringa di una stringa multilinea per numero.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) — La funzione calcola il numero di occorrenze della sottostringa di ricerca nella stringa sorgente.

StrNumero di righe(<Строка>) — La funzione conta il numero di righe in una stringa multilinea. In una stringa multilinea, le righe sono separate da caratteri di nuova riga.

TReg(<Строка>) — La funzione converte la stringa in maiuscole e minuscole. Ciò significa che per ogni parola, il primo carattere viene convertito in maiuscolo o in maiuscolo se per il carattere non è specificata maiuscola o maiuscola. Il resto dei caratteri viene convertito in lettere minuscole.

Conversioni di tipo
Per la conversione esplicita del tipo di dati, esistono funzioni con lo stesso nome del tipo di dati in cui avviene la conversione: String(<Значение>)

StringFromNumbers= String(Numero);

Tutte queste funzioni sono descritte in dettaglio nell'Assistente sintassi, come l'Assistente sintassi può aiutare un programmatore alle prime armi, ho descritto nell'articolo.

Esempi di stringhe

Converti numero in stringa e viceversa.

Per ottenere una rappresentazione in forma di stringa dell'anno, utilizzare la funzione Format.

Anno = Formato(DataCorrente(), "DF=aaaa" ) // Anno = "2012"

Per convertire un numero in una stringa senza inserire un carattere separatore di gruppo ( spazio non infrangibile), è necessario applicare la funzione Format con il parametro FH=0:

Numero = 2012 Stringa = Formato(Numero, "NO=0" ); //Stringa = "2012"

Stringa Nessuno spazio.

Le stringhe in 1C 8.3 nel linguaggio integrato 1c sono valori di tipo primitivo Linea. I valori di questo tipo contengono una stringa Unicode di lunghezza arbitraria. Le variabili di tipo stringa sono un insieme di caratteri racchiuso tra virgolette.

Esempio 1. Creiamo una variabile stringa con testo.

StringVariable = "Ciao mondo!";

Funzioni per lavorare con stringhe in 1s 8.3

In questa sezione verranno fornite le principali funzioni che consentono di modificare le linee in 1s, o di analizzare le informazioni in esse contenute.

StrLunghezza

StrLunghezza(<Строка>) . Restituisce il numero di caratteri contenuti nella stringa passata nel parametro.

Esempio 2. Contiamo il numero di caratteri nella stringa "Ciao mondo!".

String = "Ciao mondo!"; Numero di caratteri = StrLength(String); Rapporto (numero di caratteri);

Il risultato dell'esecuzione di questo codice visualizzerà il numero di caratteri nella stringa: 11.

Abbreviato

Abbr(<Строка>) . Taglia i caratteri non significativi a sinistra del primo carattere significativo in una stringa.
Personaggi insignificanti:

  • spazio;
  • spazio non infrangibile;
  • tabulazione;
  • ritorno a capo;
  • traduzione in linea;
  • traduzione del modulo (pagina).

Esempio 3. Rimuovi tutti gli spazi dal lato sinistro della stringa "peace!" e aggiungi la stringa "Ciao".

String = abbr("mondo!"); Stringa = "Ciao"+Stringa; Notifica(Stringa);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "Hello world!".

Abbreviazione

abbr(<Строка>) . Taglia i caratteri non significativi a destra del primo carattere significativo in una stringa.

Esempio 4. Modulo dalle stringhe "Hello" e "world!" frase "Ciao mondo!"

Stringa = abbr("Ciao")+" "+abbr("mondo!"); Notifica(Stringa);

LP abbreviato

Abrl(<Строка>) . Taglia i caratteri non significativi a destra del primo carattere significativo nella stringa, taglia anche i caratteri non significativi a sinistra del primo carattere significativo nella stringa. Questa funzione viene utilizzata più spesso delle due precedenti, in quanto è più versatile.

Esempio 5. Rimuovere i caratteri non significativi a sinistra ea destra nel nome della controparte.

Appaltatore = Directories.Contractors.FindBy Details("TIN", "0777121211"); ContractorObject = Contractor.GetObject(); ContractorObject.Description = Abbreviato LP(ContractorObject.Description); ContractorObject.Write();

un leone

Un leone(<Строка>, <ЧислоСимволов>) . Ottiene i primi caratteri di una stringa, il numero di caratteri è specificato nel parametro Numero di caratteri.

Esempio 6. Let la struttura Dipendente contenere il nome, cognome e patronimico del dipendente. Ottieni una stringa con cognome e iniziali.

InitialName = Lion(Dipendente.Nome, 1); Iniziale patronimico = Leone(Dipendente.Patronimico, 1); FullName = Employee.LastName + " " + FirstName Initial + "." + Iniziale patronimico + ".";

Diritti

Giusto(<Строка>, <ЧислоСимволов>) . Ottiene gli ultimi caratteri di una stringa, il numero di caratteri è specificato nel parametro Numero di caratteri. Se il numero di caratteri specificato supera la lunghezza della stringa, viene restituita l'intera stringa.

Esempio 7. Lascia che una data sia scritta alla fine di una variabile stringa nel formato "aaaammgg", ottieni una stringa con una data e convertila in tipo data.

Stringa = " La data corrente: 20170910"; StringDate = Diritti(String, 8); Data = Date(StringDate);

Mercoledì

Mercoledì(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Ottiene una sottostringa dalla stringa passata nel parametro Linea, a partire dal carattere il cui numero è specificato nel parametro Numero iniziale e la lunghezza passata al parametro Numero di caratteri. La numerazione dei caratteri in una stringa parte da 1. Se il parametro Numero iniziale viene specificato un valore minore o uguale a zero, il parametro assume il valore 1. Se il parametro Numero di caratteri non è specificato, vengono selezionati i caratteri fino alla fine della stringa.

Esempio 8. Lascia che la variabile stringa contenga il codice della regione a partire dalla nona posizione, dovresti ottenerlo e scriverlo in una riga separata.

String = "Regione: 99 Mosca"; Regione = Avg(Riga, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Cerca la sottostringa specificata in una stringa, restituisce il numero di posizione del primo carattere della sottostringa trovata. Considera i parametri di questa funzione:

  • Linea. Stringa sorgente;
  • Ricerca sottostringa. La sottostringa desiderata;
  • DirezioneCerca. Specifica la direzione in cui cercare una sottostringa in una stringa. Può assumere valori:
    • Direzione di ricerca. Dall'inizio;
    • Direzione di ricerca.Dalla fine;
  • Posizione di partenza. Specifica la posizione nella stringa da cui iniziare la ricerca;
  • Numero di ingresso. Specifica il numero di occorrenze della sottostringa cercata nella stringa di origine.

Esempio 9. Nella riga "Ciao mondo!" determinare la posizione dell'ultima occorrenza del carattere "e".

PositionNumber = StrFind("Hello World!", "and", SearchDirection.From End); Notifica(NumeroPosizione);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione del numero dell'ultima occorrenza del simbolo "e" sullo schermo: 9.

VReg

VReg(<Строка>) . Converte tutti i caratteri della stringa specificata in 1s 8 in maiuscolo.

Esempio 10. Converti la stringa "hello world!" in maiuscolo.

StringVreg = Vreg("ciao mondo!"); Report(StringVreg);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "HELLO WORLD!"

HReg

HReg(<Строка>) . Converte tutti i caratteri della stringa specificata in 1s 8 in minuscolo.

Esempio 11. Converti la stringa "HELLO WORLD!" in minuscolo.

StringNreg = NReg("CIAO MONDO!"); Report(StringVreg);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "hello world!"

TReg

TReg(<Строка>) . Converte una stringa come segue: il primo carattere di ogni parola viene convertito in maiuscolo, i restanti caratteri della parola vengono convertiti in minuscolo.

Esempio 12. Scrivi in ​​maiuscolo le prime lettere delle parole nella stringa "hello world!".

StringTreg = TReg("ciao mondo!"); Report(StringTreg);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "Hello World!"

Simbolo

Simbolo(<КодСимвола>) . Ottiene un carattere in base al relativo codice Unicode.

Esempio 13. Aggiungi sinistra e destra alla riga "Hello World!" simbolo ★

StringWithStars = Carattere("9733")+"Ciao mondo!"+Carattere("9733"); Report(StringWithStars);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "★Hello World!★"

SimboloCodice

SimboloCodice(<Строка>, <НомерСимвола>) . Ottiene il codice carattere Unicode dalla stringa specificata nel primo parametro, situata nella posizione specificata nel secondo parametro.

Esempio 14. Scopri il codice dell'ultimo carattere nella stringa "Hello World!".

String = "Ciao mondo!"; CharacterCode =CharacterCode(String, StrLength(String)); Notifica(CodiceCarattere);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione del codice del simbolo "!" — 33.

Linea vuota

Riga vuota(<Строка>) . Controlla se la stringa è composta solo da caratteri non significativi, ovvero se è vuota.

Esempio 15. Controlla se la stringa è vuota e consiste di tre spazi.

Vuoto = StringaVuota(" "); Rapporto (vuoto);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della parola "Sì" (espressione stringa di un valore booleano VERO).

StrReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Trova tutte le occorrenze della sottostringa di ricerca nella stringa di origine e la sostituisce con la sottostringa di sostituzione.

Esempio 16. Nella riga "Hello World!" sostituire la parola "Mondo" con la parola "Amici".

String = StrReplace("Ciao Mondo!", "Mondo", "Amici"); Notifica(Stringa);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "Hello Friends!"

StrNumeroRighe

StrNumero di righe(<Строка>) . Consente di contare il numero di righe in una stringa multilinea. Per passare a nuova linea in 1s 8 viene utilizzato il simbolo PS(carattere di avanzamento riga).

Esempio 17. Determina il numero di righe nel testo:
"Prima linea
Seconda linea
Terza linea"

Number = StrNumero di righe("Prima riga"+Simboli.PS +"Seconda riga"+Simboli.PS +"Terza riga"); Rapporto(Numero);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione del numero di righe nel testo: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Ottiene una stringa in una stringa multilinea in base al relativo numero. La numerazione delle righe parte da 1.

Esempio 18. Ottieni l'ultima riga nel testo:
"Prima linea
Seconda linea
Terza linea"

Testo = "Prima riga"+Caratteri.PS +"Seconda riga"+Caratteri.PS +"Terza riga"; LastLine = StrGetLine(Testo, StrNumero di righe(Testo)); Notifica (ultima riga);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della riga "Terza riga".

StrNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Restituisce il numero di occorrenze della sottostringa specificata in una stringa. La funzione fa distinzione tra maiuscole e minuscole.

Esempio 19. Determina quante volte la lettera "c" entra nella riga "Linee in 1s 8.3 e 8.2", indipendentemente dal caso.

String = "Righe in 1s 8.3 e 8.2"; Numero di occorrenze = StrNumero di occorrenze(Vreg(String), "C"); report(numero di occorrenze);

Il risultato dell'esecuzione di questo codice visualizzerà il numero di occorrenze sullo schermo: 2.

La pagina inizia da

StrIniziaDa(<Строка>, <СтрокаПоиска>) . Controlla se la stringa fornita nel primo parametro inizia con la stringa nel secondo parametro.

Esempio 20. Determina se il TIN della controparte selezionata inizia con il numero 1. Lascia la variabile controparte Controparti.

TIN = Appaltatore.TIN; StartsCUnits = StrStartsC(TIN, "1"); If StartsFROM1 Then //Il tuo codice EndIf;

La pagina finisce il

StrEndsOn(<Строка>, <СтрокаПоиска>) . Controlla se la stringa passata nel primo parametro termina con la stringa nel secondo parametro.

Esempio 21. Determina se il TIN della controparte selezionata termina con il numero 2. Lascia la variabile controparte viene memorizzato il collegamento all'elemento directory Controparti.

TIN = Appaltatore.TIN; Termina con due = Str termina con (TIN, "2"); If Ends With Two Then //Il tuo codice EndIf;

Divisione pagine

StrDividi(<Строка>, <Разделитель>, <ВключатьПустые>) . Divide una stringa in parti in base ai caratteri delimitatori specificati e scrive le stringhe risultanti in una matrice. Il primo parametro memorizza la stringa originale, il secondo parametro contiene la stringa contenente il delimitatore, il terzo parametro indica se le stringhe vuote devono essere scritte nell'array (per impostazione predefinita VERO).

Esempio 22. Supponiamo di avere una stringa contenente numeri separati dal simbolo ";", ottenere un array di numeri dalla stringa.

Stringa = "1; 2; 3"; Array = StrSplit(Stringa, ";"); For Count = 0 By Array.Quantity() - 1 tentativo di ciclo Array[Count] = Number(Ablp(Array[Count])); Eccezione Array[W] = 0; EndTry EndCycle;

Come risultato dell'esecuzione, si otterrà un array con numeri da 1 a 3.

StrConnect

StrConnect(<Строки>, <Разделитель>) . Converte una matrice di stringhe dal primo parametro in una stringa contenente tutti gli elementi della matrice utilizzando il delimitatore specificato nel secondo parametro.

Esempio 23. Usando l'array di numeri dell'esempio precedente, ottieni la stringa originale.

For Count = 0 By Array.Quantity() - 1 Loop Array[Count] = String(Array[Count]); Fine Ciclo; Stringa = StrConnect(Array, "; ");

Esistono pochi meccanismi per lavorare con le stringhe nelle query 1C. Innanzitutto, è possibile aggiungere stringhe. In secondo luogo, una sottostringa può essere presa da una stringa. In terzo luogo, le stringhe possono essere confrontate, anche per modello. Questo è tutto ciò che puoi fare con le stringhe.

Aggiunta di stringhe

L'operatore "+" viene utilizzato per aggiungere stringhe in una query. Puoi aggiungere solo stringhe di lunghezza limitata.

SELECT "Nome: " + Contractors.Name AS Column1 FROM Directory.Contractors AS Contractors WHERE Contractors.Reference = &Reference

Funzione sottostringa

SOTTOSTRINGA(<Строка>, <НачальнаяПозиция>, <Длина>)

Un analogo della funzione Environment() del modello a oggetti. La funzione Substring() può essere applicata ai dati di tipo stringa e consente di selezionare un frammento <Строки> , che inizia con un carattere numerico <НачальнаяПозиция> (i caratteri in una stringa sono numerati a partire da 1) e length <Длина> caratteri. Il risultato della valutazione della funzione ha un tipo di stringa di lunghezza variabile e la lunghezza sarà considerata illimitata se <Строка> ha lunghezza e parametro illimitati <Длина> non è una costante o maggiore di 1024.

Se la lunghezza della stringa è inferiore a quella specificata nel secondo parametro, la funzione restituirà una stringa vuota.

Attenzione! Non è consigliabile utilizzare la funzione SUBSTRING() per convertire stringhe di lunghezza illimitata in stringhe di lunghezza limitata. Invece, è meglio usare l'operatore cast EXPRESS().

Funzione simile

Se dobbiamo assicurarci che l'attributo string soddisfi determinati criteri, lo confrontiamo:

SELECT Counterparties.Name AS Colonna1 FROM Directory.Counterparties AS Counterparties WHERE Counterparties.Name = "Gazprom"

Ma cosa succede se è necessario un confronto più sottile? Non solo per uguaglianza o disuguaglianza, ma per somiglianza con un certo schema? Questo è esattamente ciò per cui è stata creata la funzione LIKE.

LIKE - Un operatore per verificare se una stringa è simile a un modello. Analogo di LIKE in SQL.

L'operatore LIKE consente di confrontare il valore dell'espressione specificata a sinistra con la stringa del modello specificata a destra. Il valore dell'espressione deve essere di tipo stringa. Se il valore dell'espressione corrisponde al modello, il risultato dell'operatore sarà TRUE, altrimenti sarà FALSE.

I seguenti caratteri nella stringa modello sono caratteri di servizio e hanno un significato diverso dal carattere stringa:

  • % (percentuale): una sequenza contenente un numero qualsiasi di caratteri arbitrari;
  • _ (sottolineato): uno carattere arbitrario;
  • […] (uno o più caratteri tra parentesi quadre): qualsiasi singolo carattere elencato tra parentesi quadre. Un'enumerazione può contenere intervalli, ad esempio a-z, ovvero qualsiasi carattere all'interno dell'intervallo, comprese le estremità dell'intervallo;
  • [^…] (tra parentesi quadre un segno di negazione seguito da uno o più caratteri): Qualsiasi singolo carattere diverso da quelli elencati dopo il segno di negazione.

Qualsiasi altro simbolo significa se stesso e non comporta alcun carico aggiuntivo. Se è necessario scrivere uno dei caratteri elencati come se stesso, deve essere preceduto da<Спецсимвол>. Me stessa<Спецсимвол>(qualsiasi carattere adatto) è definito nella stessa istruzione dopo parola chiave SIMBOLO SPECIALE.