Symboles ps 1s. Nouvelles fonctions pour travailler avec des chaînes. Fonctions pour travailler avec des chaînes StrDivide(), StrConnect()

Une chaîne est l'un des types de données primitifs dans les systèmes 1C:Enterprise 8 Variables avec le type. doubler contenir du texte.

Tapez les valeurs des variables doubler consister à guillemets doubles. Plusieurs variables de ce genre peut être plié.

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

À la fin Par3 signifiera " Mot 1 Mot 2″.

De plus, les systèmes 1C:Enterprise 8 fournissent des fonctions permettant de travailler avec des chaînes. Regardons les principaux :

EntréeChaîne(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — la fonction est conçue pour afficher une boîte de dialogue dans laquelle l'utilisateur peut spécifier une valeur type de variable Doubler. Paramètre <Строка> est obligatoire et contient le nom de la variable dans laquelle la chaîne saisie sera écrite. Paramètre <Подсказка> facultatif - c'est le titre de la boîte de dialogue. Paramètre <Длина> facultatif, affiche la longueur maximale de la chaîne d'entrée. La valeur par défaut est zéro, ce qui signifie une longueur illimitée. Paramètre <Многострочность> facultatif. Définit le mode de saisie de texte multiligne : True : saisie de texte multiligne avec séparateurs de ligne ; False : entrez une chaîne simple.

Vous pouvez saisir une chaîne si vous connaissez le code du caractère en Unicode :

Symbole(<КодСимвола>) — le code est saisi sous forme de nombre.

Lettre= Symbole(1103) ;

// JE

Il existe également une fonction inverse qui permet de connaître le code d'un symbole.<Строка>, <НомерСимвола>) — SymboleCode(

renvoie le numéro Unicode du caractère spécifié sous forme de nombre.

Fonctions de conversion de casse de texte :<Строка>) VReg(

— Convertit tous les caractères d'une chaîne en majuscules.<Строка>) NReg(

— Convertit tous les caractères d'une chaîne en minuscules.<Строка>) TReg(

— convertit tous les caractères de la chaîne en casse du titre. Autrement dit, les premières lettres de tous les mots sont converties en majuscules et les lettres restantes sont converties en minuscules.

Fonctions de recherche et de remplacement de caractères dans une chaîne :<Строка>, <ПодстрокаПоиска>) Trouver(

— trouve le numéro de caractère de l'occurrence de la sous-chaîne recherchée. Par exemple:

Rechercher ("Chaîne" , "oka" ) ;<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) // 4 StrFind(— trouve le numéro de caractère de l'occurrence de la sous-chaîne recherchée, le numéro d'occurrence est indiqué dans le paramètre correspondant. Dans ce cas, la recherche commence par le caractère dont le numéro est précisé dans le paramètre

Position initiale. La recherche est possible depuis le début ou la fin de la chaîne. Par exemple: Nombre4 Occurrences = Str Trouver (

"Défense"<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – trouve toutes les occurrences de la sous-chaîne de recherche dans la chaîne source et la remplace par la sous-chaîne de remplacement.

StrReplace ("Chaîne" , "oka" , "" ) ;

// Page<Строка>) Chaîne Vide ( – vérifie la chaîne pour les caractères significatifs. S'il n'y a aucun caractère significatif, ou aucun caractère du tout, alors la valeur est renvoyée Vrai . Sinon -.

Mensonge<Строка>, <ПодстрокаПоиска>) StrNumberOccurrences(

– Calcule le nombre d'occurrences de la sous-chaîne de recherche dans la chaîne source. StrNumberOccurrences ("apprendre, étudier et réétudier"

, "étude" , "" ) ; // 3<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — StrTemplate( remplace les paramètres dans une chaîne par un nombre. La ligne doit contenir des marqueurs de substitution de la forme : « %1..%N ». La numérotation des marqueurs commence à 1. Si la valeur du paramètre Indéfini

, une chaîne vide est remplacée. ModèleStr (, "1" , "2" ) ; "Paramètre 1 = %1, Paramètre 2 = %2"

