1s Addition von Strings. Neue String-Funktionen

Es gibt nur wenige Mechanismen zum Arbeiten mit Zeichenfolgen in 1C-Abfragen. Zunächst können Zeichenfolgen hinzugefügt werden. Zweitens kann aus einem String ein Teilstring entnommen werden. Drittens können Zeichenfolgen verglichen werden, einschließlich nach Muster. Das ist ungefähr alles, was Sie mit Strings tun können.

String-Ergänzung

Der "+"-Operator wird verwendet, um Zeichenfolgen in einer Abfrage hinzuzufügen. Sie können nur Zeichenfolgen begrenzter Länge hinzufügen.

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

Substring-Funktion

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

Ein Analogon der Funktion Environment() aus dem Objektmodell. Die Funktion Substring() kann auf Daten vom Typ String angewendet werden und ermöglicht Ihnen die Auswahl eines Fragments <Строки> , beginnend mit einem Zahlenzeichen <НачальнаяПозиция> (Zeichen in einer Zeichenfolge werden ab 1 nummeriert) und Länge <Длина> Figuren. Das Ergebnis der Funktionsauswertung hat einen String-Typ variabler Länge, und die Länge wird als unbegrenzt betrachtet, wenn <Строка> hat unbegrenzte Länge und Parameter <Длина> ist keine Konstante oder größer als 1024.

Wenn die Zeichenfolgenlänge kleiner als im zweiten Parameter angegeben ist, gibt die Funktion eine leere Zeichenfolge zurück.

Aufmerksamkeit! Die Verwendung der Funktion SUBSTRING() zum Konvertieren von Zeichenfolgen unbegrenzter Länge in Zeichenfolgen begrenzter Länge wird nicht empfohlen. Verwenden Sie stattdessen besser den Cast-Operator EXPRESS().

Funktion ähnlich

Wenn wir sicherstellen müssen, dass das String-Attribut bestimmte Kriterien erfüllt, vergleichen wir es:

SELECT Counterparties.Name AS Column1 FROM Directory.Counterparties AS Counterparties WO Counterparties.Name = „Gazprom“

Aber was ist, wenn ein subtilerer Vergleich erforderlich ist? Nicht nur wegen Gleichheit oder Ungleichheit, sondern wegen Ähnlichkeit mit einem bestimmten Muster? Genau dafür wurde die LIKE-Funktion geschaffen.

LIKE – Ein Operator, um zu prüfen, ob eine Zeichenkette einem Muster ähnlich ist. Analog zu LIKE in SQL.

Mit dem LIKE-Operator können Sie den Wert des links davon angegebenen Ausdrucks mit der rechts angegebenen Vorlagenzeichenfolge vergleichen. Der Ausdruckswert muss vom Typ Zeichenfolge sein. Wenn der Wert des Ausdrucks mit der Vorlage übereinstimmt, ist das Ergebnis des Operators TRUE, andernfalls FALSE.

Die folgenden Zeichen im Template-String sind Dienstzeichen und haben eine andere Bedeutung als das String-Zeichen:

  • % (Prozent): eine Folge mit einer beliebigen Anzahl beliebiger Zeichen;
  • _ (Unterstrich): ein beliebiges Zeichen;
  • […] (ein oder mehrere Zeichen in eckigen Klammern): jedes einzelne Zeichen, das in eckigen Klammern aufgeführt ist. Eine Aufzählung kann Bereiche wie a-z enthalten, was jedes Zeichen innerhalb des Bereichs bedeutet, einschließlich der Enden des Bereichs;
  • [^…] (in eckigen Klammern ein Negationszeichen, gefolgt von einem oder mehreren Zeichen): Jedes einzelne Zeichen außer den nach dem Negationszeichen aufgeführten.

Jedes andere Symbol bedeutet sich selbst und trägt keine zusätzliche Last. Wenn eines der aufgeführten Zeichen als es selbst geschrieben werden muss, muss ihm vorangestellt werden<Спецсимвол>. Ich selbst<Спецсимвол>(irgendein geeignetes Zeichen) wird in derselben Anweisung danach definiert Stichwort SPEZIELLES SYMBOL.

Notizen von Looking Glass

18.08.2014 Neue Funktionen zum Arbeiten mit Strings

Implementiert in Version 8.3.6.1977.

