Come configurare smartphone e PC. Portale informativo
  • casa
  • Windows Phone
  • Taglia la stringa fino al carattere 1s. Nuove funzioni di stringa

Taglia la stringa fino al carattere 1s. Nuove funzioni di stringa

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 qualsiasi numero di caratteri arbitrari;
  • _ (underscore): un 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<Спецсимвол>. Io stesso<Спецсимвол>(qualsiasi carattere adatto) è definito nella stessa istruzione dopo la parola chiave SPECIAL CHARACTER.

Le caratteristiche di base di un linguaggio di programmazione di solito includono il lavoro con numeri e stringhe. Di solito queste funzionalità sono cablate nel codice del compilatore (o vengono implementate classi "base" del linguaggio di programmazione).

In 1C, le capacità di lavorare con le stringhe sono programmate nella piattaforma stessa. Oggi considereremo le caratteristiche di lavorare con le stringhe 1C nei programmi nel linguaggio 1C integrato.

Valore riga 1C

1. Iniziamo con il più semplice. La creazione di una variabile e l'assegnazione di un valore costante di stringa ad essa assomiglia a questo in 1C:

Variabile = "Ciao mondo!";

Se vuoi specificare un carattere di citazione in un valore di stringa costante 1C, devi raddoppiarlo ""

Variabile = "Ciao, "mondo""!";

2. L'interruzione di riga 1C può essere specificata in due modi contemporaneamente. Il primo utilizza il simbolo |

Variabile = "Ciao,
| mondo! ";

Il secondo utilizza l'enumerazione del sistema Symbols. Ti consente di aggiungere sia un'interruzione di riga 1C che altri caratteri non stampabili, come TAB.

Variabile = "Ciao" + Symbols.ps + "pace!";

3. Le configurazioni in 1C possono essere sviluppate non solo per una lingua (russo, inglese o altro), ma contemporaneamente per più lingue. In questo caso, la lingua attualmente utilizzata è selezionata nella parte inferiore della finestra 1C.

L'elenco delle lingue si trova nella finestra di configurazione nel ramo Generale/Lingue. Ogni lingua ha un breve identificatore come it o ing.

È chiaro che durante la programmazione di tale configurazione, le linee 1C possono anche essere multilingue. Per fare ciò, è possibile creare una tale linea 1C specificando through; opzioni per ID lingua:

Variable = "ru=""Ciao, mondo!""; en=""Ciao, mondo! """;

Se usi la linea 1C formata in questo modo come al solito, allora sarà ciò che è scritto in essa. Affinché il sistema lo divida in due opzioni e utilizzi quella desiderata, è necessario utilizzare la funzione NStr():

//corretto per le configurazioni bilingue
Report(NStr(Variabile));

Puntelli con linea tipo 1C

Il requisito è un campo della directory / documento 1C. Differisce da una variabile in un programma in linguaggio 1C in quanto il suo tipo è indicato con precisione per l'attributo (numero, stringa 1C, ecc.). Se hai bisogno di rispolverare cosa sono gli oggetti di scena, dai un'occhiata al tutorial su .

Se si specifica il tipo di attributo - riga 1C, è necessario specificare anche i parametri.

Le stringhe 1C sono di lunghezza illimitata (indicata come lunghezza = 0) e lunghezza limitata, indicando il numero esatto di caratteri. Le stringhe 1C di lunghezza illimitata sono memorizzate in una tabella SQL separata, quindi il loro utilizzo è meno produttivo di quelle limitate.

Ecco perché l'uso di stringhe 1C di lunghezza illimitata ha i suoi limiti: non è possibile utilizzarle ovunque. Ad esempio, non è possibile come numero di documento, codice di elenco, misurazione.

Lavorare con le linee 1C

Per lavorare con le stringhe, ci sono diverse funzioni integrate della piattaforma 1C.

  • AbbrLP("Incredibile, ma vero!")
    Rimuove gli spazi extra dalla stringa 1C. Può anche essere utilizzato per convertire qualsiasi tipo in una stringa 1C (ad esempio numeri).
  • Variabile = "Vasya" + Abbrl("più") + "Olya"; //sarà "Vasya più Olya"
    Un esempio di somma di più valori di stringa 1C. Il risultato è una riga 1C.
  • Variabile = Leone("Musica", 2); // sarà "Mu"
    Variabile = Avg("Musica", 2, 2); // sarà "ps"
    Variabile = Diritti("Musica", 2); // sarà "ka"
    Varie opzioni per ottenere una sottostringa da una stringa 1C.
  • Variabile = Trova("Musica", "ps"); //sarà 3
    Cerca una sottostringa nella stringa 1C, a partire dal carattere 1.
  • Variabile = StrLength("Musica"); //sarà 6
    Restituisce il numero di caratteri in una stringa 1C.
  • Notify("Ciao") //nella finestra di messaggio nella parte inferiore della finestra 1C
    alert("ciao") //finestra popup
    Status("Hello") //nella riga di visualizzazione dello stato in basso a sinistra
    .

