Maison / l'Internet / 1c trouve la deuxième occurrence dans la chaîne. Nom similaire à "Ivano%"

1c trouve la deuxième occurrence dans la chaîne. Nom similaire à "Ivano%"

Salut tout le monde
Aujourd'hui, ils m'ont demandé de ne pas afficher le préfixe du document lors de l'impression d'un document d'implémentation, j'ai résolu le problème comme suit.

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

Quand j'ai regardé l'assistant de syntaxe, je l'ai tellement aimé que j'ai voulu écrire sur travailler avec des chaînes dans 1C:Enterprise.

Une chaîne en 1C fait référence à un type de données primitif.

Si vous regardez l'aide 1C, nous verrons la description suivante du type String :
Les valeurs de ce type contiennent une chaîne Unicode de longueur arbitraire.
Si vous utilisez vos propres mots sur les chaînes, cela fonctionnera. Une chaîne est une constante composée de différents caractères, toujours entourés de guillemets.

Définir une ligne
Salutation = "Bonjour Passager" ;

Les lignes multilignes dans les configurations typiques sont le plus souvent créées à l'aide du séparateur vertical « | » :
Chaîne = "Multiligne
|chaîne
|écrire
|texte";

Un guillemet dans une chaîne est spécifié par des guillemets doubles.
String = ""Texte entre guillemets"";