Wir haben den Funktionsumfang für die Arbeit mit Strings erweitert. Wir haben dies getan, um Ihnen fortschrittlichere Tools zum Analysieren von Zeichenfolgendaten zur Verfügung zu stellen. Neue Funktionen werden bei technologischen Aufgaben der Textanalyse bequem und nützlich sein. Bei Aufgaben im Zusammenhang mit der Analyse von Text, der Daten in formatierter Form enthält. Dies kann die Analyse einiger vom Gerät empfangener Dateien oder beispielsweise die Analyse eines technologischen Protokolls sein.

Alle Aktionen, die die neuen Funktionen ausführen, konnten Sie zuvor ausführen. Mit Hilfe von mehr oder weniger komplexen Algorithmen, die in einer eingebetteten Sprache geschrieben sind. Neue Funktionen eröffnen Ihnen also keine grundsätzlich neuen Möglichkeiten. Sie ermöglichen es Ihnen jedoch, die Codemenge zu reduzieren, den Code einfacher und verständlicher zu machen. Darüber hinaus ermöglichen sie Ihnen, die Ausführung von Aktionen zu beschleunigen. Denn die in der Plattform implementierten Funktionen arbeiten natürlich schneller als ein ähnlicher Algorithmus, der in der eingebauten Sprache geschrieben ist.

Formatfunktion StrTemplate()

Diese Funktion ersetzt Parameter in einem String. Die Notwendigkeit einer solchen Konvertierung ergibt sich beispielsweise häufig bei der Anzeige von Warnmeldungen. Die Syntax für diese Funktion lautet wie folgt:

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

<Шаблон>ist die Zeichenfolge, in der die Parameterdarstellungen ersetzt werden sollen.

<Значение1> , ... <Значение10>- Dies sind die Parameter (maximal - zehn), deren Darstellungen in die Zeichenfolge eingesetzt werden müssen.

Um eine bestimmte Stelle in der Vorlage festzulegen, an der Sie die Ersetzung durchführen möchten, müssen Sie Markierungen der Form %1, ... %10 verwenden. Die Anzahl der an der Vorlage beteiligten Marker und die Anzahl der Parameter, die Werte enthalten, müssen übereinstimmen.

Zum Beispiel das Ergebnis der Ausführung eines solchen Operators:

Es wird eine Zeile geben:

Datenfehler in Zeile 2 (erfordert Datumstyp)

Zeichenfolgenfunktion StrCompare()

Diese Funktion vergleicht zwei Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung. Zum Beispiel so:

Sie könnten dieselbe Aktion ausführen, bevor Sie das Objekt verwenden Werte vergleichen:

Die Verwendung der neuen Funktion sieht jedoch einfacher aus. Und außerdem eine Funktion, im Gegensatz zu einem Objekt Werte vergleichen, arbeitet in Dünner Kunde, und im Webclient.

Zeichenfolgenfunktionen StrBeginsC(), StrEndsTo()

Diese Funktionen bestimmen, ob eine Zeichenfolge mit einer bestimmten Teilzeichenfolge beginnt oder ob eine Zeichenfolge mit einer bestimmten Teilzeichenfolge endet. Der Algorithmus dieser Funktionen ist nicht schwer in einer integrierten Sprache zu implementieren, aber ihr Vorhandensein ermöglicht es Ihnen, saubereren und verständlicheren Code zu schreiben. Und sie arbeiten schneller.

Beispielsweise ist es bequem, sie im Operator zu verwenden Wenn:

Funktionen zum Arbeiten mit Strings StrSplit(), StrJoin()

Diese Funktionen teilen die Zeichenfolge gemäß dem angegebenen Trennzeichen in Teile auf. Oder umgekehrt, sie fassen mehrere Zeilen zu einer zusammen und fügen das ausgewählte Trennzeichen dazwischen ein. Sie eignen sich zum Erstellen oder Analysieren von Protokollen, einem technologischen Protokoll. Beispielsweise können Sie einen technologischen Protokolleintrag leicht in Teile zerlegen, die für die weitere Analyse geeignet sind:

Funktion zum Arbeiten mit Strings StrFind()

Statt der alten Funktion Finden() haben wir umgesetzt neue Funktion, das zusätzliche Funktionen hat:

  • Suche in verschiedene Richtungen (vom Anfang, vom Ende);
  • Suche ab der angegebenen Position;
  • Suche nach einem Vorkommen mit angegebene Zahl(zweiter, dritter usw.).

Tatsächlich dupliziert es die Fähigkeiten der alten Funktion. Dies geschieht, um die Kompatibilität mit Modulen aufrechtzuerhalten, die in älteren Versionen kompiliert wurden. alte Funktion Finden() empfohlen, nicht wieder verwendet zu werden.