Portare oggetti alla linea 1C

Come sapete, attualmente il formato più popolare per lo scambio di informazioni strutturate è XML. Anche l'ultima versione di MS Office Word ed Excel salva i file in questo formato (rispettivamente docx e xlsx, cambia l'estensione in zip, aprilo in un archiviatore).

La piattaforma 1C per lo scambio di dati offre diverse opzioni, la principale delle quali è anche XML.

1. Il metodo più semplice consiste nell'utilizzare la funzione ShortLP() o String(). È possibile utilizzare la funzione REPRESENTATION() nel testo della query. Il risultato della loro azione è lo stesso: generano una rappresentazione di stringa di qualsiasi oggetto 1C per l'utente.

Per la directory predefinita, questo sarà il suo nome. Per un documento, il nome, il numero e la data del documento.

2. Qualsiasi oggetto 1C (con restrizioni) può essere convertito in XML e viceversa. Il processo di conversione si chiama serializzazione.

ViewStringXml = XMLString(Valore); //ottenere XML dal valore 1C
Value1С = XMLValue(Type("CatalogReference.Nomenclature"),ViewStringXml); //ottenere il valore 1C dalla stringa XML, è necessario specificare il tipo di 1C che deve essere ricevuto

3. Esiste un modo nativo della piattaforma 1C per convertire qualsiasi oggetto 1C in una stringa. È migrato dalla versione 1C 7.7. Questo formato non è compreso da altri programmi, ma comprende un altro 1C, il che ne semplifica l'utilizzo per lo scambio tra database 1C.

Stringa = ValoreInStringInt(Valore1S); //ottenere la stringa 1C dal valore 1C
ValueToFile("C:\MyFile.txt", Value1C); //un'altra opzione, otteniamo un file con una stringa salvata dal valore 1C
Valore1C = ValoreDaStringaInt(Stringa); //indietro dalla riga 1C
Valore1C = ValoreDaFile("C:\MioFile.txt"); //indietro dal file

Modifica delle righe 1C sul modulo

Oltre a lavorare con le stringhe 1C in un programma 1C, ovviamente, vorrei che l'utente fosse in grado di modificarle. Ci sono diverse possibilità per questo:

1. Il modo più semplice è richiedere l'ingresso della linea 1C su richiesta. Questo metodo viene utilizzato quando si insegna la programmazione 1C, nella vita viene utilizzato molto meno spesso (ma viene utilizzato!).

Variabile = "";
String = EnterValue(Variabile, "Inserisci il nome completo");

2. Per visualizzare i dettagli dell'oggetto 1C (directory / documento) oi dettagli del modulo (vedi), il campo di input viene utilizzato più spesso. Questo è lo strumento più comune in 1C per consentire all'utente di lavorare con i campi di modifica.

3. Le funzionalità del campo di input possono essere espanse (vedere le proprietà del campo di input, fare clic con il tasto destro su di esso, per maggiori dettagli):

  • Casella di controllo Modalità di modifica multilinea
  • Casella di controllo Modifica avanzata (disponibile se la casella di controllo precedente è selezionata)
  • Casella di controllo Modalità password (vedere ).

4. Se tutte le possibilità del campo di input non ti bastano, c'è un editor integrato. Per aggiungerlo al modulo, è necessario aggiungere il Campo del documento di testo nel menu Modulo / Inserisci elemento di controllo. Nelle sue proprietà, puoi specificare la modalità del suo funzionamento: la proprietà Extension.

Un campo documento di testo non può essere collegato direttamente ai dati. E' necessario scrivere la seguente funzione nell'event handler del form OnOpening() (vedi ):

FormElements.ElementNameTextDocumentField.SetText(StringValue); //qui, ValueString è il testo ricevuto, ad esempio, dall'attributo

E nel gestore di salvataggio, ad esempio nel pulsante Salva, aggiungi un salvataggio:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString ecco gli oggetti di scena in cui salviamo il valore

5. Nella versione 1C 8.2.11, nei moduli gestiti, esiste una nuova possibilità di rappresentare la linea 1C: il campo Documento formattato.


Simile al campo di un documento di testo, è necessario impostare all'apertura e scrivere quando si salva il testo utilizzando il programma.

  • Nell'oggetto 1C, la forma di cui stiamo creando (libro di riferimento, documento, elaborazione, ecc.) - aggiungi un attributo con il tipo Value Storage
  • Nella funzione OnReadOnServer(), impostare il testo dall'attributo

    //qui Requisito è l'attributo aggiunto dell'oggetto 1C
    //qui FormattedDocument è il nome del campo nel modulo di modifica
    &Sul server

    FormattedDocument = CurrentObject.Attributes.Get();
    FineProcedura

  • Nella funzione BeforeWriteOnServer() o premendo il pulsante, scrivi il testo dal campo

    &Sul server
    Procedura InLetturaSuServer(OggettoCorrente)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    FineProcedura