Il existe de nombreuses opérations sur les chaînes (rechercher à l'intérieur de la chaîne, déterminer les premières, etc.), il vaut mieux regarder l'Assistant Syntaxe.
Aide à la syntaxe - description générale langage intégré -> fonctions intégrées -> fonctions pour travailler avec des chaînes.

Fonctions pour travailler avec des chaînes

Voici un bref résumé des fonctions permettant de travailler avec des chaînes :

VReg(<Строка>) — La fonction convertit tous les caractères de la chaîne en majuscules.

SymboleCode(<Строка>, <НомерСимвола>) – La fonction reçoit le code du caractère situé dans la chaîne transmise à la position avec le numéro spécifié.

Un lion(<Строка>, <ЧислоСимволов>) – La fonction sélectionne les premiers caractères gauches de la chaîne.

Trouver(<Строка>, <ПодстрокаПоиска>) — La fonction trouve une occurrence de la chaîne de recherche en tant que sous-chaîne dans la chaîne source.

NReg(<Строка>) — La fonction convertit tous les caractères de la chaîne en minuscules.

Droite(<Строка>, <ЧислоСимволов>) Cette fonction diffère des fonctions Left en ce sens qu'elle sélectionne les derniers caractères à droite de la chaîne.

Ligne vide (<Строка>) — La fonction vérifie la chaîne pour la présence de caractères significatifs.

Symbole(<КодСимвола>) — La fonction convertit le code du caractère en une chaîne contenant le caractère.

Abréviation(<Строка>) — La fonction coupe les caractères insignifiants à gauche du premier caractère significatif de la chaîne.

AbréviationLP(<Строка>) — La fonction supprime les caractères non significatifs à gauche du premier caractère significatif de la ligne et les espaces à droite du dernier caractère significatif de la ligne.

Abréviation(<Строка>) — La fonction coupe les caractères insignifiants à droite du dernier caractère significatif de la chaîne.

Mercredi(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — La fonction sélectionne une chaîne de caractères, en commençant par le caractère<НачальныйНомер>, nombre total<ЧислоСимволов>.

LongueurStre(<Строка>) — La fonction obtient le nombre de caractères dans la ligne.

StrRemplacer(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) — La fonction 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.

StrGetString(<Строка>, <НомерСтроки>) - La fonction récupère une chaîne multiligne par numéro.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) — La fonction calcule le nombre d'occurrences de la sous-chaîne de recherche dans la chaîne source.

StrNumberRow(<Строка>) — La fonction compte le nombre de lignes dans une chaîne multiligne. Dans une chaîne multiligne, les lignes sont séparées par des nouvelles lignes.

TReg(<Строка>) — La fonction convertit la chaîne en casse du titre. Cela signifie que le premier caractère de chaque mot est converti en casse du titre, ou en majuscule si la casse du titre n'est pas spécifiée pour le caractère. Les caractères restants sont convertis en minuscules.

Conversions de types
Pour la conversion explicite des types de données, il existe des fonctions du même nom avec le type de données vers lequel la conversion a lieu : String(<Значение>)

StringFromNumbers = String(Nombre);

Toutes ces fonctions sont décrites en détail dans l'Assistant Syntaxe ; j'ai décrit comment l'Assistant Syntaxe peut aider un programmeur novice dans l'article.

Exemples pour travailler avec des chaînes

Conversion d'un nombre en chaîne et inversement.

Pour obtenir une représentation sous forme de chaîne de l'année, utilisez la fonction Format.

Année = Format(CurrentDate(), "DF=aaaa") // Année = "2012"

Pour convertir un nombre en chaîne sans insérer de caractère séparateur de groupe ( Espace non-cassant), vous devez appliquer la fonction Format avec le paramètre BH=0 :

Nombre = 2012 Ligne = Format(Nombre, "NH=0" ); //Chaîne = "2012"

Chaîne Pas d'espaces.

Les lignes de 1C 8.3 dans le langage intégré 1C représentent des valeurs d'un type primitif Doubler. Les valeurs de ce type contiennent une chaîne Unicode de longueur arbitraire. Les variables de type chaîne sont un ensemble de caractères entourés de guillemets.

Exemple 1. Créons une variable chaîne avec du texte.

StringVariable = "Bonjour tout le monde !";

Fonctions pour travailler avec des chaînes en 1s 8.3

Cette section fournira les principales fonctions qui vous permettront de modifier des lignes dans 1c, ou d'analyser les informations qu'elles contiennent.

LongueurStre

LongueurStre(<Строка>) . Renvoie le nombre de caractères contenus dans la chaîne passée en paramètre.

Exemple 2. Comptons le nombre de caractères dans la ligne « Hello World ! »

String = "Bonjour tout le monde !"; Nombre de caractères = StrLength(String); Rapport (NombreCaractères);

Le résultat de l'exécution de ce code sera l'affichage du nombre de caractères dans la ligne : 11.

Abréviation

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

  • espace;
  • Espace non-cassant;
  • tabulation;
  • retour chariot ;
  • traduction de ligne ;
  • traduction du formulaire (page).

Exemple 3. Supprimez tous les espaces du côté gauche de la ligne « monde ! » et ajoutez-y la ligne « Bonjour ».

String = Abréviation("monde!"); Chaîne = "Bonjour"+Chaîne ; Rapport (Chaîne);

Le résultat de l'exécution de ce code sera l'affichage de la ligne « Hello world ! » sur l'écran.

Abrégé

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

Exemple 4. Formulaire à partir des lignes « Bonjour » et « paix ! la phrase « Bonjour tout le monde ! »

Ligne = Abréviation("Bonjour ")+" "+ Abréviation("monde!"); Rapport (Chaîne);

AbréviationLP

AbréviationLP(<Строка>) . Supprime les caractères non significatifs à droite du premier caractère significatif de la chaîne, ainsi que les caractères non significatifs à gauche du premier caractère significatif de la chaîne. Cette fonction est utilisée plus souvent que les deux précédentes, car elle est plus universelle.

Exemple 5. Supprimez les caractères insignifiants à gauche et à droite du nom de la contrepartie.

Contrepartie = Répertoires.Contreparties.Rechercher par détails("TIN", "0777121211"); AccountObject = Compte.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

un lion

Un lion(<Строка>, <ЧислоСимволов>) . Récupère les premiers caractères de la chaîne, le nombre de caractères est spécifié dans le paramètre Nombre de caractères.

Exemple 6. Laisser entrer la structure Employé contenir les noms, prénom et patronyme du salarié. Obtenez une chaîne avec le nom de famille et les initiales.

NomInitial = Lev(Employé.Nom, 1); Patronymique Initial = Lion(Employé. Patronymique, 1) ; Nom complet = Employé.Nom + " " + Initiale Prénom + "." + Initiale du milieu + "." ;

Droite

Droite(<Строка>, <ЧислоСимволов>) . Récupère les derniers caractères d'une chaîne, le nombre de caractères spécifié dans le paramètre Nombre de caractères. Si le nombre de caractères spécifié dépasse la longueur de la chaîne, la chaîne entière est renvoyée.

Exemple 7. Laissez une date au format « aaaammjj » être écrite à la fin d'une variable de chaîne, récupérez une chaîne avec la date et convertissez-la en type date.

Chaîne = " La date actuelle: 20170910"; StringDate = Droits (String, 8); Date = Date (StringDate);

Mercredi

Mercredi(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Obtient une sous-chaîne de la chaîne passée en paramètre Doubler, à partir du caractère dont le numéro est précisé en paramètre Numéro initial et la longueur passée en paramètre Nombre de caractères. La numérotation des caractères dans une ligne commence à 1. Si dans le paramètre Numéro initial une valeur inférieure ou égale à zéro est spécifiée, alors le paramètre prend la valeur 1. Si le paramètre Nombre de caractères n'est pas spécifié, alors les caractères jusqu'à la fin de la ligne sont sélectionnés.

Exemple 8. Laissez la variable chaîne à partir de la neuvième position contenir le code de région, vous devriez l'obtenir et l'écrire sur une ligne séparée.

String = « Région : 99 Moscou » ; Région = Moy (Chaîne, 9, 2) ;

Recherche de page

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Recherche une sous-chaîne spécifiée dans une chaîne, en renvoyant le numéro de position du premier caractère de la sous-chaîne trouvée. Regardons les paramètres de cette fonction :

  • Doubler. Chaîne source ;
  • Rechercher une sous-chaîne. Rechercher une sous-chaîne ;
  • Sens de recherche. Spécifie la direction dans laquelle rechercher une sous-chaîne dans une chaîne. Peut prendre des valeurs :
    • Direction de recherche. Depuis le début;
    • Recherche.Fin Direction;
  • Position initiale. Spécifie la position dans la chaîne à laquelle commence la recherche ;
  • NombreOccurrences. Spécifie le numéro d'occurrence de la sous-chaîne recherchée dans la chaîne source.

Exemple 9. Dans la ligne « Bonjour tout le monde ! Déterminez la position de la dernière occurrence du caractère « et ».

PositionNumber = StrFind("Bonjour tout le monde !", "et", SearchDirection.End); Rapport (PositionNumber);

Le résultat de l'exécution de ce code sera d'afficher le numéro de la dernière occurrence du symbole « et » : 9.

VReg

VReg(<Строка>) . Convertit tous les caractères de la chaîne spécifiée en 1s8 en majuscules.

Exemple 10 : Convertissez la chaîne "hello world!" en majuscules.

StringVreg = VReg("Bonjour tout le monde !"); Rapport (StringVreg);

Le résultat de l'exécution de ce code sera l'affichage de la ligne « HELLO WORLD !

NReg

NReg(<Строка>) . Convertit tous les caractères de la chaîne spécifiée en 1s 8 en minuscules.

Exemple 11 : Convertissez la chaîne "HELLO WORLD!" en minuscule.

StringNreg = NReg("BONJOUR LE MONDE !"); Rapport (StringVreg);

Le résultat de l'exécution de ce code sera l'affichage de la ligne « hello world ! »

Treg

TReg(<Строка>) . Convertit une chaîne comme suit : le premier caractère de chaque mot est converti en majuscule, les caractères restants du mot sont convertis en minuscules.

Exemple 12 : Mettez en majuscule les premières lettres des mots de la ligne « hello world ! »

StringTreg = TReg("Bonjour tout le monde !"); Rapport (StringTreg);

Le résultat de l'exécution de ce code sera l'affichage de la ligne « Hello World ! »

Symbole

Symbole(<КодСимвола>) . Obtient un caractère par son code Unicode.

Exemple 13. Ajoutez gauche et droite à la ligne « Hello World ! » symbole ★

StringWithStars = Symbole("9733")+"Bonjour tout le monde !"+Symbol("9733"); Rapport (ChaîneAvecÉtoiles);

Le résultat de l'exécution de ce code sera l'affichage de la ligne « ★Hello World !★ »

Symbole Code

SymboleCode(<Строка>, <НомерСимвола>) . Obtient le code de caractère Unicode de la chaîne spécifiée dans le premier paramètre, située à la position spécifiée dans le deuxième paramètre.

Exemple 14. Découvrez le code du dernier caractère de la ligne « Hello World ! »

String = "Bonjour tout le monde !"; CharacterCode = CharacterCode (String, StrLength (String)); Notifier(CharacterCode);

Le résultat de l'exécution de ce code sera l'affichage du code symbole « ! » - 33.

Ligne vide

Ligne vide (<Строка>) . Vérifie si la chaîne ne contient que des caractères insignifiants, c'est-à-dire si elle est vide.

Exemple 15. Vérifiez si une chaîne composée de trois espaces est vide.

Vide = Chaîne Vide(" "); Rapport (vide);

Le résultat de l'exécution de ce code sera l'affichage du mot « Oui » (une expression chaîne d'une valeur logique Vrai).

PageRemplacer

StrRemplacer(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Recherche 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.

Exemple 16. Dans la ligne « Hello World ! » remplacer le mot « Paix » par le mot « Amis ».

String = StrReplace("Bonjour tout le monde !", "Monde", "Amis"); Rapport (Chaîne);

Le résultat de l'exécution de ce code sera l'affichage de la ligne « Hello Friends ! »

StrNombreLignes

StrNumberRow(<Строка>) . Permet de compter le nombre de lignes dans une chaîne multiligne. Aller à nouvelle ligne en 1s 8 le symbole est utilisé PS(caractère de nouvelle ligne).

Exemple 17. Déterminez le nombre de lignes dans le texte :
"Première ligne
Deuxième ligne
Troisième ligne"

Number = StrNumberString("Première ligne"+Characters.PS +"Deuxième ligne"+Symbols.PS +"Troisième ligne"); Signaler le numéro);

Le résultat de l'exécution de ce code sera l'affichage du nombre de lignes dans le texte : 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Obtient une ligne dans une chaîne multiligne par son numéro. La numérotation des lignes commence à 1.

Exemple 18. Récupérez la dernière ligne du texte :
"Première ligne
Deuxième ligne
Troisième ligne"

Texte = "Première ligne" + Symboles PS + "Deuxième ligne" + Symboles PS + "Troisième ligne" ; LastRow = StrGetRow(Texte, StrNumberLines(Texte)); Rapport (DernièreLigne);

Le résultat de l'exécution de ce code sera l'affichage de la ligne « Troisième ligne ».

Occurrences de numéro de page

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Renvoie le nombre d'occurrences de la sous-chaîne spécifiée dans une chaîne. La fonction est sensible à la casse.

Exemple 19. Déterminez combien de fois la lettre « c » apparaît dans la ligne « Lignes en 1s 8.3 et 8.2 », quelle que soit sa casse.

Ligne = "Lignes en 1s 8.3 et 8.2" ; NombreOccurrences = StrNumberOccurrences(Vreg(String), "C"); Rapport (Nombre d'occurrences);

Le résultat de l'exécution de ce code sera l'affichage du nombre d'occurrences : 2.

PageDébutAvec

StrDébutAvec(<Строка>, <СтрокаПоиска>) . Vérifie si la chaîne passée dans le premier paramètre commence par la chaîne du deuxième paramètre.

Exemple 20. Déterminez si le NIF de la contrepartie sélectionnée commence par le chiffre 1. Introduisez la variable Contrepartie Contreparties.

TIN = Contrepartie.TIN ; StartsUNits = StrStartsWith(TIN, "1"); Si commence par des unités Alors //Votre code EndIf ;

Fin de page activée

StrEndsWith(<Строка>, <СтрокаПоиска>) . Vérifie si la chaîne passée dans le premier paramètre se termine par la chaîne du deuxième paramètre.

Exemple 21. Déterminer si le NIF de la contrepartie sélectionnée se termine par le chiffre 2. Introduire la variable Contrepartie une référence à un élément de répertoire est stockée Contreparties.

TIN = Contrepartie.TIN ; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Votre code EndIf;

Fractionnement de page

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Divise une chaîne en parties à l'aide des caractères délimiteurs spécifiés et écrit les chaînes résultantes dans un tableau. Le premier paramètre stocke la chaîne source, le second contient la chaîne contenant le délimiteur et le troisième indique si les chaînes vides doivent être écrites dans le tableau (par défaut Vrai).

Exemple 22. Ayons une chaîne contenant des nombres séparés par le symbole « ; », récupérons un tableau de nombres à partir de la chaîne.

Chaîne = "1 ; 2 ; 3" ; Tableau = StrDivide(Chaîne, ";"); Pour Count = 0 Par Array.Quantity() - 1 tentative de cycle Array[Count] = Number(AbbrLP(Array[Count])); Tableau d'exceptions [Sch] = 0 ; EndAttemptsEndCycle ;

À la suite de l'exécution, un tableau avec des nombres de 1 à 3 sera obtenu.

PageConnecter

StrConnect(<Строки>, <Разделитель>) . Convertit le tableau de chaînes du premier paramètre en une chaîne contenant tous les éléments du tableau séparés par le délimiteur spécifié dans le deuxième paramètre.

Exemple 23. En utilisant le tableau de nombres de l'exemple précédent, récupérez la chaîne d'origine.

Pour Account = 0 By Array.Quantity() - 1 Cycle Array[Act] = String(Array[Act]); Fin du cycle ; Ligne = StrConnect(Array, "; ");

Il existe peu de mécanismes pour travailler avec des chaînes dans les requêtes 1C. Tout d'abord, les lignes peuvent être ajoutées. Deuxièmement, vous pouvez extraire une sous-chaîne d’une chaîne. Troisièmement, les chaînes peuvent être comparées, y compris par motif. C'est probablement tout ce qu'on peut faire avec des cordes.

Ajout de chaîne

Pour ajouter des lignes dans une requête, l'opération « + » est utilisée. Vous ne pouvez ajouter que des chaînes de longueur limitée.

SELECT "Nom : " + Contreparties. Nom AS Colonne 1 FROM Répertoire. Contreparties AS Contreparties WHERE Contreparties. Lien = &Lien

Fonction de sous-chaîne

SOUS-CHAÎNE(<Строка>, <НачальнаяПозиция>, <Длина>)

Un analogue de la fonction Environment() du modèle objet. La fonction Substring() peut être appliquée aux données de chaîne et vous permet de sélectionner un fragment <Строки> , en commençant par le numéro du caractère <НачальнаяПозиция> (les caractères d'une ligne sont numérotés à partir de 1) et longueur <Длина> personnages. Le résultat du calcul de la fonction a un type de chaîne de longueur variable, et la longueur sera considérée comme illimitée si <Строка> a une longueur et des paramètres illimités <Длина> n'est pas une constante ou supérieure à 1024.

Si la longueur de la chaîne est inférieure à celle spécifiée dans le deuxième paramètre, la fonction renverra une chaîne vide.

Attention! L'utilisation de la fonction SUBSTRING() pour convertir des chaînes de longueur illimitée en chaînes de longueur limitée n'est pas recommandée. Au lieu de cela, il est préférable d'utiliser l'opérateur de conversion EXPRESS().

Fonction similaire

Si nous devons nous assurer qu'un attribut de chaîne répond à certains critères, nous le comparons :

SELECT Contreparties. Nom AS Colonne 1 FROM Répertoire. Contreparties AS Contreparties WHERE Contreparties. Nom = "Gazprom"

Mais que se passe-t-il si vous avez besoin d’une comparaison plus subtile ? Pas seulement l’égalité ou l’inégalité, mais la similitude avec un certain modèle ? C’est exactement pour cela que la fonction SIMILAIRE a été créée.

LIKE — Opérateur permettant de vérifier la similarité d'une chaîne avec un modèle. Analogue de LIKE en SQL.

L'opérateur SIMILAR vous permet de comparer la valeur de l'expression spécifiée à sa gauche avec la chaîne de modèle spécifiée à droite. La valeur de l'expression doit être de type chaîne. Si la valeur de l'expression correspond au modèle, le résultat de l'opérateur sera VRAI, sinon il sera FAUX.

Les caractères suivants dans la chaîne modèle sont des caractères de service et ont une signification différente de celle du caractère de chaîne :

  • % (pourcentage) : une séquence contenant un nombre quelconque de caractères arbitraires ;
  • _ (trait de soulignement) : un caractère arbitraire;
  • […] (un ou plusieurs caractères entre crochets) : tout caractère unique répertorié entre crochets. L'énumération peut contenir des plages, par exemple a-z, signifiant un caractère arbitraire inclus dans la plage, y compris les extrémités de la plage ;
  • [^...] (entre crochets un signe de négation suivi d'un ou plusieurs caractères) : tout caractère unique autre que ceux listés après le signe de négation.

Tout autre symbole signifie lui-même et n'entraîne aucune charge supplémentaire. Si l'un des caractères répertoriés doit être écrit tel quel, il doit alors être précédé de<Спецсимвол>. Moi-même<Спецсимвол>(tout symbole approprié) est défini dans la même instruction après mot-clé SYMBOLE SPÉCIAL.