1c 8.2 le numéro de série du caractère dans la chaîne. Nouvelles fonctions pour travailler avec des chaînes. Fonction de format StrTemplate()

PARTIE 1. MÉTHODES (26).

1.1. Méthodes de base (10). Indépendant, construit sur leurs algorithmes simples.

Str_Complete() (remplissage droite-gauche avec des symboles spécifiés).

Str_Inverse () (inversion - caractères de droite à gauche).

Str_Codes() (codes de caractères jusqu'à ”,” et un tableau avec des codes)

Str_Symbols() (chaîne de codes séparés par "," ou d'un tableau avec des codes)

Str_ReplaceCharacters() (remplacement d'un caractère par un autre).

Str_FromArray() (chaîne du tableau de fragments séparés par un séparateur)

Str_FindIn() (recherche une sous-chaîne (y compris à droite) avec le numéro d'entrée spécifié).

Str_FindGr() (Rechercher un groupe de caractères inclus dans le jeu de caractères spécifié)

Str_FindNumber() (Rechercher un nombre, y compris à droite avec le numéro d'occurrence spécifié)

Str_Interpret() (vers un tableau, selon la syntaxe établie)

1.2. Méthodes dérivées (12). En fait, il s'agit de l'utilisation de quatre méthodes-algorithmes généralisés (voir partie 2)

Str_Number() (du début et de la fin de la chaîne, n'ayez pas "peur" des caractères non numériques.

Str_Find() (recherche une sous-chaîne (y compris insensible à la casse et à droite) avec le numéro d'entrée spécifié).

Str_Replace() (recherche (y compris insensible à la casse et à droite) et remplace les sous-chaînes de délimitation).

Str_Piece() (un morceau de chaîne entre les occurrences spécifiées du délimiteur (gauche ou droite)).

Str_ReplacePiece() (remplacement dans la chaîne source "piece" par la chaîne spécifiée).

Str_VArray() (entre les occurrences spécifiées du délimiteur (y compris à droite et sans casse).

Str_MoveBySyllables() (scindé en sous-chaînes "Hard", avec un trait d'union).

Str_MoveWords() (divisé en sous-chaînes "Softly")

Str_Cut() ("Couper" en sous-chaînes de longueurs spécifiées)

Str_Short() (remplace le groupe de caractères "réduits" de gauche par une "chaîne de remplacement"

Str_Short() (remplace le bon groupe de caractères "réduits" par une "chaîne de remplacement"

Str_Short() (remplacer au milieu d'un groupe de caractères "réduits" par une "chaîne de remplacement"

Str_Expand (extension à la longueur spécifiée en augmentant le nombre de caractères spécifiés)

1.3. Méthodes détaillées (3). « Préparation » d'une ligne avec transfert vers une table avec des informations détaillées.

Str_inTableIn() (au tableau selon le système des séparateurs imbriqués).

Str_inTableGroup (à la table selon le filtre multiniveau).

Str_inTableNumbers (dans une table avec des nombres et des fragments entre eux).

PARTIE 2. MÉTHODES-ALGORITS GÉNÉRALISÉS (3).

Str_Entry() (méthodes "Rechercher" et "Remplacer").

Str_Fragments() (méthodes "Piece", "ReplacePiece", "ToArray", "ToTableIn").

Str_Short() (méthodes "Short", "ShortP", "Short", "Expand".

Str_Split() (méthodes "Déplacer par syllabes", "Déplacer par mots", "Couper").

PARTIE 3. FONCTION UNIVERSELLE.

C'est une sorte d'interface de programmation conditionnelle qui permet

appliquer plusieurs méthodes à une chaîne à la fois. Mis en œuvre comme

fonctions à sept paramètres ("Demo" est construit sur cette fonction):

Str_(Méthodes, Sous-méthodes, Entrée, Param1, Param2, Length_Position_Number, AdditionalOutput)

Option :

- "Méthodes" - plusieurs méthodes "combinées" et (ou) une méthode "exclusive"

(codes ou noms à un seul caractère, possibles via ",")

- "Sous-méthodes" - plusieurs options "combinables" et (ou) "exclusives"

méthode « exclusive » (codes ou noms à un seul caractère) ;

- "Entrée" - Chaîne, ou tableau ou tableau de valeurs ;

- "Param1" - chaîne de recherche, substitutions, délimiteurs, filtres ;

- "Param2" - chaîne ou symboles de remplacement ;

- "Length_Number_Position" -Number, Numbers via un séparateur ou un tableau avec Numbers ;

- « Quitter » - Nombre ou chaîne ou tableau ou tableau de valeurs ;

Les noms et (ou) les codes à un caractère des méthodes-sous-méthodes, ainsi que les numéros

(Length_Position_Number) peut être dans tous les cas et séparé

l'un des délimiteurs suivants : ”, :;”.

PARTIE 4. QUELQUES EXEMPLES.

HaveNumbersINSstring=(Str_FindNumbers(InString)<>Indéfini);

HaveDigitsINSstring=(Str_FindGr(InString,"+0123456789")>0);

ThereLatin=(Str_FindGr(VxStr, Str_Interpret("lL"))>0);

HaveSpecifiedSigns=(Str_NfindGr(VxStr, "+ à hornYu.0p9")>0);

IsUnprintable=(Str_FindGr(VxStr, Str_Interpret("-l-L-r-R-P-Z-C"))>0);

PARTIE 5. CONCLUSION.

Dans la mesure du possible, géré avec un seul passage le long de la ligne. La deuxième passe - généralement déjà en fragments. N'a pas utilisé la fonction intégrée StrNumberOccurrences().

Fonctions intégrées utilisées : Left(),Right()Mid(),StrLength()

- (le positionnement et la récupération d'une partie d'une chaîne -devraient être "rapides").

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

Ajout de chaîne

L'opérateur "+" est utilisé pour ajouter des chaînes dans une requête. Vous ne pouvez ajouter que des chaînes de longueur limitée.

SELECT "Nom : " + Entrepreneurs.Nom AS Colonne1 FROM Répertoire.Entrepreneurs AS Entrepreneurs WHERE Entrepreneurs.Référence = &Référence

Fonction de sous-chaîne

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

Un analogue de la fonction Environment() du modèle objet. La fonction Substring() peut être appliquée aux données de type chaîne et permet de sélectionner un fragment <Строки> , commençant par un chiffre <НачальнаяПозиция> (les caractères d'une chaîne sont numérotés à partir de 1) et la longueur <Длина> personnages. Le résultat de l'évaluation 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 un paramètre 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 cast EXPRESS().

Fonction similaire

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

SELECT Counterparties.Name AS Column1 FROM Directory.Counterparties AS Counterparties WHERE Counterparties.Name = "Gazprom"

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

LIKE - Un opérateur pour vérifier si une chaîne est similaire à un modèle. Analogue de LIKE en SQL.

L'opérateur LIKE vous permet de comparer la valeur de l'expression spécifiée à 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 TRUE, sinon il sera FALSE.

Les caractères suivants dans la chaîne de modèle sont des caractères de service et ont une signification différente 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 figurant entre crochets. Une énumération peut contenir des plages, telles que a-z, c'est-à-dire n'importe quel caractère 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 répertoriés après le signe de négation.

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

Le type String se trouve dans tous les langages de programmation. C'est primitif et dans 1C, il existe de nombreuses fonctions pour travailler avec. Dans cet article, nous allons regarder de plus près différentes manières travailler avec des types de chaîne dans 1C 8.3 et 8.2 avec des exemples.

Ligne

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

Chaîne(Faux) // renvoie "Non"
Chaîne(12345) // renvoie "12 345"
Chaîne(DateActuelle()) //"21.07.2017 11:55:36"

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

LP abrégé, L abrégé, P abrégé

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

abbrl("Les espaces des deux côtés seront supprimés") // "Les espaces des deux côtés seront supprimés"
abbr("Les espaces des deux côtés seront supprimés") // "Les espaces à gauche seront supprimés"
abbr(" Les espaces des deux côtés seront supprimés ") // "Les espaces à droite seront supprimés"

Lion, droite, milieu

Ces fonctions vous permettent de couper une partie d'une chaîne. La fonction Lion() renverra la partie de la chaîne sur son côté gauche de la longueur spécifiée. La fonction "Right()" est similaire, mais le recadrage se fait à droite. La fonction "Mer()" permet de spécifier le numéro de caractère à partir duquel la chaîne sera sélectionnée et sa longueur.

Lion("Variable chaîne", 4) // renvoie "Stro"
Droite("Variable chaîne", 7) // renvoie "variable"
avg("String variable", 2, 5)// retourne "troco"

LongueurStr

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

StrLength("Word") // le résultat de l'exécution sera le nombre 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 indiquant la position du début de la chaîne trouvée. Si aucune correspondance n'est trouvée, zéro est renvoyé.

Notez que la recherche est sensible à la casse. S'il existe plusieurs occurrences de la sous-chaîne de recherche 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

Ligne vide

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

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

VReg, NReg, TReg

Ces fonctions sont très utiles lors de la comparaison et de la conversion de variables de chaîne. "Vreg()" renverra la chaîne d'origine en majuscules, "HReg()" 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 minuscules.

VReg(" DIRECTEUR GÉNÉRAL ") // valeur de retour - " DIRECTEUR GÉNÉRAL "
HReg("DIRECTEUR GENERAL") // valeur de retour - "PDG"
TReg("DIRECTEUR GÉNÉRAL") // valeur de retour - "Directeur général"

StrRemplace

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 ; blanche; jaune"

StrNumberRows

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

La boucle dans l'exemple ci-dessous passera par trois cercles car la fonction StrNumberRows renverra la valeur 3 :

Pour ind \u003d 1 par StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") Boucle
<тело цикла>
FinCycle ;

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 de texte.

StrGetString("Chaîne1" + Symboles.PS + "Chaîne2" + Symboles.PS + "Chaîne3", 2) // renvoie "Ligne2"

StrNumberOccurrencesStrNumberOccurrences

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

StrNumberInstallations("a;b;c;d; ", ";") // la fonction renverra le nombre 4

Symbole et SymbolCode

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

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

Tâches fréquentes lors de l'utilisation de chaînes

Concaténation de chaînes

Pour concaténer plusieurs chaînes (concaténer), utilisez simplement 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 une référence à un élément du dictionnaire, un nombre, etc., il suffit d'utiliser la fonction "String ()". Des fonctions comme "ShortLP()" convertiront également les variables en chaîne, mais immédiatement en coupant les caractères insignifiants.

String(1000) // renverra "1000"

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

StrRemplace(Chaîne(1000),Caractères.NPP,"") // renvoie "1000"

String(Format(1000,"CH=")) // renverra "1000"

Citations dans une chaîne

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

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

Multiligne, saut de ligne

Pour créer texte multiligne ajoutez-y simplement des caractères de saut de ligne (Symbols.PS).

MultilineText = "Première ligne" + Caractères.PS + "Deuxième ligne"

Comment supprimer des espaces

Afin de supprimer les espaces à droite ou à gauche, vous pouvez utiliser la fonction "Stretch()" (ainsi que "Scrpt()" et "ScreenP()") :

StringWithoutSpaces = ShortLP(" Many letters ") // la fonction renverra la valeur "Many letters"

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

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

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

ChaîneSansEspaces = StrReplace(" bonjour", " " ,"") // renvoie "bonjour"

Comparer des chaînes entre elles

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

"hello" = "hello" // retournera faux
"Bonjour" = "Bonjour" // renverra Vrai
"Bonjour" = "Au revoir" // renverra Faux

Implémenté dans la version 8.3.6.1977.

Nous avons élargi l'ensemble des fonctions pour travailler avec des chaînes. Nous l'avons fait afin de vous donner des outils plus avancés pour l'analyse des données de chaîne. De 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 une forme formatée. Il peut s'agir de l'analyse de certains fichiers reçus de l'équipement ou, par exemple, de l'analyse d'un journal technologique.

Toutes les actions que les nouvelles fonctions effectuent, vous pouviez les effectuer auparavant. A l'aide d'algorithmes plus ou moins complexes écrits dans un langage embarqué. Par conséquent, les nouvelles fonctions ne vous offrent aucune possibilité fondamentalement nouvelle. Cependant, ils vous permettent de réduire la quantité de code, 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 plate-forme fonctionnent, bien sûr, plus rapidement qu'un algorithme similaire écrit dans le langage intégré.

Fonction de format StrTemplate()

Cette fonction remplace les paramètres dans une chaîne. Le besoin 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 :

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

<Шаблон>est la chaîne dans laquelle remplacer les représentations des paramètres.

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

Pour spécifier un emplacement spécifique dans le modèle auquel vous souhaitez effectuer la substitution, vous devez utiliser des marqueurs de la forme %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 (nécessite le type Date)

Fonction de chaîne StrCompare()

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

Vous pouvez effectuer la même action avant d'utiliser l'objet ValueComparison :

Cependant, l'utilisation de la nouvelle fonction semble plus simple. De plus, la fonction, contrairement à l'objet Value Compare, fonctionne aussi bien dans le client léger que dans le client Web.

Fonctions de chaîne StrBeginsC(), StrEndsTo()

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 intégré, mais leur présence vous 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 StrSplit(), StrJoin()

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

Fonction de travail avec des chaînes StrFind()

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

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

En fait, il 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 vers l'arrière est utile lorsque vous avez besoin du dernier fragment d'une chaîne formalisée, par exemple, nom et prénom fichier dans l'URL. Et la recherche à partir d'une position spécifiée aide dans les cas où vous devez rechercher dans un fragment connu, et non dans la chaîne entière.

À capacités de base les langages de programmation incluent généralement le travail avec des nombres et des chaînes. Habituellement, ces fonctionnalités sont câblées dans le code du compilateur (ou les classes "de base" du langage de programmation sont implémentées).

En 1C, les capacités de travail avec des chaînes sont programmées dans la plate-forme elle-même. Aujourd'hui, nous examinerons les fonctionnalités de travail avec des chaînes 1C dans des programmes en langage 1C intégré.

Valeur ligne 1C

1. Commençons par le plus simple. La création d'une variable et l'attribution d'une valeur constante de chaîne ressemble à ceci en 1C :

Variable = "Bonjour le monde !" ;

Si vous souhaitez spécifier un guillemet dans une valeur de chaîne constante 1C, vous devez le doubler ""

Variable = "Bonjour, "monde"" !" ;

2. Le saut de ligne 1C peut être spécifié de deux manières à la fois. La première utilise le symbole |

Variable = "Bonjour,
| monde! " ;

La seconde utilise l'énumération du système Symbols. Il vous permet d'ajouter à la fois un saut de ligne 1C et d'autres caractères non imprimables, tels que TAB.

Variable = "Salut" + Symbols.ps + "paix !" ;

3. Les configurations en 1C peuvent être développées non seulement pour une langue (russe, anglais ou autre) - mais simultanément pour plusieurs langues. Dans ce cas, la langue actuellement utilisée est sélectionnée en bas de la fenêtre 1C.

La liste des langues se trouve dans la fenêtre de configuration dans la branche Général/Langues. Chaque langue a un identifiant court tel que fr ou fra.

Il est clair que lors de la programmation d'une telle configuration, les lignes 1C peuvent également être multilingues. Pour ce faire, il est possible de créer une telle ligne 1C en spécifiant through ; options par ID de langue :

Variable = "ru=""Bonjour le monde !""; en=""Bonjour le monde !""";

Si vous utilisez la ligne 1C ainsi formée comme d'habitude, ce sera ce qui y est écrit. Pour que le système le divise en deux options et utilise celle souhaitée, vous devez utiliser la fonction NStr() :

//correct pour les configurations bilingues
Report(NStr(Variable));

Étais avec ligne type 1C

La condition requise est un champ du répertoire / document 1C. Elle diffère d'une variable dans un programme en langage 1C en ce que son type est précisément indiqué pour l'attribut (nombre, chaîne 1C, etc.). Si vous avez besoin de vous familiariser avec les accessoires, consultez le didacticiel sur .

Si vous spécifiez le type d'attribut - ligne 1C, vous devez également spécifier les paramètres.

Les chaînes 1C sont de longueur illimitée (indiquée par longueur = 0) et de longueur limitée, indiquant le nombre exact de caractères. Les chaînes 1C de longueur illimitée sont stockées dans une table SQL séparée, leur utilisation est donc moins productive que les chaînes limitées.

C'est pourquoi l'utilisation de chaînes 1C de longueur illimitée a ses limites - il n'est pas possible de les utiliser partout. Par exemple, ce n'est pas possible comme numéro de document, code répertoire, mesure.

Travailler avec des lignes 1C

Pour travailler avec des chaînes, il existe plusieurs fonctions intégrées de la plate-forme 1C.

  • AbbrLP("Incroyable, mais vrai !")
    Supprime les espaces supplémentaires de la chaîne 1C. Il peut également être utilisé pour convertir n'importe quel type en une chaîne 1C (par exemple, des nombres).
  • Variable = "Vasya" + Abbrl("plus") + "Olya" ; //sera "Vasya plus Olya"
    Un exemple de sommation de plusieurs valeurs de chaîne 1C. Le résultat est une ligne 1C.
  • Variable = Lion("Musique", 2); // sera "Mu"
    Variable = Moy("Musique", 2, 2); // sera "ps"
    Variable = Droits("Musique", 2); // sera "ka"
    Diverses options pour obtenir une sous-chaîne à partir d'une chaîne 1C.
  • Variable = Rechercher("Musique", "ps"); // sera 3
    Recherchez une sous-chaîne dans la chaîne 1C, en commençant par le caractère 1.
  • Variable = StrLength("Musique"); //sera 6
    Renvoie le nombre de caractères dans une chaîne 1C.
  • Notify("Hi") //dans la boîte de message en bas de la fenêtre 1C
    alert("bonjour") //boîte de dialogue contextuelle
    Status("Hello") //dans la ligne d'affichage d'état en bas à gauche
    .

Amener des objets à la ligne 1C

Comme vous le savez, le format le plus populaire pour l'échange d'informations structurées à l'heure actuelle est XML. Même dernière version MME Mot de bureau et Excel enregistrent les fichiers dans ce format (docx et xlsx respectivement, changez l'extension en zip, ouvrez dans un archiveur).

La plate-forme 1C pour l'échange de données propose plusieurs options, dont la principale est également XML.

1. La méthode la plus simple consiste à utiliser la fonction ShortLP() ou String(). Vous pouvez utiliser la fonction REPRESENTATION() dans le texte de la requête. Le résultat de leur action est le même - ils génèrent une représentation sous forme de chaîne de n'importe quel objet 1C pour l'utilisateur.

Pour le répertoire par défaut, ce sera son nom. Pour un document, le nom, le numéro et la date du document.

2. Tout objet 1C (avec des restrictions) peut être converti en XML et vice versa. Le processus de conversion est appelé sérialisation.

ViewStringXml = XMLString(Valeur); // récupère le XML à partir de la valeur 1C
Value1С = XMLValue(Type("CatalogReference.Nomenclature"),ViewStringXml); //obtenir la valeur 1C de la chaîne XML, vous devez spécifier le type de 1C qui doit être reçu

3. Il existe un moyen natif de la plate-forme 1C pour convertir n'importe quel objet 1C en une chaîne. Il a migré de la version 1C 7.7. Ce format n'est pas compris par d'autres programmes, mais comprend un autre 1C, ce qui facilite son utilisation pour échanger entre les bases de données 1C.

Chaîne = ValueInStringInt(Value1S); //récupérer la chaîne 1C à partir de la valeur 1C
ValeurVersFichier("C:\MonFichier.txt", Valeur1C); //une autre option, nous obtenons un fichier avec une chaîne enregistrée à partir de la valeur 1C
Value1C = ValueFromStringInt(String); // retour de la ligne 1C
Value1C = ValueFromFile("C:\MonFichier.txt"); // retour du fichier

Modification des lignes 1C sur le formulaire

En plus de travailler avec des chaînes 1C dans un programme 1C, j'aimerais bien sûr que l'utilisateur puisse les modifier. Il existe plusieurs possibilités pour cela :

1. Le plus simple est de demander l'entrée de la ligne 1C à la demande. Cette méthode est utilisée lors de l'enseignement de la programmation 1C, dans la vie, elle est utilisée beaucoup moins souvent (mais elle est utilisée !).

Variable = "" ;
String = EnterValue(Variable, "Entrez le nom complet");

2. Pour afficher le détail de l'objet 1C (répertoire/document) ou le détail du formulaire (voir), le champ de saisie est le plus souvent utilisé. C'est l'outil le plus courant dans 1C pour que l'utilisateur travaille avec des champs d'édition.

3. Les possibilités du champ de saisie peuvent être étendues (voir les propriétés du champ de saisie, clic-droit dessus, pour plus de détails):

  • Case à cocher Mode d'édition multiligne
  • Case à cocher Édition avancée (disponible si la case précédente est cochée)
  • Case à cocher Mode mot de passe (voir ).

4. Si toutes les possibilités du champ de saisie ne vous suffisent pas, il existe un éditeur intégré. Pour l'ajouter au formulaire, il faut ajouter un Champ dans le menu Formulaire / Insérer un champ document texte. Dans ses propriétés, vous pouvez spécifier le mode de son fonctionnement - la propriété Extension.

Un champ de document texte ne peut pas être lié directement aux données. Il est nécessaire d'écrire la fonction suivante dans le gestionnaire d'événement du formulaire OnOpening() (voir ) :

FormElements.ElementNameTextDocumentField.SetText(StringValue); //ici, ValueString est le texte reçu, par exemple, de l'attribut

Et dans le gestionnaire de sauvegarde - par exemple, dans le bouton Enregistrer - ajoutez une sauvegarde :

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString voici les accessoires où nous enregistrons la valeur

5. Dans la version 1C 8.2.11, dans formulaires gérés, est apparu nouvelle opportunité représentation linéaire 1C - Champ de document formaté.


Semblable au champ d'un document texte, il est nécessaire de définir lors de l'ouverture et d'écrire lors de l'enregistrement du texte vous-même à l'aide du programme.

  • Dans l'objet 1C, dont nous créons la forme (livre de référence, document, traitement, etc.) - ajoutez un attribut avec le type de stockage de valeur
  • Dans la fonction OnReadOnServer(), définissez le texte de l'attribut

    //ici Requisite est l'attribut ajouté de l'objet 1C
    //ici FormattedDocument est le nom du champ sur le formulaire d'édition
    &Sur le serveur

    FormattedDocument = CurrentObject.Attributes.Get();
    FinProcédure

  • Dans la fonction BeforeWriteOnServer() ou en appuyant sur le bouton, écrivez le texte du champ

    &Sur le serveur
    Procédure OnReadingOnServer(CurrentObject)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    FinProcédure