// Paramètre 1= 1, Paramètre 2 = 2

Fonctions de conversion de chaîne :<Строка>, <ЧислоСимволов>) Lion(

– renvoie les premiers caractères d'une chaîne.<Строка>, <ЧислоСимволов>) Droite(

– renvoie les derniers caractères d'une chaîne.<Строка>, <НачальныйНомер>, <ЧислоСимволов>) Mercredi(<ЧислоСимволов>– renvoie une chaîne de longueur<НачальныйНомер>.

, à partir du symbole<Строка>) Abréviation(

supprime les caractères non significatifs à gauche du premier caractère significatif de la chaîne.<Строка>) Abréviation (

— coupe les caractères insignifiants à droite du dernier caractère significatif de la ligne.<Строка>) AbréviationLP(

– coupe les caractères insignifiants à gauche du premier caractère significatif de la ligne et à droite du dernier caractère significatif de la ligne.<Строка>, <НомерСтроки>) StrGetString(

– Obtient une chaîne multiligne par numéro.

Autres fonctionnalités :<Строка>) LongueurStre(

– renvoie le nombre de caractères dans la chaîne.<Строка>) StrNumberRow(

– renvoie le nombre de lignes dans une chaîne multiligne. Une ligne est considérée comme nouvelle si elle est séparée de la précédente par un caractère de nouvelle ligne.<Строка1>, <Строка2> ) StrCompare( – compare deux chaînes sans tenir compte de la casse. Une fonction fonctionne comme un objet Comparaison des valeurs

  • . Retours :
  • 1 - si la première ligne est supérieure à la seconde
  • -1 - si la deuxième ligne est supérieure à la première

0 - si les chaînes sont égales

StrCompare("Première ligne" , "Deuxième ligne" ) ;

// 1

Les informations en 1C peuvent être présentées : un annuaire, un document, un registre...

Cependant, en fin de compte, tous ces objets sont constitués de champs, et les champs sont de types simples : nombre, chaîne, date. Et il y a toujours plus d’informations sous forme de chaînes. Par conséquent, vous devez travailler plus souvent avec des cordes.

Nous allons maintenant voir comment travailler avec des chaînes du langage 1C. Dans le même temps, nous essaierons diverses options d’analyse automatique de texte.

Si l'utilisateur a saisi une ligne sur le formulaire, l'élément de formulaire peut avoir les cases à cocher « Mode multi-ligne » et « Édition avancée ». Le premier signifie que la ligne peut contenir des caractères « saut de ligne 1C (Entrée) ». La seconde est que la ligne peut contenir d'autres symboles de service 1C, par exemple TAB.

Si une ligne est extraite d'un fichier, par exemple en utilisant ReadText(), alors l'encodage devient également important - lors de la lecture d'un fichier, vous devez spécifier l'encodage (UTF-8, KOI8, etc.).

Symboles de service 1C

Pour travailler avec des caractères spéciaux, l'énumération des symboles 1C est utilisée.

Par exemple, une valeur de chaîne composée de deux mots :
TextString = "Première ligne" + Symbols.PS + "Deuxième ligne" ;

Par exemple, rechercher un saut de ligne 1C dans le texte :
Position = Rechercher (TextString, Characters.PS);

Vous pouvez travailler avec les caractères spéciaux suivants :

  • CR et LF
    Ils signifient un saut de ligne 1C. Souvent trouvé dans les fichiers texte.
    Le code de caractère en ASCII est 0x0D et 0x0A, en Unicode - U+000D et U+000A.

    Dans le langage 1C, ils ressemblent à Symbols.CR et Symbols.LF, ou en russe Symbols.VK et Symbols.PS. Pour transférer une ligne 1C lors de sa création en code 1C, il suffit d'utiliser PS.

Autres symboles 1C

Les chaînes en 1C sont « physiquement » utilisées au format Unicode (Unicode, http://ru.wikipedia.org/wiki/%DE%ED%E8%EA%EE%E4).

Si vous n’avez jamais rencontré de « codage » de caractères auparavant, notons brièvement :

  • Lorsqu'il travaille avec des chaînes, l'ordinateur utilise des numéros de lettres et non les lettres elles-mêmes.
  • Puisqu'il existe de nombreux alphabets « humains » (anglais, russe, grec, chinois, etc., et qu'il existe également des symboles 1C de service et « non imprimables »), il existe plusieurs options pour les alphabets informatiques, dont l'un est Unicode, qui comprend les symboles 1C dans toutes les langues
  • L'alphabet Unicode ressemble à ceci :
    o Symboles de service 1C courants « non imprimables »
    o Signes préjudiciables et mathématiques
    o Chiffres
    oAlphabet anglais
    o Ajouter. Caractères 1C de l'alphabet anglais, utilisés dans les langues européennes (par exemple l'allemand)
    o alphabet grec
    oAlphabet russe
    o...

