Neue Funktionen zum Arbeiten mit Strings. Neue Funktionen für die Arbeit mit Strings 1c Konvertierung in String

Zu den grundlegenden Fähigkeiten einer Programmiersprache gehört normalerweise die Arbeit mit Zahlen und Zeichenfolgen. Normalerweise sind diese Funktionen fest in den Compiler-Code codiert (oder die „Basis“-Klassen der Programmiersprache werden implementiert).

In 1C ist die Fähigkeit, mit Strings zu arbeiten, in der Plattform selbst programmiert. Heute werden wir uns die Funktionen der Arbeit mit 1C-Strings in Programmen in der integrierten 1C-Sprache ansehen.

Linienwert 1C

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

Variable = „Hallo Welt!“;

Wenn Sie ein Anführungszeichen in einem konstanten 1C-String-Wert angeben müssen, müssen Sie es verdoppeln „“

Variable = "Hallo Welt"!;

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

Variable = „Hallo,
| Welt! ";

Die zweite Möglichkeit besteht darin, die Systemaufzählung „Symbole“ zu verwenden. Sie können damit sowohl 1C-Zeilenumbrüche 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 eine 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, z ru oder eng.

Es ist klar, dass 1C-Leitungen bei der Programmierung einer solchen Konfiguration auch mehrsprachig sein können. Zu diesem Zweck ist es möglich, eine solche 1C-Linie zu erstellen, indem Sie „through“ angeben. Optionen nach Sprachkennung:

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

Wenn Sie die so gebildete 1C-Zeile wie gewohnt verwenden, ist es das, was darin steht. Damit das System es in zwei Optionen aufteilt und die gewünschte verwendet, müssen Sie die Funktion НStr() verwenden:

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

Requisiten mit Linientyp 1C

Das Attribut ist ein Feld im 1C-Verzeichnis/Dokument. Sie unterscheidet sich von einer Variablen in einem Programm in der 1C-Sprache dadurch, dass für das Attribut ihr Typ genau angegeben ist (Zahl, 1C-String usw.). Wenn Sie Ihre Erinnerung daran auffrischen möchten, was ein Requisit ist, schauen Sie sich die Lektion an.

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

1C-Zeilen gibt es in unbegrenzter Länge (angezeigt als Länge = 0) und begrenzter Länge, die die genaue Anzahl der Zeichen angibt. 1C-Zeilen unbegrenzter Länge werden in einer separaten SQL-Tabelle gespeichert, sodass ihre Verwendung weniger produktiv ist als die begrenzter.

Deshalb hat die Verwendung von 1C-Strings unbegrenzter Länge ihre Grenzen – ihre Verwendung ist nicht überall möglich. Es ist beispielsweise nicht als Dokumentnummer, Referenzcode oder Maßeinheit zulässig.

Arbeiten mit 1C-Saiten

Es gibt mehrere integrierte Funktionen der 1C-Plattform für die Arbeit mit Strings.

  • AbbrLP („Unglaublich, aber wahr!“)
    Entfernt aus Zeile 1C zusätzliche Leerzeichen. Kann auch zum Konvertieren beliebiger Typen in eine 1C-Zeichenfolge (z. B. Zahlen) verwendet werden.
  • Variable = „Vasya“ + AbbrLP(“ plus“) + „Olya“; //es wird „Vasya plus Olya“ geben
    Ein Beispiel für die Summierung mehrerer 1C-Stringwerte. Das Ergebnis ist eine Zeile 1C.
  • Variable = Lev("Musik", 2); //wird „Mu“ sein
    Variable = Medium("Musik", 2, 2); //Es wird eine „Bedrohung“ geben
    Variable = Rights("Music", 2); //es wird „ka“ geben
    Verschiedene Möglichkeiten, einen Teilstring aus einem 1C-String zu erhalten.
  • Variable = Find("Music", "zy"); //es werden 3 sein
    Suchen Sie nach einer Teilzeichenfolge in Zeichenfolge 1C, beginnend mit Zeichen 1.
  • Variable = StrLength("Music"); //wird 6 sein
    Gibt die Anzahl der Zeichen in der 1C-Zeile zurück.
  • Report("Hallo") //im Nachrichtenfenster am unteren Rand des 1C-Fensters
    Alert("Hallo") //Popup-Dialog
    Status("Hallo") //in der Statusanzeigezeile unten links
    .