Implementato nella versione 8.3.6.1977.

Abbiamo ampliato il set di funzioni per lavorare con le stringhe. Lo abbiamo fatto per darti strumenti più avanzati per l'analisi dei dati delle stringhe. Le nuove funzioni saranno convenienti e utili nei compiti tecnologici di analisi del testo. Nelle attività relative all'analisi del testo che contiene dati in una forma formattata. Questa può essere l'analisi di alcuni file ricevuti dall'apparecchiatura o, ad esempio, l'analisi di un registro tecnologico.

Tutte le azioni che eseguono le nuove funzioni, potresti eseguirle prima. Con l'ausilio di algoritmi più o meno complessi scritti in un linguaggio embedded. Pertanto, le nuove funzioni non ti offrono opportunità fondamentalmente nuove. Tuttavia, ti consentono di ridurre la quantità di codice, rendere il codice più semplice e comprensibile. Inoltre, ti consentono di accelerare l'esecuzione delle azioni. Perché le funzioni implementate nella piattaforma funzionano, ovviamente, più velocemente di un algoritmo simile scritto nel linguaggio integrato.

Funzione di formato StrTemplate()

Questa funzione sostituisce i parametri in una stringa. La necessità di tale conversione si presenta spesso, ad esempio, quando si visualizzano messaggi di avviso. La sintassi per questa funzione è la seguente:

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

<Шаблон>è la stringa in cui sostituire le rappresentazioni dei parametri.

<Значение1> , ... <Значение10>- questi sono i parametri (massimo - dieci), le cui rappresentazioni devono essere sostituite nella stringa.

Per specificare una posizione specifica nel modello in cui si desidera eseguire la sostituzione, è necessario utilizzare marcatori della forma %1, ... %10. Il numero di marcatori coinvolti nel modello e il numero di parametri contenenti valori devono corrispondere.

Ad esempio, il risultato dell'esecuzione di un tale operatore:

ci sarà una riga:

Errore nei dati sulla riga 2 (richiede il tipo di data)

Funzione stringa StrCompare()

Questa funzione confronta due stringhe senza distinzione tra maiuscole e minuscole. Ad esempio, in questo modo:

È possibile eseguire la stessa azione prima di utilizzare l'oggetto ValueComparison:

Tuttavia, l'utilizzo della nuova funzione sembra più semplice. Inoltre, la funzione, a differenza dell'oggetto Value Compare, funziona sia nel thin client che nel web client.

Funzioni di stringa StrBeginsC(), StrEndsTo()

Queste funzioni determinano se una stringa inizia con una sottostringa specificata o se una stringa termina con una sottostringa specificata. L'algoritmo di queste funzioni non è difficile da implementare in un linguaggio integrato, ma la loro presenza consente di scrivere codice più pulito e comprensibile. E lavorano più velocemente.

Ad esempio, sono convenienti da utilizzare nell'istruzione If:

Funzioni per lavorare con le stringhe StrSplit(), StrJoin()

Queste funzioni suddividono la stringa in parti in base al delimitatore specificato. O viceversa, combinano più righe in una, inserendo tra loro il separatore selezionato. Sono utili per creare o analizzare registri, un registro tecnologico. Ad esempio, puoi facilmente smontare una voce di registro tecnologico in parti adatte per ulteriori analisi:

Funzione di lavorare con le stringhe StrFind()