Nachfolgend finden Sie ein Beispiel für die Verwendung der neuen Suchfunktionen. Die Rückwärtssuche ist nützlich, wenn Sie das letzte Stück einer formalisierten Zeichenfolge benötigen, z. B. den vollständigen Namen einer Datei in einer URL. Und die Suche von einer bestimmten Position aus hilft in Fällen, in denen Sie in einem bekannten Fragment und nicht in der gesamten Zeichenfolge suchen müssen.

Den Typ String findet man in allen Programmiersprachen. Es ist primitiv und in 1C gibt es viele Funktionen, um damit zu arbeiten. In diesem Artikel gehen wir genauer darauf ein verschiedene Wege Arbeit mit Zeichenfolgentypen in 1C 8.3 und 8.2 mit Beispielen.

Linie

Um eine Variable beliebigen Typs in einen String umzuwandeln, gibt es die gleichnamige Funktion „String()“. Der Eingabeparameter ist die Variable selbst, deren Zeichenfolgendarstellung erhalten werden soll.

String(False) // gibt "Nein" zurück
String(12345) // gibt "12 345" zurück
String(CurrentDate()) //"21.07.2017 11:55:36"

Es ist möglich, nicht nur primitive Typen, sondern auch andere, beispielsweise Elemente von Verzeichnissen und Dokumenten, in eine Zeichenfolge umzuwandeln.

Abgekürzt LP, abgekürzt L, abgekürzt P

Die Eingabeparameter dieser Funktionen sind eine Variable vom Typ String. Die Funktionen entfernen unbedeutende Zeichen (Leerzeichen, Wagenrückläufe usw.): jeweils von der linken und rechten Seite, nur von der linken Seite und nur von rechts.

abbrl("Leerzeichen auf beiden Seiten werden entfernt") // "Leerzeichen auf beiden Seiten werden entfernt"
abbr("Leerzeichen auf beiden Seiten werden entfernt") // "Leerzeichen auf der linken Seite werden entfernt"
abbr("Leerzeichen auf beiden Seiten werden entfernt") // "Leerzeichen auf der rechten Seite werden entfernt"

Löwe, rechts, Mitte

Mit diesen Funktionen können Sie einen Teil einer Zeichenfolge abschneiden. Die Funktion Lion() gibt den Teil der Zeichenfolge auf der linken Seite mit der angegebenen Länge zurück. Die Funktion "Right()" ist ähnlich, aber das Zuschneiden erfolgt auf der rechten Seite. Mit der Funktion "Wed()" können Sie die Zeichennummer angeben, aus der die Zeichenfolge ausgewählt wird, sowie ihre Länge.

Lion("String-Variable", 4) // gibt "Stro" zurück
Right("String-Variable", 7) // gibt "Variable" zurück
avg("String-Variable", 2, 5)// gibt "troco" zurück

StrLänge

Die Funktion ermittelt die Anzahl der Zeichen, die in einer String-Variablen enthalten sind.

StrLength("Word") // Das Ergebnis der Ausführung ist die Zahl 5

Finden

Die Funktion ermöglicht es, in einer String-Variablen nach einem Teil eines Strings zu suchen. Der Rückgabewert ist eine Zahl, die die Position des Anfangs der gefundenen Zeichenfolge angibt. Wenn keine Übereinstimmungen gefunden werden, wird Null zurückgegeben.

Beachten Sie, dass bei der Suche zwischen Groß- und Kleinschreibung unterschieden wird. Wenn der Suchteilstring mehr als einmal in der ursprünglichen Zeichenfolge vorkommt, gibt die Funktion den Anfang des ersten Vorkommens zurück.

Find("one, two, one, two, three", "two") // Die Funktion gibt die Zahl 6 zurück

Leere Zeile

Mit dieser Funktion können Sie feststellen, ob eine Zeichenfolge leer ist. Unbedeutende Zeichen wie Leerzeichen, Wagenrücklauf und andere werden nicht berücksichtigt.

EmptyString("Vasily Ivanovich Pupkin") // Die Funktion gibt False zurück
EmptyString(" ") // Die Funktion gibt True zurück

VReg, NReg, TReg

Diese Funktionen sind sehr nützlich beim Vergleichen und Konvertieren von String-Variablen. „Vreg()“ gibt den ursprünglichen String in Großbuchstaben zurück, „HReg()“ in Kleinbuchstaben und „TReg()“ formatiert ihn so, dass das erste Zeichen jedes einzelnen Wortes großgeschrieben wird und alle nachfolgenden Zeichen kleingeschrieben werden.