Objekte zur Linie 1C bringen

Wie Sie wissen, ist XML derzeit das beliebteste Format für den Austausch strukturierter Informationen. Sogar letzte Version MS Office Word 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 Abbreviation() oder String(). Sie können die Funktion REPRESENTATION() im Anfragetext verwenden. Das Ergebnis ihrer Aktion ist dasselbe: Sie generieren eine Zeichenfolgendarstellung eines beliebigen 1C-Objekts für den Benutzer.

Bei einem Verzeichnis ist dies standardmäßig der Name. Für ein Dokument – ​​Dokumentname, Nummer und Datum.

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

StringViewXml = XMLString(Value); //XML vom 1C-Wert abrufen
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //den 1C-Wert aus der XML-Zeichenfolge abrufen, Sie müssen den 1C-Typ angeben, der empfangen werden soll

3. Es gibt eine eigene Möglichkeit der 1C-Plattform, jedes 1C-Objekt in einen String umzuwandeln. Es wurde von Version 1C 7.7 migriert. Dieses Format wird von anderen Programmen nicht verstanden, andere 1C-Programme verstehen es jedoch, was die Verwendung für den Austausch zwischen 1C-Datenbanken erleichtert.

Row = ValueInRowInt(Value1C); //String 1C aus Wert 1C abrufen
ValueVFile("C:\MyFile.txt", Value1C); //eine weitere Option, wir erhalten eine Datei mit einer gespeicherten Zeichenfolge aus dem 1C-Wert
Value1C = ValueFromStringInt(String); //zurück von Zeile 1C
Value1C = ValueFile("C:\MyFile.txt"); //zurück aus der Datei

Bearbeiten von 1C-Zeilen im Formular

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

1. Der einfachste Weg besteht darin, bei Bedarf die Eingabe einer 1C-Leitung anzufordern. Diese Methode wird beim Unterrichten der 1C-Programmierung verwendet; im Leben wird sie viel seltener verwendet (aber sie wird verwendet!).

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

2. Um die Details eines 1C-Objekts (Verzeichnis/Dokument) oder Formulardetails (siehe) anzuzeigen, wird am häufigsten ein Eingabefeld verwendet. Dies ist das gebräuchlichste Tool in 1C, mit dem der Benutzer mit Bearbeitungsfeldern arbeiten kann.

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

  • Kontrollkästchen 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 Eingabefelds nicht ausreichen, gibt es einen integrierten Editor. Um es dem Formular hinzuzufügen, müssen Sie „Feld“ zum Menü „Formular/Einfügen“ hinzufügen Text dokument. In seinen Eigenschaften können Sie seinen Betriebsmodus festlegen – die Extension-Eigenschaft.

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

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //hier ist ValueString der Text, der beispielsweise vom Attribut empfangen wird

Und fügen Sie im Speicherhandler – zum Beispiel in der Schaltfläche „Speichern“ – eine Speicherung hinzu:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //WertDie Zeile hier ist das Attribut, in dem wir den Wert speichern

5. In 1C Version 8.2.11 ist in verwalteten Formularen eine neue Option zur Darstellung einer 1C-Zeile erschienen – das Feld „Formatiertes Dokument“.


Ähnlich wie das Feld eines Textdokuments müssen Sie es beim Öffnen festlegen und beim Speichern selbst mit dem Programm notieren.

  • Fügen Sie im 1C-Objekt, dessen Form wir erstellen (Verzeichnis, Dokument, Verarbeitung usw.), ein Attribut vom Typ „Wertspeicher“ hinzu
  • In der Funktion OnReadOnServer() setzen wir den Text aus dem Attribut

    //hier ist das Attribut das hinzugefügte Attribut des 1C-Objekts
    //Hier ist FormattedDocument der Name des Felds im Formular zur Bearbeitung
    &Auf dem Server

    FormattedDocument = CurrentObject.Attributes.Get();
    Ende des Verfahrens

  • In der Funktion BeforeWritingOnServer() oder über die Schaltfläche schreiben wir den Text aus dem Feld

    &Auf dem Server
    Vorgehensweise beim ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Ende des Verfahrens