Invece della vecchia funzione Find(), abbiamo implementato una nuova funzione che ha funzionalità aggiuntive:

  • Cerca in diverse direzioni (dall'inizio, dalla fine);
  • Cerca dalla posizione specificata;
  • Cerca un'occorrenza con il numero specificato (secondo, terzo, ecc.).

In effetti, duplica le capacità della vecchia funzione. Questo viene fatto per mantenere la compatibilità con i moduli compilati nelle versioni precedenti. Si consiglia di non utilizzare più la vecchia funzione Find().

Di seguito è riportato un esempio che utilizza le nuove funzionalità di ricerca. La ricerca all'indietro è utile quando è necessario l'ultimo pezzo di una stringa formalizzata, come il nome completo di un file in un URL. E la ricerca da una posizione specificata aiuta nei casi in cui è necessario cercare in un frammento noto e non nell'intera stringa.

String è uno dei tipi di dati primitivi nei sistemi 1C:Enterprise 8. Variabili con tipo linea contenere testo.

Digitare i valori delle variabili linea sono racchiusi tra doppi apici. È possibile aggiungere diverse variabili di questo tipo.

Per1 = "Parola 1" ;
Per2 = "Parola 2" ;
Per3 = Per1 + " " + Per2 ;

Infine Per3 conterà" Parola 1 Parola 2″.

Inoltre, i sistemi 1C:Enterprise 8 forniscono funzioni per lavorare con le stringhe. Considera i principali:

InvioStringa(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — la funzione è progettata per visualizzare una finestra di dialogo in cui l'utente può specificare il valore di una variabile di tipo Linea. Parametro <Строка> è obbligatorio e contiene il nome della variabile in cui verrà scritta la stringa immessa. Parametro <Подсказка> facoltativo è il titolo della finestra di dialogo. Parametro <Длина> facoltativo, indica la lunghezza massima della stringa di input. Il valore predefinito è zero, che significa lunghezza illimitata. Parametro <Многострочность> opzionale. Specifica la modalità di immissione del testo su più righe: True: immissione di testo su più righe con separatori di riga; Falso: inserisci una stringa semplice.

Si può inserire una stringa e, conoscendo il codice carattere in Unicode:

Simbolo(<КодСимвола>) — Il codice viene inserito come numero.

Lettera= Simbolo(1103 ); // IO SONO

C'è anche una funzione inversa che ti permette di scoprire il codice di un carattere.

SimboloCodice(<Строка>, <НомерСимвола>) — Restituisce il numero Unicode del carattere specificato come numero.

Funzioni di conversione maiuscole e minuscole:

VReg(<Строка>) - Converte tutti i caratteri in una stringa in maiuscolo.

HReg(<Строка>) - Converte tutti i caratteri in una stringa in minuscolo.

TReg(<Строка>) - converte tutti i caratteri della stringa in maiuscole e minuscole. Cioè, le prime lettere di tutte le parole vengono convertite in maiuscolo e le restanti lettere vengono convertite in minuscolo.

Funzioni per la ricerca e la sostituzione di caratteri in una stringa:

Trova(<Строка>, <ПодстрокаПоиска>) - trova il numero di carattere dell'occorrenza della sottostringa di ricerca. Per esempio:

Trova ("Stringa" , "occhio" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — trova il numero del carattere dell'occorrenza della sottostringa di ricerca, il numero dell'occorrenza è specificato nel parametro corrispondente. In questo caso la ricerca parte dal carattere il cui numero è specificato nel parametro Posizione di partenza. La ricerca è possibile dall'inizio o dalla fine della stringa. Per esempio:

Voce Numero4= StrFind( "Difensiva", "o" , Direzione di ricerca. Primo, 1, 4); // 7

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

StrReplace("Stringa", "occhio", "" ); // Pagina

Riga vuota(<Строка>) - controlla la stringa per i caratteri significativi. Se non sono presenti caratteri significativi o non sono presenti caratteri, viene restituito il valore Vero. Altrimenti - Menzogna.

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

StrNumberOccurrences ( "Studia, studia e ancora studia", "studiare" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — sostituisce i parametri nella stringa con un numero. La stringa deve contenere marcatori di sostituzione nel formato: "%1..%N". La numerazione dei marker parte da 1. Se il valore del parametro Non definito, la stringa vuota viene sostituita.

StrPattern ( "Opzione 1 = %1, Opzione 2 = %2", "1" , "2" ) ; // Parametro 1= 1, Parametro 2 = 2

Funzioni di conversione di stringhe:

Un leone(<Строка>, <ЧислоСимволов>) restituisce i primi caratteri della stringa.

Destra(<Строка>, <ЧислоСимволов>) - restituisce gli ultimi caratteri della stringa.

Mercoledì(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - restituisce una stringa di lunghezza<ЧислоСимволов>, a partire da un carattere<НачальныйНомер>.

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

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

Abrl(<Строка>) - taglia i caratteri non significativi a sinistra del primo carattere significativo della stringa ea destra dell'ultimo carattere significativo della stringa.

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

Altre caratteristiche:

StrLunghezza(<Строка>) - restituisce il numero di caratteri in una stringa.

StrNumero di righe(<Строка>) - restituisce il numero di righe in una stringa multilinea. Una riga è considerata nuova se è separata dalla riga precedente da un carattere di nuova riga.

StrCompare(<Строка1>, <Строка2> ) - confronta due stringhe senza distinzione tra maiuscole e minuscole. La funzione funziona come un oggetto Confronto dei valori. Ritorna:

  • 1 - se la prima riga è maggiore della seconda
  • -1 - se la seconda riga è maggiore della prima
  • 0 - se le stringhe sono uguali

StrCompare("Prima riga" , "Seconda riga" ); // uno

Principali articoli correlati