Si nécessaire, dans les lignes 1C, il est possible d'utiliser tous les caractères 1C disponibles en Unicode.

Tout d'abord, vous pouvez les saisir à partir du clavier si une disposition de clavier est installée sous Windows (la configuration par défaut en Russie est généralement l'anglais et le russe).

Deuxièmement, vous pouvez composer en utilisant la technique suivante :

Troisièmement, vous pouvez travailler à partir du code du programme. La fonction Symbol(Number) renvoie le symbole avec numéro spécifié, et la fonction CharacterCode(String) renvoie le numéro de caractère de la première lettre de la chaîne. Si vous avez besoin d'une autre lettre dans la ligne, alors CharacterCode(String, LetterNumber).

Par exemple, ajoutez le caractère Ž à la ligne suivante :
TextString = "Bonne bière en ville" + Caractère(381) + "drobinek";
//Résultat : "Bonne bière à Ždrobinek"

Implémenté dans la version 8.3.6.1977.

Nous avons élargi l'ensemble des fonctions conçues pour fonctionner avec des chaînes. Nous avons fait cela afin de vous offrir des outils plus avancés pour analyser les données de chaîne. Les nouvelles fonctions seront pratiques et utiles dans les tâches technologiques d'analyse de texte. Dans les tâches liées à l'analyse de texte contenant des données sous forme formatée. Il peut s'agir d'une analyse de certains fichiers reçus de l'équipement ou, par exemple, d'une analyse magazine technologique.

Vous pouvez auparavant effectuer toutes les actions qui remplissent de nouvelles fonctions. Utiliser des algorithmes plus ou moins complexes écrits dans un langage intégré. Par conséquent, les nouvelles fonctions ne vous offrent pas de capacités fondamentalement nouvelles. Cependant, ils permettent de réduire la quantité de code et de rendre le code plus simple et plus compréhensible. De plus, ils permettent d'accélérer l'exécution des actions. Parce que les fonctions implémentées dans la plateforme fonctionnent, bien entendu, plus rapidement qu'un algorithme similaire écrit dans un langage intégré.

Fonction de formatage StrTemplate()

Cette fonction remplace les paramètres dans une chaîne. La nécessité d'une telle conversion apparaît souvent, par exemple, lors de l'affichage de messages d'avertissement. La syntaxe de cette fonction est la suivante :

, "étude" , "" ) ; // 3<Шаблон>, <Значение1-Значение10>)

<Шаблон>- c'est la chaîne dans laquelle vous devez substituer les représentations des paramètres.

<Значение1> , ... <Значение10>- ce sont des paramètres (dix au maximum) dont les représentations doivent être substituées dans la chaîne.

Pour indiquer un endroit spécifique du modèle où vous souhaitez effectuer la substitution, vous devez utiliser des marqueurs comme %1, ... %10. Le nombre de marqueurs impliqués dans le modèle et le nombre de paramètres contenant des valeurs doivent correspondre.

Par exemple, le résultat de l'exécution d'un tel opérateur :

il y aura une ligne :

Erreur de données sur la ligne 2 (type de date requis)

Fonction pour travailler avec des chaînes StrCompare()