Zeilen in 1C 8.3 in der integrierten Sprache 1C repräsentieren Werte eines primitiven Typs Linie. Werte dieser Art enthalten einen Unicode-String beliebiger Länge. Variablen vom Typ String sind eine Reihe von Zeichen, die in Anführungszeichen eingeschlossen sind.

Beispiel 1. Lassen Sie uns eine String-Variable mit Text erstellen.

StringVariable = "Hallo Welt!";

Funktionen zum Arbeiten mit Strings in 1s 8.3

In diesem Abschnitt werden die Hauptfunktionen bereitgestellt, mit denen Sie Zeilen in 1c ändern oder die darin enthaltenen Informationen analysieren können.

StrLength

StrLength(<Строка>) . Gibt die Anzahl der Zeichen zurück, die in der als Parameter übergebenen Zeichenfolge enthalten sind.

Beispiel 2. Zählen wir die Anzahl der Zeichen in der Zeile „Hallo Welt!“

String = "Hallo Welt!"; NumberofCharacters = StrLength(String); Bericht(AnzahlZeichen);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Anzahl der Zeichen in der Zeile: 11.

Abk.L

AbbrL(<Строка>) . Schneidet nicht signifikante Zeichen links vom ersten signifikanten Zeichen in der Zeichenfolge ab.
Nebenfiguren:

  • Raum;
  • geschützter Raum;
  • Tabellierung;
  • Wagenrücklauf;
  • Zeilenübersetzung;
  • Übersetzung des Formulars (Seite).

Beispiel 3. Entfernen Sie alle Leerzeichen auf der linken Seite der Zeile „world!“. und fügen Sie die Zeile „Hallo“ hinzu.

String = Abkürzung("world!"); String = "Hallo"+String; Bericht(String);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Zeile „Hallo Welt!“ auf dem Bildschirm.

Abgekürzt

Abkürzung(<Строка>) . Schneidet nicht signifikante Zeichen rechts vom ersten signifikanten Zeichen in der Zeichenfolge ab.

Beispiel 4. Form aus den Zeilen „Hallo“ und „Frieden!“ der Satz „Hallo Welt!“

Line = Abbreviation("Hello ")+" "+ Abbreviation(" world!"); Bericht(String);

AbbrLP

AbbrLP(<Строка>) . Schneidet nicht signifikante Zeichen rechts vom ersten signifikanten Zeichen in der Zeichenfolge ab und schneidet außerdem nicht signifikante Zeichen links vom ersten signifikanten Zeichen in der Zeichenfolge ab. Diese Funktion wird häufiger verwendet als die beiden vorherigen, da sie universeller ist.

Beispiel 5. Entfernen Sie unbedeutende Zeichen links und rechts im Namen der Gegenpartei.