VReg("GENERAL DIRECTOR") // Rückgabewert - "GENERAL DIRECTOR"
HReg("GENERAL DIRECTOR") // Rückgabewert - "CEO"
TReg("GENERAL DIRECTOR") // Rückgabewert - "Generaldirektor"

StrErsetzen

Diese Funktion ist analog zum Ersetzen in Texteditoren. Es ermöglicht Ihnen, in String-Variablen ein Zeichen oder eine Gruppe von Zeichen durch ein anderes zu ersetzen.

StrReplace("rot, weiß, gelb", ",", ";") // gibt "rot; Weiss; Gelb"

StrNumberRows

Die Funktion ermöglicht es Ihnen, die Anzahl der durch einen Wagenrücklauf getrennten Zeilen in einer Textvariablen zu bestimmen.

Die Schleife im folgenden Beispiel durchläuft drei Kreise, da die StrNumberRows-Funktion den Wert 3 zurückgibt:

Für ind \u003d 1 von StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") Schleife
<тело цикла>
EndCycle;

StrGetString

Diese Funktion arbeitet mit mehrzeiligem Text auf die gleiche Weise wie die vorherige. Es ermöglicht Ihnen, eine bestimmte Zeichenfolge aus einer Textvariablen zu erhalten.

StrGetString("String1" + Symbole.PS + "String2" + Symbole.PS + "String3", 2) // gibt "Zeile2" zurück

StrNumberOccurrences

Die Funktion zählt die Anzahl der Vorkommen eines Zeichens oder einer Teilzeichenfolge in der gesuchten Zeichenfolge.

StrNumberInstallations("a;b;c;d; ", ";") // Die Funktion gibt die Zahl 4 zurück

Symbol und SymbolCode

Mit diesen Funktionen können Sie ein Zeichen anhand seines Unicode-Codes abrufen und diesen Code anhand des Zeichens selbst bestimmen.

SymbolCode("A") // Die Funktion gibt die Zahl 1 040 zurück
SymbolCode(1040) // die Funktion gibt "A" zurück

Häufige Aufgaben bei der Arbeit mit Saiten

String-Verkettung

Um mehrere Zeichenfolgen zu verketten (concatenate), verwenden Sie einfach den Additionsoperator.

"Zeile 1" + "Zeile 2" //das Ergebnis der Addition von zwei Zeilen ist "Zeile 1 Zeile 2"

Typumwandlung

Um einen Typ in einen String umzuwandeln, beispielsweise eine Referenz auf ein Wörterbuchelement, eine Zahl usw., reicht es aus, die Funktion "String ()" zu verwenden. Funktionen wie "ShortLP()" wandeln Variablen ebenfalls in einen String um, jedoch sofort mit dem Abschneiden unbedeutender Zeichen.

String(1000) // gibt "1000" zurück

Bitte beachten Sie, dass das Programm beim Konvertieren einer Zahl in eine Zeichenfolge automatisch ein Leerzeichen zur Tausendertrennung hinzufügt. Um dies zu vermeiden, können Sie die folgenden Strukturen verwenden:

StrReplace(String(1000),Characters.NPP,"") // gibt "1000" zurück

String(Format(1000,"CH=")) // gibt "1000" zurück

Anführungszeichen in einer Zeichenfolge

Ziemlich oft müssen Sie sich mit der Notwendigkeit auseinandersetzen, Anführungszeichen in eine String-Variable zu setzen. Das kann entweder ein im Konfigurator geschriebener Anfragetext oder einfach eine Variable sein. Um dieses Problem zu lösen, müssen Sie nur zwei Anführungszeichen setzen.

Header = String("Horns and Hooves LLC is us!") // gibt "Roga and Hooves LLC is us!" zurück

Mehrzeilig, Zeilenumbruch

Um einen mehrzeiligen Text zu erstellen, reicht es aus, Zeilenumbruchzeichen (Symbols.PS) hinzuzufügen.

MultilineText = "Erste Zeile" + Zeichen.PS + "Zweite Zeile"

So entfernen Sie Leerzeichen

Um Leerzeichen rechts oder links zu entfernen, können Sie die Funktion „Stretch()“ (sowie „Scrpt()“ und „ScreenP()“) verwenden:

StringWithoutSpaces = ShortLP(" Viele Buchstaben ") // die Funktion gibt den Wert "Viele Buchstaben" zurück

Wenn Sie nach der Umwandlung einer Zahl in eine Zeichenfolge geschützte Leerzeichen entfernen müssen, verwenden Sie die folgende Konstruktion:

StringWithoutSpaces = StrReplace(String(99999),Characters.NPP,"") // gibt "99999" zurück

Außerdem verwenden Programmierer häufig die folgende Konstruktion, mit der Sie alle Leerzeichen einer Textvariablen entfernen oder durch ein anderes Zeichen ersetzen können:

StringWithoutSpaces = StrReplace(" hallo", " " ,"") // gibt "hallo" zurück

Saiten miteinander vergleichen

Sie können Begriffe mit dem üblichen Gleichheitszeichen vergleichen. Beim Vergleich wird zwischen Groß- und Kleinschreibung unterschieden.

"hello" = "hello" // gibt false zurück
"Hallo" = "Hallo" // gibt True zurück
"Hallo" = "Auf Wiedersehen" // gibt False zurück

String ist einer der primitiven Datentypen in Systemen von 1C:Enterprise 8. Variablen mit Typ Linie Texte enthalten.

Geben Sie Variablenwerte ein Linie werden in doppelte Anführungszeichen eingeschlossen. Mehrere Variablen dieser Art kann gefaltet werden.

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

Zusammenfassend Per3 wird eine Rolle spielen " Wort 1 Wort 2″.

Darüber hinaus bieten 1C:Enterprise 8-Systeme Funktionen zum Arbeiten mit Zeichenfolgen. Betrachten Sie die wichtigsten:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — Die Funktion soll ein Dialogfeld anzeigen, in dem der Benutzer den Wert einer Variablen vom Typ angeben kann Linie. Parameter <Строка> ist erforderlich und enthält den Namen der Variablen, in die der eingegebene String geschrieben wird. Parameter <Подсказка> optional ist der Titel des Dialogfelds. Parameter <Длина> optional, gibt die maximale Länge der Eingabezeichenfolge an. Der Standardwert ist Null, was eine unbegrenzte Länge bedeutet. Parameter <Многострочность> Optional. Legt den mehrzeiligen Texteingabemodus fest: True — mehrzeilige Texteingabe mit Zeilentrennzeichen; False – Geben Sie eine einfache Zeichenfolge ein.

Es kann eine Zeichenfolge eingegeben werden und bei Kenntnis des Zeichencodes in Unicode:

Symbol(<КодСимвола>) — Der Code wird als Zahl eingegeben.

Buchstabe= Symbol(1103 ) ; // ICH

Es gibt auch Umkehrfunktion, mit dem Sie den Code eines Zeichens herausfinden können.

SymbolCode(<Строка>, <НомерСимвола>) — Gibt die Unicode-Nummer des angegebenen Zeichens als Zahl zurück.

Konvertierungsfunktionen für Textfälle:

VReg(<Строка>) - Konvertiert alle Zeichen in einer Zeichenfolge in Großbuchstaben.

HReg(<Строка>) - Konvertiert alle Zeichen in einer Zeichenfolge in Kleinbuchstaben.

TReg(<Строка>) - Wandelt alle Zeichen der Zeichenfolge in Groß-/Kleinschreibung um. Das heißt, die ersten Buchstaben aller Wörter werden in Großbuchstaben und die restlichen Buchstaben in Kleinbuchstaben umgewandelt.

Funktionen zum Suchen und Ersetzen von Zeichen in einer Zeichenfolge:

Finden(<Строка>, <ПодстрокаПоиска>) - findet die Zeichennummer des Vorkommens der Suchteilzeichenfolge. Zum Beispiel:

Find ("String" , "eye" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — findet die Zeichennummer des Vorkommens der Suchteilzeichenfolge, die Vorkommensnummer wird im entsprechenden Parameter angegeben. In diesem Fall beginnt die Suche ab dem Zeichen, dessen Nummer im Parameter angegeben ist Startposition. Die Suche ist vom Anfang oder vom Ende des Strings möglich. Zum Beispiel:

Number4 Eintrag= StrFind( "Abwehr", "o" , Suchrichtung. Zuerst 1 , 4 ) ; // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) Findet alle Vorkommen der Suchteilzeichenfolge in der Quellzeichenfolge und ersetzt sie durch die Ersatzteilzeichenfolge.

StrReplace("String" , "Auge" , "" ) ; // Buchseite

Leere Zeile (<Строка>) - überprüft den String auf signifikante Zeichen. Wenn keine signifikanten Zeichen oder überhaupt keine Zeichen vorhanden sind, wird der Wert zurückgegeben WAHR. Sonst - Lüge.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – berechnet die Anzahl der Vorkommen des Such-Teilstrings im Quellstring.

StrNumberOccurrences ( "Lernen, lernen und nochmal lernen", "lernen" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — ersetzt die Parameter durch Nummern in der Zeichenkette. Die Zeichenfolge muss Ersetzungsmarkierungen der Form "%1..%N" enthalten. Die Nummerierung der Marker beginnt bei 1. Wenn der Parameterwert Nicht definiert, wird die leere Zeichenfolge ersetzt.

StrMuster ( "Option 1 = %1, Option 2 = %2", "1" , "2" ) ; // Parameter 1 = 1, Parameter 2 = 2

String-Konvertierungsfunktionen:

Ein Löwe(<Строка>, <ЧислоСимволов>) gibt die ersten Zeichen der Zeichenfolge zurück.

Rechts(<Строка>, <ЧислоСимволов>) - gibt die letzten Zeichen der Zeichenfolge zurück.

Mittwoch(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - gibt eine Zeichenfolge der Länge zurück<ЧислоСимволов>, beginnend mit einem Zeichen<НачальныйНомер>.

Abk.(<Строка>) schneidet nicht signifikante Zeichen links vom ersten signifikanten Zeichen in der Zeichenfolge ab.

abk.<Строка>) - schneidet unbedeutende Zeichen rechts vom letzten signifikanten Zeichen in der Zeichenfolge ab.

Abbrl(<Строка>) - schneidet nicht signifikante Zeichen links vom ersten signifikanten Zeichen in der Zeichenfolge und rechts vom letzten signifikanten Zeichen in der Zeichenfolge ab.

StrGetString(<Строка>, <НомерСтроки>) – Ruft die Zeichenfolge einer mehrzeiligen Zeichenfolge nach Nummer ab.

Andere Eigenschaften:

StrLänge(<Строка>) - gibt die Anzahl der Zeichen in einer Zeichenfolge zurück.

StrAnzahl der Zeilen(<Строка>) - gibt die Anzahl der Zeilen in einer mehrzeiligen Zeichenfolge zurück. Eine Zeile gilt als neu, wenn sie durch ein Zeilenumbruchzeichen von der vorherigen Zeile getrennt ist.

StrCompare(<Строка1>, <Строка2> ) - vergleicht zwei Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung. Die Funktion funktioniert wie ein Objekt Werte vergleichen. Kehrt zurück:

  • 1 - wenn die erste Zeile größer als die zweite ist
  • -1 - wenn die zweite Zeile größer als die erste ist
  • 0 - wenn Zeichenfolgen gleich sind

StrCompare("Erste Reihe" , "Zweite Reihe" ) ; // 1

Zu den Grundfunktionen einer Programmiersprache gehört in der Regel das Arbeiten mit Zahlen und Zeichenketten. Normalerweise sind diese Funktionen fest in den Compilercode integriert (oder "Basis"-Klassen der Programmiersprache sind implementiert).

In 1C sind die Funktionen zum Arbeiten mit Zeichenfolgen in der Plattform selbst programmiert. Heute werden wir die Funktionen der Arbeit mit 1C-Strings in Programmen in der integrierten 1C-Sprache betrachten.

Zeilenwert 1C

1. Beginnen wir mit dem Einfachsten. Das Erstellen einer Variablen und das Zuweisen eines String-Konstantenwerts sieht in 1C so aus:

Variable = "Hallo Welt!";

Wenn Sie ein Anführungszeichen in einem konstanten Zeichenfolgenwert 1C angeben möchten, müssen Sie es verdoppeln ""

Variable = "Hallo, "Welt""!";

2. Zeilenumbruch 1C kann auf zwei Arten gleichzeitig angegeben werden. Die erste ist die Verwendung des Symbols |

Variable = "Hallo,
| Welt! ";

Die zweite verwendet die Symbols-Systemaufzählung. Sie können sowohl einen Zeilenumbruch 1C als auch andere nicht druckbare Zeichen wie TAB hinzufügen.

Variable = "Hallo" + Symbols.ps + "Frieden!";

3. Konfigurationen in 1C können nicht nur für eine Sprache (Russisch, Englisch oder andere) entwickelt werden - sondern gleichzeitig für mehrere Sprachen. In diesem Fall wird die aktuell verwendete Sprache unten im 1C-Fenster ausgewählt.

Die Liste der Sprachen befindet sich im Konfigurationsfenster im Zweig Allgemein/Sprachen. Jede Sprache hat eine kurze Kennung wie z en oder eng.

Es ist klar, dass bei der Programmierung einer solchen Konfiguration 1C-Leitungen auch mehrsprachig sein können. Dazu ist es möglich, eine solche 1C-Leitung durch Angabe von through zu erstellen; Optionen nach Sprach-ID:

Variable = "ru=""Hallo Welt!""; en=""Hallo Welt! """;

Wenn Sie die auf diese Weise gebildete 1C-Linie wie gewohnt verwenden, ist dies das, was darin geschrieben steht. Damit das System es in zwei Optionen aufteilen und die gewünschte verwenden kann, müssen Sie die Funktion NStr() verwenden:

//korrekt für zweisprachige Konfigurationen
Report(NStr(Variable));

Requisiten mit Linientyp 1C

Voraussetzung ist ein Feld des Verzeichnisses / Dokuments 1C. Es unterscheidet sich von einer Variablen in einem Programm in der 1C-Sprache dadurch, dass sein Typ für das Attribut genau angegeben ist (Zahl, Zeichenfolge 1C usw.). Wenn Sie auffrischen müssen, was Requisiten sind, sehen Sie sich das Tutorial auf an.

Wenn Sie den Attributtyp angeben - Zeile 1C, müssen Sie zusätzlich die Parameter angeben.

1C-Strings haben eine unbegrenzte Länge (angezeigt als Länge = 0) und eine begrenzte Länge, die die genaue Anzahl von Zeichen angibt. 1C-Strings unbegrenzter Länge werden in einer separaten SQL-Tabelle gespeichert, sodass ihre Verwendung weniger produktiv ist als begrenzte.

Aus diesem Grund hat die Verwendung von 1C-Strings unbegrenzter Länge ihre Grenzen - es ist nicht möglich, sie überall zu verwenden. Beispielsweise ist dies nicht möglich als Dokumentnummer, Verzeichniscode, Messung.

Arbeiten mit 1C-Linien

Um mit Zeichenfolgen zu arbeiten, gibt es mehrere integrierte Funktionen der 1C-Plattform.

  • AbbrLP("Unglaublich, aber wahr!")
    Entfernt aus Zeile 1C zusätzliche Leerzeichen. Es kann auch verwendet werden, um jeden Typ in eine 1C-Zeichenfolge (z. B. Zahlen) zu konvertieren.
  • Variable = "Wasja" + Abbrl("plus") + "Olja"; // wird "Vasya plus Olya" sein
    Ein Beispiel für die Summierung mehrerer Zeichenfolgenwerte 1C. Das Ergebnis ist eine Zeile 1C.
  • Variable = Lion("Musik", 2); // wird "Mu" sein
    Variable = Avg("Musik", 2, 2); // wird "ps" sein
    Variable = Rechte ("Musik", 2); // wird "ka" sein
    Verschiedene Optionen zum Erhalten eines Teilstrings aus einem String 1C.
  • Variable = Find("Musik", "ps"); // wird 3 sein
    Suchen Sie nach einer Teilzeichenfolge in Zeichenfolge 1C, beginnend mit Zeichen 1.
  • Variable = StrLength("Musik"); //wird 6
    Gibt die Anzahl der Zeichen in einer Zeichenfolge 1C zurück.
  • Notify("Hi") //im Meldungsfeld unten im 1C-Fenster
    alert("hello") //Popup-Dialog
    Status("Hallo") //in der Statuszeile unten links
    .

Objekte zu Linie 1C bringen

Wie Sie wissen, ist das derzeit beliebteste Format für den Austausch strukturierter Informationen XML. Selbst letzte Version MS Office-Wort und Excel speichern Dateien in diesem Format (docx bzw. xlsx, ändern Sie die Erweiterung in zip, öffnen Sie sie in einem Archivierungsprogramm).

Die 1C-Plattform für den Datenaustausch bietet mehrere Optionen, von denen die wichtigste auch XML ist.

1. Die einfachste Methode ist die Verwendung der Funktion ShortLP() oder String(). Sie können die Funktion REPRESENTATION() im Abfragetext verwenden. Das Ergebnis ihrer Aktion ist das gleiche - sie generieren eine Zeichenfolgendarstellung eines beliebigen 1C-Objekts für den Benutzer.

Für das Standardverzeichnis ist dies der Name. Bei einem Dokument der Name, die Nummer und das Datum des Dokuments.

2. Jedes 1C-Objekt (mit Einschränkungen) kann in XML konvertiert werden und umgekehrt. Der Konvertierungsprozess wird als Serialisierung bezeichnet.

ViewStringXml = XMLString(Wert); //XML von Wert 1C abrufen
Value1С = XMLValue(Type("CatalogReference.Nomenclature"),ViewStringXml); //Erhalten Sie den 1C-Wert aus der XML-Zeichenfolge. Sie müssen den Typ von 1C angeben, der empfangen werden soll

3. Es gibt eine native Methode der 1C-Plattform, um jedes 1C-Objekt in eine Zeichenfolge zu konvertieren. Es wurde von Version 1C 7.7 migriert. Dieses Format wird von anderen Programmen nicht verstanden, versteht aber ein anderes 1C, was es einfach macht, es für den Austausch zwischen 1C-Datenbanken zu verwenden.

String = ValueInStringInt(Value1S); // String 1C aus Wert 1C erhalten
ValueToFile("C:\MeineDatei.txt", Value1C); //Eine weitere Option, wir erhalten eine Datei mit einem gespeicherten String aus dem Wert 1C
Value1C = ValueFromStringInt(String); //zurück von Zeile 1C
Value1C = ValueFromFile("C:\MeineDatei.txt"); //zurück aus Datei

Bearbeiten der Zeilen 1C auf dem Formular

Neben der Arbeit mit 1C-Strings in einem 1C-Programm möchte ich natürlich, dass der Benutzer sie bearbeiten kann. Dazu gibt es mehrere Möglichkeiten:

1. Am einfachsten ist es, die Eingabe der 1C-Leitung bei Bedarf anzufordern. Diese Methode wird beim Unterrichten der 1C-Programmierung verwendet, im Leben wird sie viel seltener verwendet (aber sie wird verwendet!).

Variable = "";
String = EnterValue(Variable, "Geben Sie den vollständigen Namen ein");

2. Um die Details des 1C-Objekts (Verzeichnis / Dokument) oder die Details des Formulars anzuzeigen (siehe), wird das Eingabefeld am häufigsten verwendet. Dies ist das gebräuchlichste Werkzeug in 1C für den Benutzer, um mit Bearbeitungsfeldern zu arbeiten.

3. Die Möglichkeiten des Eingabefeldes können erweitert werden (siehe Eigenschaften des Eingabefeldes, Rechtsklick darauf, für mehr Details):

  • Checkbox Mehrzeiliger Bearbeitungsmodus
  • Kontrollkästchen Erweiterte Bearbeitung (verfügbar, wenn das vorherige Kontrollkästchen aktiviert ist)
  • Kontrollkästchen Passwortmodus (siehe ).

4. Wenn Ihnen alle Möglichkeiten des Eingabefeldes nicht ausreichen, gibt es einen eingebauten Editor. Um es dem Formular hinzuzufügen, müssen Sie im Menü Formular / Steuerelement einfügen ein Feld hinzufügen Text dokument. In seinen Eigenschaften können Sie den Betriebsmodus angeben - die Erweiterungseigenschaft.

Ein Textdokumentfeld kann nicht direkt mit Daten verknüpft werden. Es ist notwendig, die folgende Funktion in den Ereignishandler des Formulars OnOpening() zu schreiben (siehe ):

FormElements.ElementNameTextDocumentField.SetText(StringValue); //hier ist ValueString der Text, der z. B. vom Attribut empfangen wird

Und im Save-Handler – zum Beispiel im Save-Button – füge einen Save hinzu:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString hier sind die Requisiten, wo wir den Wert speichern

5. In 1C-Version 8.2.11, in verwaltete Formulare, erschien neue Chance Zeilendarstellung 1C - Formatiertes Dokumentenfeld.


Ähnlich wie beim Feld eines Textdokuments ist es notwendig, beim Öffnen und Schreiben den Text selbst mit dem Programm zu speichern.

  • Fügen Sie im 1C-Objekt, dessen Form wir erstellen (Nachschlagewerk, Dokument, Verarbeitung usw.), ein Attribut mit dem Wertspeichertyp hinzu
  • Legen Sie in der Funktion OnReadOnServer() den Text aus dem Attribut fest

    //hier Erforderlich ist das hinzugefügte Attribut des 1C-Objekts
    //hier ist FormattedDocument der Name des Feldes im Bearbeitungsformular
    &Auf dem Server

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProzedur

  • Schreiben Sie in der Funktion BeforeWriteOnServer() oder durch Drücken der Schaltfläche den Text aus dem Feld

    &Auf dem Server
    Prozedur OnReadingOnServer(CurrentObject)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    EndProzedur



Wird geladen...
Spitze