Cette fonction compare deux chaînes sans tenir compte de la casse. Par exemple, comme ceci :

Vous pouvez effectuer la même action plus tôt à l'aide de l'objet Comparaison de valeurs :

Cependant, l’utilisation de la nouvelle fonctionnalité semble plus simple. Et en plus de cela, la fonction, contrairement à l'objet Comparaison de valeurs, fonctionne également dans client léger, et dans le client Web.

Fonctions pour travailler avec des chaînes StrStartsWith(), StrEndsAt()

Ces fonctions déterminent si une chaîne commence par une sous-chaîne spécifiée ou si une chaîne se termine par une sous-chaîne spécifiée. L'algorithme de ces fonctions n'est pas difficile à implémenter dans un langage embarqué, mais leur présence permet d'écrire un code plus propre et plus compréhensible. Et ils travaillent plus vite.

Par exemple, ils sont pratiques à utiliser dans l'instruction If :

Fonctions pour travailler avec des chaînes StrDivide(), StrConnect()

Ces fonctions divisent une chaîne en parties à l'aide d'un délimiteur spécifié. Ou vice versa, ils combinent plusieurs lignes en une seule, en insérant le séparateur sélectionné entre elles. Ils sont pratiques pour créer ou analyser des journaux et des revues technologiques. Par exemple, vous pouvez facilement analyser une entrée de journal technologique en parties adaptées à une analyse plus approfondie :

Fonction pour travailler avec des chaînes StrFind()

Au lieu de l'ancienne fonction Find(), nous avons implémenté nouvelle fonctionnalité, qui possède des fonctionnalités supplémentaires :

  • Rechercher dans différentes directions (du début, de la fin) ;
  • Rechercher à partir d'une position spécifiée ;
  • Rechercher une occurrence avec un numéro spécifié (deuxième, troisième, etc.).

En fait, cela duplique les capacités de l’ancienne fonction. Ceci est fait afin de maintenir la compatibilité avec les modules compilés dans les anciennes versions. Il est recommandé de ne plus utiliser l'ancienne fonction Find().

Vous trouverez ci-dessous un exemple utilisant les nouvelles fonctionnalités de recherche. La recherche inversée est utile lorsque vous avez besoin de la dernière partie d'une chaîne formalisée, telle que le nom complet du fichier dans une URL. Et la recherche à partir d'une position spécifiée est utile dans les cas où vous devez rechercher dans un fragment connu, et non dans la chaîne entière.

Caractères spéciaux dans 1C 8.3 - ensemble caractères spéciaux pour les types de données chaîne.

Examinons chacun d'eux plus en détail.

Caractères spéciaux en 1C : VK, VTab, NPP, PS, PF, Tab

Les caractères spéciaux sont appelés à l'aide de la propriété globale « Caractères », par exemple :

Texte = « Texte avant la tabulation » + Symbols.Tab + « texte après la tabulation » ;