Gegenpartei = Verzeichnisse.Find By Details("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

ein Löwe

Ein Löwe(<Строка>, <ЧислоСимволов>) . Ruft die ersten Zeichen der Zeichenfolge ab, die Anzahl der Zeichen wird im Parameter angegeben Anzahl von Charakteren.

Beispiel 6. Lassen Sie die Struktur ein Mitarbeiter enthalten den Vor-, Nachnamen und Vatersnamen des Mitarbeiters. Holen Sie sich eine Zeichenfolge mit Nachnamen und Initialen.

NameInitial = Lev(Employee.Name, 1); Patronymischer Anfangsbuchstabe = Löwe(Angestellter. Patronym, 1); FullName = Employee.LastName + " " + FirstName Initial + "." + Mittlerer Anfangsbuchstabe + „.“;

Rechts

Rechts(<Строка>, <ЧислоСимволов>) . Ruft die letzten Zeichen einer Zeichenfolge ab, die Anzahl der im Parameter angegebenen Zeichen Anzahl von Charakteren. Wenn die angegebene Anzahl von Zeichen die Länge der Zeichenfolge überschreitet, wird die gesamte Zeichenfolge zurückgegeben.

Beispiel 7. Lassen Sie ein Datum im Format „JJJJMMTT“ am Ende einer Zeichenfolgenvariablen schreiben, erhalten Sie eine Zeichenfolge mit dem Datum und konvertieren Sie sie in einen Typ Datum.

String = "Aktuelles Datum: 20170910"; StringDate = Rights(String, 8); Datum = Datum(StringDate);

Mittwoch

Mittwoch(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Ruft eine Teilzeichenfolge aus der als Parameter übergebenen Zeichenfolge ab Linie, beginnend mit dem Zeichen, dessen Nummer im Parameter angegeben ist Anfangsnummer und die Länge, die an den Parameter übergeben wird Anzahl von Charakteren. Die Nummerierung der Zeichen in einer Zeile beginnt bei 1. Wenn im Parameter Anfangsnummer Wird ein Wert kleiner oder gleich Null angegeben, dann nimmt der Parameter den Wert 1 an. Wenn der Parameter Anzahl von Charakteren nicht angegeben ist, werden Zeichen bis zum Ende der Zeile ausgewählt.

Beispiel 8. Lassen Sie die Zeichenfolgenvariable ab der neunten Position den Regionalcode enthalten. Sie sollten ihn abrufen und in eine separate Zeile schreiben.

String = "Region: 99 Moskau"; Region = Avg(String, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Sucht nach einem angegebenen Teilstring in einem String und gibt die Positionsnummer des ersten Zeichens des gefundenen Teilstrings zurück. Schauen wir uns die Parameter dieser Funktion an:

  • Linie. Quellzeichenfolge;
  • Teilzeichenfolge durchsuchen. Teilzeichenfolge suchen;
  • Suchrichtung. Gibt die Richtung für die Suche nach einem Teilstring in einem String an. Kann Werte annehmen:
    • Suchrichtung.Von Anfang an;
    • Suche.Endrichtung;
  • Ausgangsposition. Gibt die Position in der Zeichenfolge an, an der die Suche beginnt.
  • Anzahl Vorkommen. Gibt die Vorkommensnummer des gesuchten Teilstrings im Quellstring an.

Beispiel 9. In der Zeile „Hallo Welt!“ Bestimmen Sie die Position des letzten Vorkommens des „und“-Zeichens.

PositionNumber = StrFind("Hallo Welt!", "und", Search Direction.End); Report(PositionNumber);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Nummer des letzten Vorkommens des „und“-Symbols: 9.

VReg

VReg(<Строка>) . Konvertiert alle Zeichen in der angegebenen Zeichenfolge in 1s8 in Großbuchstaben.

Beispiel 10: Konvertieren Sie die Zeichenfolge „hello world!“ in Großbuchstaben umwandeln.

StringVreg = VReg("Hallo Welt!"); Report(StringVreg);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Zeile „HELLO WORLD!“

NReg

NReg(<Строка>) . Konvertiert alle Zeichen in der angegebenen Zeichenfolge in 1s8 in Kleinbuchstaben.

Beispiel 11: Konvertieren Sie die Zeichenfolge „HELLO WORLD!“ in Kleinbuchstaben umwandeln.

StringNreg = NReg("HALLO WELT!"); Report(StringVreg);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Zeile „Hallo Welt!“

Treg

TReg(<Строка>) . Konvertiert eine Zeichenfolge wie folgt: Das erste Zeichen jedes Wortes wird in Großbuchstaben umgewandelt, die restlichen Zeichen des Wortes werden in Kleinbuchstaben umgewandelt.

Beispiel 12: Schreiben Sie die Anfangsbuchstaben der Wörter in der Zeile „Hallo Welt!“ groß.

StringTreg = TReg("Hallo Welt!"); Report(StringTreg);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Zeile „Hello World!“

Symbol

Symbol(<КодСимвола>) . Ruft ein Zeichen anhand seines Unicod-Codes ab.

Beispiel 13. Fügen Sie links und rechts zur Zeile „Hello World!“ hinzu. Symbol ★

StringWithStars = Symbol("9733")+"Hallo Welt!"+Symbol("9733"); Report(StringWithStars);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Zeile „★Hello World!★“

Symbolcode

SymbolCode(<Строка>, <НомерСимвола>) . Ruft den Unicode-Zeichencode aus der im ersten Parameter angegebenen Zeichenfolge ab, die sich an der im zweiten Parameter angegebenen Position befindet.

Beispiel 14. Finden Sie den Code des letzten Zeichens in der Zeile „Hello World!“ heraus.

String = "Hallo Welt!"; CharacterCode = CharacterCode(String, StrLength(String)); Notify(CharacterCode);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige des Symbolcodes „!“ - 33.

Leere Zeile

Leere Zeile(<Строка>) . Prüft, ob die Zeichenfolge nur aus unbedeutenden Zeichen besteht, also leer ist.

Beispiel 15. Prüfen Sie, ob eine Zeichenfolge bestehend aus drei Leerzeichen leer ist.

Empty = EmptyString(" "); Bericht (leer);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige des Wortes „Ja“ (ein Zeichenfolgenausdruck eines logischen Werts). WAHR).

PageReplace

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

Beispiel 16. In der Zeile „Hello World!“ Ersetzen Sie das Wort „Frieden“ durch das Wort „Freunde“.

String = StrReplace("Hallo Welt!", "Welt", "Freunde"); Bericht(String);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Zeile „Hallo Freunde!“

StrNumberLines

StrNumberRow(<Строка>) . Ermöglicht Ihnen, die Anzahl der Zeilen in einer mehrzeiligen Zeichenfolge zu zählen. Zu gehen Neue Zeile in 1s 8 wird das Symbol verwendet PS(Neuzeilenzeichen).

Beispiel 17. Bestimmen Sie die Anzahl der Zeilen im Text:
"Erste Linie
Zweite Reihe
Dritte Zeile“

Number = StrNumberString("Erste Zeile"+Characters.PS +"Zweite Zeile"+Symbols.PS +"Dritte Zeile"); Bericht(Nummer);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Anzahl der Zeilen im Text: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Ruft eine Zeile in einer mehrzeiligen Zeichenfolge anhand ihrer Nummer ab. Die Zeilennummerierung beginnt bei 1.

Beispiel 18. Holen Sie sich die letzte Zeile im Text:
"Erste Linie
Zweite Reihe
Dritte Zeile“

Text = „Erste Zeile“ + Symbole. LastRow = StrGetRow(Text, StrNumberLines(Text)); Bericht(LastLine);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Zeile „Dritte Zeile“.

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Gibt die Anzahl der Vorkommen des angegebenen Teilstrings in einem String zurück. Die Funktion unterscheidet zwischen Groß- und Kleinschreibung.

Beispiel 19. Bestimmen Sie, wie oft der Buchstabe „c“ in der Zeile „Zeilen in 1s 8.3 und 8.2“ vorkommt, unabhängig von der Groß-/Kleinschreibung.

Line = "Zeilen in 1s 8.3 und 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Report(NumberOccurrences);

Das Ergebnis der Ausführung dieses Codes ist die Anzeige der Anzahl der Vorkommen: 2.

PageStartsWith

StrStartsWith(<Строка>, <СтрокаПоиска>) . Prüft, ob die im ersten Parameter übergebene Zeichenfolge mit der Zeichenfolge im zweiten Parameter beginnt.

Beispiel 20. Bestimmen Sie, ob die TIN der ausgewählten Gegenpartei mit der Zahl 1 beginnt. Geben Sie die Variable ein Gegenpartei Gegenparteien.

TIN = Gegenpartei.TIN; StartsUNits = StrStartsWith(TIN, "1"); Wenn mit Einheiten beginnt, dann //Ihr Code EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Prüft, ob die im ersten Parameter übergebene Zeichenfolge mit der Zeichenfolge im zweiten Parameter endet.

Beispiel 21. Bestimmen Sie, ob die TIN der ausgewählten Gegenpartei mit der Zahl 2 endet. Geben Sie die Variable ein Gegenpartei Es wird ein Verweis auf ein Verzeichniselement gespeichert Gegenparteien.

TIN = Gegenpartei.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Ihr Code EndIf;

Seitenaufteilung

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Teilt eine Zeichenfolge mithilfe der angegebenen Trennzeichen in Teile auf und schreibt die resultierenden Zeichenfolgen in ein Array. Der erste Parameter speichert die Quellzeichenfolge, der zweite enthält die Zeichenfolge mit dem Trennzeichen, der dritte gibt an, ob leere Zeichenfolgen in das Array geschrieben werden sollen (standardmäßig). WAHR).

Beispiel 22. Lassen Sie uns eine Zeichenfolge haben, die Zahlen enthält, die durch das Symbol „;“ getrennt sind, und erhalten Sie ein Array von Zahlen aus der Zeichenfolge.

String = "1; 2; 3"; Array = StrDivide(String, ";"); For Count = 0 By Array.Quantity() - 1 Cycle Attempt Array[Count] = Number(Abbr(Array[Count])); Ausnahme Array[Sch] = 0; EndAttemptsEndCycle;

Als Ergebnis der Ausführung wird ein Array mit Zahlen von 1 bis 3 erhalten.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Konvertiert das String-Array vom ersten Parameter in einen String, der alle Elemente des Arrays enthält, getrennt durch das im zweiten Parameter angegebene Trennzeichen.

Beispiel 23. Rufen Sie mithilfe des Zahlenarrays aus dem vorherigen Beispiel die ursprüngliche Zeichenfolge ab.

For Account = 0 By Array.Quantity() - 1 Cycle Array[Act] = String(Array[Act]); EndCycle; Row = StrConnect(Array, "; ");

Implementiert in Version 8.3.6.1977.

Wir haben den Funktionsumfang für die Arbeit mit Strings erweitert. Wir haben dies getan, um Ihnen erweiterte Tools zum Parsen von String-Daten zur Verfügung zu stellen. Die neuen Funktionen werden bei technologischen Aufgaben der Textanalyse komfortabel und nützlich sein. Bei Aufgaben im Zusammenhang mit dem Parsen von Text, der Daten in formatierter Form enthält. Dies könnte eine Analyse einiger vom Gerät empfangener Dateien oder beispielsweise eine Analyse eines Technologieprotokolls sein.

Sie könnten alle Aktionen ausführen, die zuvor neue Funktionen ausführen. Verwendung mehr oder weniger komplexer Algorithmen, die in einer integrierten Sprache geschrieben sind. Daher eröffnen Ihnen neue Funktionen keine grundsätzlich neuen Möglichkeiten. Sie ermöglichen es Ihnen jedoch, die Codemenge zu reduzieren und 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 funktionieren natürlich schneller als ein ähnlicher Algorithmus, der in einer integrierten Sprache geschrieben ist.

Formatierungsfunktion StrTemplate()

Diese Funktion ersetzt Parameter in einer Zeichenfolge. Der Bedarf für eine solche Umstellung ergibt sich beispielsweise häufig bei der Anzeige von Warnmeldungen. Die Syntax für diese Funktion lautet wie folgt:

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

<Шаблон>– Dies ist die Zeichenfolge, in die Sie die Parameterdarstellungen ersetzen müssen.

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

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

Das Ergebnis der Ausführung eines solchen Operators ist beispielsweise:

Es wird eine Zeile geben:

Datenfehler in Zeile 2 (Datumstyp erforderlich)

Funktion zum Arbeiten mit Strings StrCompare()

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

Sie könnten die gleiche Aktion auch früher mit dem Wertvergleichsobjekt ausführen:

Die Nutzung der neuen Funktion scheint jedoch einfacher zu sein. Darüber hinaus funktioniert die Funktion im Gegensatz zum Wertvergleichsobjekt sowohl im Thin Client als auch im Webclient.

Funktionen zum Arbeiten mit Strings StrStartsWith(), StrEndsAt()

Diese Funktionen bestimmen, ob eine Zeichenfolge mit einer angegebenen Teilzeichenfolge beginnt oder ob eine Zeichenfolge mit einer angegebenen Teilzeichenfolge endet. Der Algorithmus für diese Funktionen ist nicht schwer in einer eingebetteten Sprache zu implementieren, aber ihre Anwesenheit ermöglicht es Ihnen, saubereren und verständlicheren Code zu schreiben. Und sie arbeiten schneller.

Sie lassen sich beispielsweise bequem in der If-Anweisung verwenden:

Funktionen zum Arbeiten mit Strings StrDivide(), StrConnect()

Diese Funktionen teilen eine Zeichenfolge mithilfe eines angegebenen Trennzeichens in Teile auf. Oder umgekehrt: Sie fassen mehrere Zeilen zu einer zusammen und fügen dazwischen das ausgewählte Trennzeichen ein. Sie eignen sich zum Erstellen oder Analysieren von Protokollen und Technologiejournalen. Sie können beispielsweise einen technologischen Protokolleintrag problemlos in Teile zerlegen, die für die weitere Analyse geeignet sind:

Funktion zum Arbeiten mit Strings StrFind()

Anstelle der alten Find()-Funktion haben wir implementiert neue Funktion, das über zusätzliche Funktionen verfügt:

  • Suche in verschiedene Richtungen (vom Anfang, vom Ende);
  • Suche von einer bestimmten Position aus;
  • Suchen Sie nach einem Vorkommen mit einer bestimmten Nummer (zweiter, dritter usw.).

Tatsächlich dupliziert es die Fähigkeiten der alten Funktion. Dies geschieht, um die Kompatibilität mit Modulen zu gewährleisten, die in älteren Versionen kompiliert wurden. Es wird empfohlen, die alte Find()-Funktion nicht mehr zu verwenden.

Unten sehen Sie ein Beispiel für die Verwendung der neuen Suchfunktionen. Die umgekehrte Suche ist nützlich, wenn Sie den letzten Teil einer formalisierten Zeichenfolge benötigen, beispielsweise den vollständigen Dateinamen 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 Zeile suchen müssen.

Hallo zusammen
Heute wurde ich gebeten, beim Drucken eines Implementierungsdokuments das Dokumentpräfix nicht anzuzeigen. Ich habe das Problem wie folgt gelöst.

StrReplace(Number, Lev(Number, 3), "" );

Als ich mir den Syntaxassistenten ansah, gefiel er mir so gut, dass ich darüber schreiben wollte Arbeiten mit Strings in 1C:Enterprise.

Ein String in 1C bezieht sich auf einen primitiven Datentyp.

Wenn Sie sich die 1C-Hilfe ansehen, sehen wir die folgende Beschreibung des String-Typs:
Werte dieses Typs enthalten einen Unicode-String beliebiger Länge.
Wenn Sie Ihre eigenen Worte zu Strings verwenden, wird es funktionieren. Ein String ist eine Konstante, die aus verschiedenen Zeichen besteht und immer in Anführungszeichen gesetzt ist.

Eine Linie setzen
Anrede = „Hallo Passagier“;

Mehrzeilige Zeichenfolgen in typische Konfigurationen am häufigsten mit dem vertikalen Trennzeichen „|“ erstellt:
String = "Mehrzeilig
|string
|schreiben
|text";

Es wird ein Anführungszeichen innerhalb einer Zeichenfolge angegeben Anführungszeichen.
String = „Text in Anführungszeichen“;

Es gibt viele Operationen an Zeichenfolgen (Suche innerhalb der Zeichenfolge, Bestimmung der ersten usw.), es ist besser, einen Blick auf den Syntaxassistenten zu werfen.
Syntax-Helfer – Allgemeine Beschreibung der integrierten Sprache -> integrierte Funktionen -> Funktionen zum Arbeiten mit Strings.

Funktionen zum Arbeiten mit Strings

Hier eine kurze Zusammenfassung der Funktionen zum Arbeiten mit Strings:

VReg(<Строка>) — Die Funktion wandelt alle Zeichen in der Zeichenfolge in Großbuchstaben um.

SymbolCode(<Строка>, <НомерСимвола>) – Die Funktion empfängt den Code des Zeichens, das sich im übertragenen String an der Stelle mit der angegebenen Nummer befindet.

Ein Löwe(<Строка>, <ЧислоСимволов>) – Die Funktion wählt die ersten linken Zeichen der Zeichenfolge aus.

Finden(<Строка>, <ПодстрокаПоиска>) — Die Funktion findet ein Vorkommen der Suchzeichenfolge als Teilzeichenfolge in der Quellzeichenfolge.

NReg(<Строка>) — Die Funktion wandelt alle Zeichen in der Zeichenfolge in Kleinbuchstaben um.

Rechts(<Строка>, <ЧислоСимволов>) – Diese Funktion unterscheidet sich von den Left-Funktionen dadurch, dass sie die letzten Zeichen von rechts in der Zeichenfolge auswählt.

Leere Zeile(<Строка>) — Die Funktion prüft die Zeichenfolge auf das Vorhandensein signifikanter Zeichen.

Symbol(<КодСимвола>) — Die Funktion wandelt den Zeichencode in eine Zeichenfolge um, die das Zeichen enthält.

AbbrL(<Строка>) — Die Funktion schneidet unbedeutende Zeichen links vom ersten signifikanten Zeichen in der Zeichenfolge ab.

AbbrLP(<Строка>) — Die Funktion schneidet nicht signifikante Zeichen links vom ersten signifikanten Zeichen in der Zeile und Leerzeichen rechts vom letzten signifikanten Zeichen in der Zeile ab.

Abkürzung(<Строка>) — Die Funktion schneidet unbedeutende Zeichen rechts vom letzten signifikanten Zeichen in der Zeichenfolge ab.

Mittwoch(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — Die Funktion wählt eine Zeichenfolge aus, beginnend mit dem Zeichen<НачальныйНомер>, Gesamtzahl<ЧислоСимволов>.

StrLength(<Строка>) — Die Funktion ermittelt die Anzahl der Zeichen in der Zeile.

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

StrGetString(<Строка>, <НомерСтроки>) - Die Funktion ruft eine mehrzeilige Zeichenfolge nach Nummer ab.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) — Die Funktion berechnet die Anzahl der Vorkommen der Suchteilzeichenfolge in der Quellzeichenfolge.

StrNumberRow(<Строка>) — Die Funktion zählt die Anzahl der Zeilen in einer mehrzeiligen Zeichenfolge. In einer mehrzeiligen Zeichenfolge werden die Zeilen durch Zeilenumbrüche getrennt.

TReg(<Строка>) — Die Funktion wandelt die Zeichenfolge in die Groß-/Kleinschreibung des Titels um. Dies bedeutet, dass das erste Zeichen jedes Wortes in die Groß-/Kleinschreibung des Titels bzw. in Großbuchstaben umgewandelt wird, wenn für das Zeichen keine Groß-/Kleinschreibung angegeben ist. Die restlichen Zeichen werden in Kleinbuchstaben umgewandelt.

Typkonvertierungen
Für die explizite Konvertierung von Datentypen gibt es gleichnamige Funktionen mit dem Datentyp, in den die Konvertierung erfolgt: String(<Значение>)

StringFromNumbers = String(Number);

Alle diese Funktionen sind im Syntax-Assistenten ausführlich beschrieben. Wie der Syntax-Assistent einem unerfahrenen Programmierer helfen kann, habe ich im Artikel beschrieben.

Beispiele für die Arbeit mit Strings

Konvertieren einer Zahl in eine Zeichenfolge und zurück.

Um eine Zeichenfolgendarstellung des Jahres zu erhalten, verwenden Sie die Funktion Format.

Jahr = Format(CurrentDate(), "DF=yyyy") // Jahr = "2012"

Um eine Zahl in eine Zeichenfolge umzuwandeln, ohne ein Gruppentrennzeichen (geschütztes Leerzeichen) einzufügen, müssen Sie die Formatfunktion mit dem Parameter NG=0 verwenden:

Number = 2012 Line = Format(Number, "NH=0" ); //String = "2012"

Zeichenfolge Keine Leerzeichen.