Obtenez 267 leçons vidéo sur 1C gratuitement :

  • VC (CR) - retour chariot. Autrefois, sur les imprimantes matricielles ou en marguerite, ce code de caractère était utilisé comme une commande qui ramenait la tête d'impression au début de la ligne.
  • NSP (NBSp) - espace insécable (souvent vu dans les chaînes numériques, par exemple : 1 000).
  • PS (LF) - Saut de ligne (LF - saut de ligne) - faites défiler le tambour d'une ligne vers le bas, la tête d'impression est au même endroit.
  • FF (FF) - traduction de format. La feuille est éjectée de l'imprimante et l'impression commence sur une nouvelle feuille.
  • Tab est le caractère de tabulation. La tabulation horizontale est une façon de se positionner pour imprimer sur la colonne la plus proche qui est un multiple d'un nombre (par exemple, 8, 16, 24...).
  • VTab - tabulation verticale. Similaire à l'horizontal, mais positionné sur une ligne. Provoque un certain défilement du tambour de l'imprimante (la tête d'impression reste dans la même position (colonne) !)

PS + VK est une combinaison qui effectue deux opérations : elle fait défiler la bobine sur une ligne et ramène le chariot d'impression au début de la ligne, ce qui correspond à ce que l'utilisateur s'attend à obtenir en appuyant sur Entrée.

Si vous commencez à apprendre la programmation 1C, nous vous recommandons notre cours gratuit(n'oublie pas

Le type String se retrouve dans tous les langages de programmation. Il est primitif et dans 1C, il existe de nombreuses fonctions pour travailler avec. Dans cet article, nous examinerons de plus près diverses manières travailler avec des types de chaînes dans 1C 8.3 et 8.2 à l'aide d'exemples.

Doubler

Afin de convertir une variable de n'importe quel type en chaîne, il existe une fonction du même nom « String() ». Le paramètre d'entrée sera la variable elle-même dont la représentation sous forme de chaîne doit être obtenue.

String(False) // renvoie "Non"
Chaîne(12345) // renvoie "12 345"
Chaîne (CurrentDate()) //"21/07/2017 11:55:36″

Il est possible de convertir non seulement des types primitifs en chaîne, mais également d'autres, par exemple des éléments de répertoires et de documents.

SokrLP, SokrL, SokrP

Les paramètres d'entrée de ces fonctions sont une variable de type chaîne. Les fonctions suppriment les caractères insignifiants (espaces, retours chariot, etc.) : respectivement du côté gauche et droit, uniquement du côté gauche et uniquement du côté droit.

Abréviation(" Les espaces seront supprimés des deux côtés ") // "Les espaces seront supprimés des deux côtés"
Abréviation(" Les espaces des deux côtés seront supprimés ") // " Les espaces de gauche seront supprimés "
Abréviation(" Les espaces des deux côtés seront supprimés ") // " Les espaces de droite seront supprimés "

Lion, droite, moyen

Ces fonctions vous permettent de couper une partie d'une chaîne. La fonction "Left()" renverra la partie d'une chaîne de son côté gauche de la longueur spécifiée. La fonction "Right()" est similaire, mais recadre depuis la droite. La fonction « Avg() » permet de préciser le numéro du caractère à partir duquel la ligne sera sélectionnée et sa longueur.

Lev("Variable chaîne", 4) // renvoie "Str"
Right("String variable", 7) // renvoie "variable"
Medium("String variable", 2, 5) // renvoie "troco"

LongueurStre

La fonction détermine le nombre de caractères contenus dans une variable chaîne.

StrLength("Word") // le résultat de l'exécution sera le chiffre 5

Trouver

La fonction permet de rechercher une partie d'une chaîne dans une variable chaîne. La valeur de retour sera un nombre qui indique la position du début de la chaîne trouvée. Si aucune correspondance n’est trouvée, zéro est renvoyé.

Veuillez noter que la recherche est sensible à la casse. S'il y a plus d'une occurrence de la sous-chaîne recherchée dans la chaîne d'origine, la fonction renverra le début de la première occurrence.

Find("un, deux, un, deux, trois", "deux") // la fonction renverra le nombre 6

Chaîne vide

L'utilisation de cette fonction permet de déterminer si une chaîne est vide. Les caractères mineurs tels que l'espace, le retour chariot et autres ne sont pas pris en compte.

EmptyString("Pupkin Vasily Ivanovich") // la fonction renverra la valeur False
EmptyString(" ") // la fonction renverra la valeur True

VReg, NReg, TReg

Ces fonctions sont très utiles lors de la comparaison et de la conversion de variables chaîne. "Vreg()" renverra la chaîne d'origine en majuscule, "HPreg()" en minuscules et "TReg()" la formatera de sorte que le premier caractère de chaque mot individuel soit en majuscule et que tous les caractères suivants soient en majuscule.

VReg("DIRECTEUR GÉNÉRAL") // valeur de retour - "DIRECTEUR GÉNÉRAL"
NReg ("PDG DIRECTEUR") // valeur de retour – "PDG"
TREG("CEO DIRECTOR") // valeur de retour – "Directeur Général"

PageRemplacer

Cette fonction est analogue au remplacement dans éditeurs de texte. Il vous permet de remplacer un caractère ou un ensemble de caractères par un autre dans les variables de chaîne.

StrReplace("rouge, blanc, jaune", ","", ";") // renvoie "rouge; blanc; jaune"

StrNombreLignes

La fonction permet de déterminer le nombre de lignes séparées par des retours chariot dans une variable texte.

La boucle de l'exemple ci-dessous effectuera trois tours car la fonction LineNumberRow renverra la valeur 3 :

Pour ind = 1 par StrNumber of Strings("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Cycle
<тело цикла>
Fin du cycle ;

StrGetString

Cette fonction fonctionne avec du texte multiligne de la même manière que la précédente. Il vous permet d'obtenir une chaîne spécifique à partir d'une variable texte.

StrGetString("Chaîne1" + Caractères.PS + "Chaîne2" + Caractères.PS + "Chaîne3", 2) // renvoie "Chaîne2"

Occurrences de numéro de page

La fonction compte le nombre d'occurrences d'un caractère ou d'une sous-chaîne dans la chaîne de recherche.

StrNumberAttachments("a;b;c;d; ", ";") // la fonction renverra le chiffre 4

Symbole et code de symbole

Ces fonctions permettent d'obtenir un caractère par son code dans l'encodage Unicode, ainsi que de déterminer ce code par le caractère lui-même.

SymbolCode("A") // la fonction renverra le nombre 1 040
CharacterCode(1040) // la fonction renverra « A »

Tâches courantes lorsque vous travaillez avec des chaînes

Concaténation de chaînes

Pour combiner plusieurs chaînes (pour effectuer une concaténation), il suffit d'utiliser l'opérateur d'addition.

"Ligne 1" + "Ligne 2" //le résultat de l'ajout de deux lignes sera "Ligne 1 Ligne 2"

Conversion de types

Pour convertir un type en chaîne, par exemple un lien vers un élément de répertoire, un nombre, etc., il suffit d'utiliser la fonction « String() ». Des fonctions comme « ScrLP() » convertiront également les variables en chaîne, mais immédiatement en coupant les caractères insignifiants.

String(1000) // renvoie "1 000"

Veuillez noter que lors de la conversion d'un nombre en chaîne, le programme ajoutait automatiquement un espace séparant les milliers. Afin d'éviter cela, vous pouvez utiliser les constructions suivantes :

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

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

Citations dans une chaîne

Très souvent, vous devrez faire face à la nécessité de spécifier des guillemets dans une variable chaîne. Il peut s'agir soit du texte de la requête écrit dans le configurateur, soit simplement d'une variable. Pour résoudre ce problème, il vous suffit de mettre deux guillemets.

Header = String("Horns and Hooves LLC - c'est nous !") // renverra "Horns and Hooves LLC - c'est nous !"

Multiligne, saut de ligne

Afin de créer du texte multiligne, ajoutez-y simplement des sauts de ligne (Symbols.PS).

MultilineText = « Première ligne » + Symbols.PS + « Deuxième ligne »

Comment supprimer des espaces

Afin de supprimer les espaces à droite ou à gauche, vous pouvez utiliser la fonction « ScrAP() » (ainsi que « ScrL() » et « ScrP() ») :

StringNoSpaces = Abbreviation(" Plusieurs lettres ") // la fonction retournera la valeur " Plusieurs lettres "

Si après avoir converti un nombre en chaîne, vous devez supprimer espaces insécables, utilisez la construction suivante :

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

Les programmeurs utilisent également souvent la construction suivante, qui permet de supprimer ou de remplacer par un autre caractère tous les espaces d'une variable de texte :

StringNoSpaces = StrReplace("bonjour", "") // renvoie "bonjour"

Comparer les chaînes entre elles

Vous pouvez comparer les termes avec le signe égal habituel. La comparaison est sensible à la casse.

"Bonjour" = "bonjour" // renvoie False
"Bonjour" = "Bonjour" // renvoie True
"Bonjour" = "Au revoir" // renverra False