LA CLOCHE

Il y a ceux qui ont lu cette actualité avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam

Bonjour, chers lecteurs du site de blog! La dernière fois, nous avons prêté attention au langage intégré 1C: Enterprise 8. Aujourd'hui, nous allons continuer et parler de deux types de données - Booléen et Dateet réfléchissez également à la manière de travailler avec eux. Alors, commençons!

Concernant type de données booléen, alors tout est assez simple ici. Il y a deux significations Vrai et Fauxqui peuvent être obtenus de différentes manières. Par exemple, vous pouvez utiliser des opérations de comparaison:

  • 101\u003e 1001 égale Faux
  • 101 Vérité
  • «20000101» \u003d «20000102» est égal à Faux
  • «Ouvert» «Ouvert» est égal à Vrai

Comme vous pouvez le voir, vous pouvez utiliser diverses opérations pour comparer des nombres, des chaînes, des dates. En conséquence, vous obtiendrez une valeur booléenne, qui est souvent utilisée dans les instructions conditionnelles et dans les instructions de boucle.

Considérez maintenant type de données primitif Date... Pour décrire le type de données Date généralement deux méthodes sont utilisées. Tout d'abord, en utilisant un littéral. Déclarons une variable appelée "CurrentDate". Par exemple, il sera égal au 2 octobre 2014. Dans ce cas, le format de la date est année / mois / jour.

CurrentDate \u003d "20141002"; // 02.10.2014

Si nécessaire, nous pouvons spécifier l'heure, car dans le système 1C: Enterprise 8, toute date contient à la fois la date et l'heure. Par conséquent, si nécessaire, vous pouvez spécifier, par exemple, la durée suivante: 15 heures 5 minutes et 50 secondes. Le résultat sera année / mois / jour / heure / minute / seconde.

CurrentDate \u003d «20141002150550»; // 02.10.2014 15:05:50

Si vous ne spécifiez pas l’heure, elle sera par défaut égale à zéro et la date peut être décrite comme suit: «20141002».
Pour plus de clarté, n'importe quel séparateur peut être utilisé, tel que les points "." La date pourrait donc ressembler à "2014.10.02". C'était la première façon de décrire une date. Notez que des guillemets simples sont utilisés, c'est-à-dire un littéral qui ne peut pas être rompu. Il est écrit entre guillemets simples.

La deuxième façon de déterminer la date consiste à utiliser la fonction de contexte global Date()... Dans ce cas, on passe le même en paramètre à cette fonction: année / mois / jour. Les paramètres doivent être spécifiés ici séparés par des virgules.

CurrentDate \u003d Date (2014, 10, 02); // 02.10.2014 00:00:00

Vous pouvez également spécifier l'heure.

CurrentDate \u003d Date (2014, 10, 02, 15, 05, 50); // 02.10.2014 15:05:50

Si l'heure n'est pas spécifiée, elle sera égale au début de la journée. Vous pouvez également écrire l'appel suivant à cette fonction:

CurrentDate \u003d Date ("20141002150550"); // 02.10.2014 15:05:50

Il utilise un paramètre avec une chaîne qui doit contenir une date au format: année / mois / jour / heure / minute / seconde.

Afin de décrire une date vide dans le système 1C: Enterprise 8, vous devez procéder comme suit:

EmptyDate \u003d ""; // 01.01.0001 00:00:00

Ou en utilisant une description via un littéral:

EmptyDate \u003d "00010101"; // 01.01.0001 00:00:00

Une autre façon, en utilisant la fonction de contexte global déjà familière:

Date vide \u003d Date (1, 1, 1); // 01.01.0001 00:00:00

L'utilisation de ces méthodes renverra le même résultat et la date sera considérée comme vide. Commodité de la fonction Date réside dans le fait que l'on peut passer ici non pas des valeurs spécifiques, mais des variables. Parfois, vous devez obtenir la date en collectant différentes variables. La fonction est très utile pour cela. Date.

Et je tiens également à noter que l'opération d'ajout est applicable pour la date. Si vous ajoutez dix à la date:

CurrentDate \u003d Date (2014, 10, 02, 15, 05, 50); // 02.10.2014 15:05:50 CurrentDate \u003d CurrentDate + 10;

En conséquence, nous obtenons la date dix secondes de plus:

02.10.2014 15:06:00

Ainsi, l'opération d'ajout ajoute un certain nombre de secondes à la date spécifiée. C'est une différence par rapport à la version du système 1C: Enterprise 7.7, où lors de l'ajout de dates, le nombre de jours a été ajouté, et non de secondes.

Cet article poursuit la série d'articles "Premiers pas de développement sur 1C". Il parlera des types de données primitifs et des fonctions les plus courantes lorsque vous les utilisez. Après avoir lu le matériel, vous apprendrez:

  • Quels types de données sont primitifs?
  • Comment pouvez-vous travailler avec des chaînes et quelles fonctionnalités devez-vous envisager?
  • Quelles sont les subtilités du travail avec des expressions numériques?
  • Comment décrivez-vous une date avec une signification particulière? Comment définir une date vide?
  • Comment fonctionne la conversion de type?
  • Nul et incertain - que sont-ils et quelles sont les différences?
  • Comment déterminer quel type d'objet / variable est?

Applicabilité

L'article a été écrit pour la version 8.3.4.496 de la plate-forme 1C, les informations sont donc pertinentes pour la version actuelle de la plate-forme. Cependant, il convient de noter que dans la version 8.3.6.1977 de nouvelles fonctions pour travailler avec des chaînes ont été ajoutées. Par conséquent, lorsque vous répétez les étapes de l'article, ne soyez pas surpris si dans la section correspondante de l'assistant de syntaxe, vous voyez des fonctions qui ne sont pas affichées dans notre capture d'écran. Nous vous recommandons également de vous familiariser avec la nouvelle méthode StringCNumber () ajoutée dans la plateforme 8.3.10.

Types de données primitifs et certaines de leurs fonctions

Les types de données primitifs suivants sont distingués:

Constantes de chaîne

Type de données primitif Ligne(constante de chaîne) se compose de différents caractères. Lignetoujours entouré de guillemets. Un exemple de constante de chaîne:

Message.Text \u003d "Il y a des données vides";

Ceux. la ligne «Il y a des données vides» est affectée à la variable Texteobjet Message... Tout ce qui est entouré de guillemets est considéré comme une chaîne.

La chaîne peut être n'importe quel caractère. Les lignes peuvent être multilignes. De plus, chaque nouvelle ligne doit être placée entre guillemets. Par exemple:

Text \u003d "L'attribut n'est pas rempli correctement"
«La publication de documents est impossible»;

Le point-virgule est placé uniquement à la fin de la dernière ligne.

Il existe un autre moyen: tout le texte doit être entouré par un seul guillemets, mais chaque nouvelle ligne doit commencer par une barre verticale.

Cette syntaxe est la plus couramment utilisée dans les configurations typiques. En particulier, dans le langage de requête. Par exemple:

Request.Text \u003d
"CHOISIR
| Employés. Nom AS Employé,
| Employés Date de naissance COMME Date de naissance
| DE
| Annuaire.Employés AS Employés
| O
| PAS des employés, c'est un groupe »;

Il est à noter que l'opération d'ajout est définie pour les chaînes. Ce n'est pas une opération arithmétique, c'est ce qu'on appelle une opération de concaténation.

Ceux. vous devez combiner, par exemple, deux lignes, avec le signe d'addition "+" entre les lignes:

Texte \u003d «La condition requise n'est pas remplie correctement» + «Le document ne peut pas être publié»;

Ainsi, les lignes sont collées ensemble. L'opération de concaténation est naturellement également applicable à plus de chaînes. Les autres opérations (soustraction, multiplication, division) ne sont pas autorisées pour les chaînes.

Si un mot doit être placé entre guillemets dans une chaîne, le guillemet à l'intérieur de la chaîne doit être spécifié avec un guillemet double. Par exemple:

Texte \u003d "Erreur dans le module" "Module commun1" "";

Dans cet exemple, le premier guillemet ouvre une chaîne. Les deuxième et troisième guillemets adjacents indiquent un guillemet.

Et à la fin, trois guillemets sont obtenus: le tout dernier guillemet ferme la chaîne, les deux précédents dénotent un guillemet.

Sur les chaînes, diverses opérations de conversion de chaîne sont possibles, déterminer les premiers caractères à gauche, déterminer plusieurs caractères d'extrême droite, rechercher une sous-chaîne dans une chaîne, etc.

Toutes ces fonctions sont disponibles n'importe où dans la configuration.

Dans l'assistant de syntaxe, ils sont sous Description générale du langage intégréFonctions intégréesFonctions pour travailler avec des valeurs de type String.

Il existe de nombreuses fonctions et elles sont généralement suffisantes pour travailler avec des constantes de chaîne.

Regardons un exemple de résolution d'un problème à l'aide de fonctions de chaîne.

La tâche:

Vous souhaitez développer une fonction. Une chaîne arbitraire est transmise à la fonction en tant que paramètre. Les caractères d'une chaîne peuvent inclure des nombres.

Une séquence de chiffres (d'un ou plusieurs), délimitée des autres caractères par des espaces, est un entier positif.

Par exemple, la chaîne «72 ABC 6AP 31 54f -22» contient deux entiers positifs: 72 et 31. En dehors des espaces, d'autres caractères non significatifs (tels que tabulation, retour chariot) ne sont pas utilisés. La fonction doit renvoyer le nombre d'entiers positifs.

Il doit se trouver dans un module d'application géré. Il est nécessaire de s'assurer qu'il est appelé au démarrage du système. La chaîne est définie à l'aide d'une variable.

Alors, ouvrons le module de l'application gérée et sélectionnons dans le champ de sélection de la liste dans le panneau du configurateur Modulegestionnaire standard Chez StartSystem ().

Dans le gestionnaire, définissez une variable Ligne, par exemple:

Ligne \u003d "72 ABC 6AP 31 54f -22";

Amount \u003d Amount ofIntegerNumbers (String);

Envoyons un message sur le nombre d'entiers:

Rapport ("La chaîne contient" + Montant + "entiers");

De plus, la variable montant sera implicitement converti en type Constante de chaîne... Ensuite, l'opération de concaténation sera effectuée pour les trois chaînes et le message sera transmis.

Définir le début et la fin (c'est-à-dire le modèle) de la fonction Nombre d'entiers (chaîne).

Considérons maintenant l'une des options possibles pour développer une fonction Nombre d'entiers (chaîne)... Ce faisant, nous nous familiariserons avec certaines des fonctions intégrées permettant de travailler avec des chaînes.

Tout d'abord, vous devez vous familiariser avec la fonction SymbolCode... Cette fonction récupère le code du caractère situé dans la chaîne passée à la position avec le nombre spécifié.

Syntaxe:

CharacterCode (,)

Paramètres:

(obligatoire)

(facultatif) est le numéro du caractère de la chaîne dont vous souhaitez obtenir le code. La numérotation des caractères dans une ligne commence à 1.

Valeur de retour:
Code de symbole transmis. Le code est renvoyé selon le codage Unicode.

Notez que le paramètre il existe une valeur par défaut de 1.

La chaîne peut également contenir un caractère. Ainsi, il est possible de déterminer le code 0 et le code 9, et les codes de tous les autres chiffres sont, comme vous le savez, dans l'intervalle entre eux.

Définissons les variables correspondantes et leurs valeurs:

Code0 \u003d CharacterCode ("0");
Code9 \u003d CharacterCode ("9");

Pour résoudre le problème, nous choisirons le schéma suivant:

  1. Si un certain nombre d'espaces de début ou de fin sont présents dans la chaîne, nous nous en débarrasserons avec une fonction spéciale. Ensuite, nous nous intéresserons aux groupes de caractères entre les espaces internes. Si le groupe se compose uniquement de nombres, il s'agit d'un entier. Il existe une fonction spéciale avec laquelle vous pouvez déterminer la position du premier espace.
  2. Compte tenu de la position du premier espace, une autre fonction peut récupérer le groupe de caractères (sous-chaîne) à gauche de l'espace.
  3. Analysons les symboles qui composent le groupe et déterminons s'il s'agit d'un entier. Les entiers révélés seront résumés dans une variable spéciale.
  4. Raccourcissons la ligne initiale en sélectionnant à l'aide d'une autre fonction tous les caractères maintenant à droite de l'espace. Cet espace pourrait ne pas être un, mais toute une série d'espaces dans une ligne, donc dans la ligne restante, nous allons nous débarrasser de tous les espaces les plus à gauche (dans une ligne) avec une fonction spéciale et revenir à l'étape 2. Nous répéterons les étapes du point 2 au point 4 jusqu'à ce que nous atteignions indique qu'il n'y aura plus d'espaces dans la ligne. Dans ce cas, la chaîne raccourcie sera le dernier groupe de caractères analysés.

Analysons maintenant les fonctions dont nous avons besoin pour résoudre le problème.

SokrLP
Syntaxe: Abréviation ()
Paramètres: (obligatoire).
Supprime les espaces (caractères non significatifs) à gauche du premier caractère significatif de la chaîne et à droite du dernier caractère significatif de la chaîne.

Trouver
Syntaxe: Find (,)
Paramètres: (obligatoire), (obligatoire).
Renvoie la position du premier caractère de la sous-chaîne trouvée.
La numérotation des caractères dans la chaîne commence à 1. Si la chaîne ne contient pas la sous-chaîne spécifiée, alors 0 est renvoyé. Dans notre cas, nous utiliserons un espace ("") comme sous-chaîne.

un lion
Syntaxe: Lion (,)
Paramètres: (obligatoire), (obligatoire).
Sélectionne les premiers caractères à partir de la gauche dans une chaîne. En utilisant cette fonction, nous définirons des groupes de caractères à analyser (de la gauche au premier espace).

Longueur Str
Syntaxe: StrLength ()
Paramètres: (obligatoire).
Obtient le nombre de caractères dans une chaîne. Nous l'utiliserons pour déterminer la longueur de la chaîne.
Fonction SymbolCode, que nous utiliserons pour identifier les groupes de caractères qui sont des entiers, décrits précédemment.

Droite
Syntaxe: Right (,)
Paramètres: (obligatoire), (obligatoire).
Sélectionne les caractères les plus à droite d'une chaîne. En utilisant cette fonction, nous sélectionnerons la partie encore non traitée de la chaîne.

Abréviation
Syntaxe: abbrL ()
Paramètres: (obligatoire).
Supprime les espaces (caractères non significatifs) à gauche du premier caractère significatif de la chaîne. Nous utilisons cette fonction pour supprimer les espaces possibles de la gauche du reste de la chaîne.

Voici un algorithme de fonction possible avec des commentaires.

Expressions numériques

Les variables des modules et les attributs des objets de base de données peuvent être numériques.
Il y a une limite de bits pour le nombre. Pour une variable numérique, la longueur de la partie entière ne peut pas dépasser 32 caractères.

La précision de la partie fractionnaire ne peut pas dépasser 10 chiffres. Lorsqu'une variable est décrite et qu'une valeur numérique lui est affectée, sa profondeur de bits n'est fixée nulle part. Cependant, il existe également des limitations pour les variables.

L'assistant de syntaxe indique que le nombre maximum de chiffres est de 38 caractères. Une telle limitation n'empêche pas la solution d'éventuels problèmes économiques, c'est-à-dire toute valeur monétaire peut être décrite à l'aide de ces chiffres.

Néanmoins, si vous avez encore besoin de décrire de grandes quantités pour résoudre certains problèmes mathématiques, alors dans la théorie de la programmation, il existe des algorithmes qui vous permettent de décrire des nombres avec n'importe quelle dimension basée sur des contraintes existantes.

Opérations applicables aux numéros:

  • opérations arithmétiques ordinaires (-, +, *, /). La multiplication et la division ont priorité sur l'addition et la soustraction. Les parenthèses ont la priorité la plus élevée. Il existe également des opérations unaires + et -, qui ont la priorité immédiatement en dehors des parenthèses;
  • opération «reste de la division» (%). Par exemple, 12% 5 \u003d 2;
  • fonctions mathématiques pouvant être utilisées pour les nombres (fonctions trigonométriques, exponentiation, extraction de racine carrée, arrondi à une profondeur de bits spécifiée, choix d'une partie entière d'un nombre)

Si nous parlons de l'exactitude des valeurs numériques, comme pour les détails de la base de données, il existe des limites naturelles.

Mais en ce qui concerne les variables, il y a une particularité ici. En fait, les variables peuvent être utilisées avec de très grands nombres, mais l'infobase stockera des valeurs avec une longueur entière ne dépassant pas 32 caractères.

Valeurs booléennes

En ce qui concerne le type de données booléen, il n'y a que deux valeurs True et False, qui peuvent être obtenues de différentes manières.

Vous pouvez, par exemple, utiliser des opérations de comparaison pour des nombres ou des dates. En conséquence, une certaine valeur booléenne sera obtenue, qui est alors le plus souvent utilisée dans les instructions conditionnelles et dans les instructions de boucle.

Littéraux de date

Il existe deux façons de décrire une date. L'un d'eux utilise un littéral. Le littéral est écrit entre guillemets simples.

L'année s'écrit d'abord, puis le mois et ensuite le jour.

Si nécessaire, vous pouvez également spécifier l'heure, car dans le système 1C: Enterprise 8, toute date contient à la fois la date et l'heure. Par exemple:

DocumentDate \u003d «20140315121020»;

Si l'heure n'est pas spécifiée, elle est par défaut égale à zéro. Tout séparateur peut être utilisé dans la description de la date. Par exemple:

DocumentDate \u003d '2014.03.15';

La deuxième façon de déterminer la date consiste à utiliser la fonction de contexte global Date()... Dans ce cas, on passe les mêmes paramètres à cette fonction: année, mois, jour séparés par des virgules.

Vous pouvez également spécifier l'heure. S'il n'est pas spécifié, il sera par défaut le début de la journée.

Dans le système 1C: Enterprise 8, une date vide est le tout début du calendrier. Options d'enregistrement:

EmptyDate \u003d '00010101';
EmptyDate \u003d Date (1,1,1);

Les deux enregistrements renverront le même résultat et cette date sera considérée comme vide.

Commodité de la fonction Date() en ce que nous pouvons lui transmettre non pas des valeurs spécifiques, mais des variables. Autrement dit, nous construisons parfois une date en collectant différentes variables.

Pour une date, l'opération d'ajout est applicable. L'opération d'ajout ajoute le nombre de secondes spécifié à la date.

Conversions de type de données primitives

Dans une instruction d'affectation où plusieurs variables sont additionnées (par exemple, Variable \u003d A + B + C), la conversion des types de données primitifs est possible. La conversion du type de données est effectuée sur la valeur du premier type de données.

Ainsi, si le premier type de données est une chaîne, le système essaiera de créer une chaîne à partir de toute cette expression. Si le premier type de données est un nombre, alors, en conséquence, le système essaiera d'obtenir un type de données numérique.

Et donc, chaîne + nombre \u003d chaîne. Parfois, un nombre peut être ajouté à une chaîne, dans le cas où une valeur numérique peut être extraite de la chaîne (par exemple, 123 + «456»).

Pour un type de données booléen, les expressions suivantes s'appliquent:

Vérité et 1 \u003d vérité;
Vrai ET 0 \u003d Faux.

Tout nombre supérieur à zéro est converti en True, 0 est converti en False.

La date peut, comme indiqué précédemment, être ajoutée au nombre. La date peut également être ajoutée au type de données booléen.

Dans ce cas, True est converti en 1 et False est converti en 0.

En plus de la conversion de type dans les opérateurs, la conversion de type explicite est possible en utilisant les fonctions appropriées: Chaîne (), Nombre (), Date (), Booléen ().

À Lignetout type de données est converti.

Le nombre peut être obtenu à partir d'une chaîne ou d'un booléen. Booléen converti: True à 1, False à 0.

Une chaîne peut être convertie en Date si elle contient une valeur de date. Par exemple, Date ("20140315"). Comme indiqué précédemment, la conversion par position est possible:

Date(,).

En booléen, vous pouvez convertir un nombre et la valeur elle-même en booléen.

Ces fonctions peuvent être utilisées dans le code pour effectuer des conversions de types explicites.

Les types de données primitifs Number, String, Date et Boolean peuvent agir comme des champs de base de données.

Valeurs NULL et non définies

NULL est un littéral. Il est généralement utilisé dans les requêtes de base de données lorsque deux ou plusieurs tables sont jointes.

Ce sont les enregistrements manquants dans la deuxième table qui sont remplis avec une valeur NULL. Ceux. c'est une sorte de sens manquant.

Plus tard, lors du traitement du résultat obtenu, cela doit être pris en compte, car NULL n'est pas zéro, mais le type de données correspondant.

Afin de traiter la valeur, vous devez convertir NULL en un type de données ordinaire pouvant être affiché ou utilisé dans des opérations arithmétiques.

Une valeur NULL peut également être obtenue dans le langage intégré. Vous pouvez définir une variable et lui affecter cette valeur très NULL. Cependant, une telle affectation n'est presque jamais utilisée dans le code du programme.

Ceux. NULL est en fait le type de données obtenu lors de l'utilisation de requêtes. La valeur NULL dans le langage de requête doit être gérée d'une manière spéciale.

A savoir, la comparaison A \u003d NULL ne fonctionnera pas au niveau de la requête, vous devrez utiliser des fonctions spécialisées. Cependant, dans le langage intégré, la comparaison avec une valeur nulle fonctionnera correctement.

Type de données Non défini - ce n'est une valeur vide pour aucun attribut.

Par exemple, si un attribut de référence a un lien vers une autre référence en tant que type de données, la valeur vide de cet attribut ne sera pas égale à Non défini.

Ce type (Undefined) apparaît, en premier lieu, si nous avons une certaine variable et qu'elle n'est pas initialisée (le type de données n'est pas défini).

Deuxième exemple: un type de données non défini est renvoyé par de nombreuses fonctions de langage intégrées lorsqu'une action ne peut pas être effectuée.

Par exemple, rechercher un élément de livre de référence par nom si un livre de référence ne possède pas un tel nom d'élément. Méthode FindByDesign renverra la valeur Indéfini.

Indéfini est un mot-clé, il est surligné en rouge. C'est aussi un littéral, pour écrire Indéfini pas besoin d'utiliser des guillemets, des virgules, des crochets, etc.

S'il y a une liste de documents, et que cette liste est vide (il n'y a pas de lignes, respectivement), alors la ligne courante prendra la valeur Indéfini.

Si l'infobase contient une variable avec un type de données composite, la valeur vide de cette variable sera Indéfini.

Mais si le type de données n'est pas composite, alors la valeur vide correspondra à la valeur vide de ce type (pour une date, il s'agit de la première seconde de la première heure du premier jour du premier mois de la première année).

NULL et Undefined sont à la fois des types de données et des valeurs dans ces types, et il n'y en a qu'un. Pour NULL, c'est NULL, pour Undefined, Undefined.

Type de données Type

L'utilisation principale de ce type de données est de comparer la valeur d'une variable ou d'une propriété de base de données avec un type spécifique.

Ceux. l'algorithme doit comprendre quel type d'un objet donné.

Il est à noter que ce type de données n'a pas de littéral. Nous ne pouvons pas l'écrire comme NULL ou Undefined, mais nous pouvons obtenir une valeur de ce type en utilisant deux fonctions Un typeet TypeZnch.

Afin d'obtenir le type d'un objet (il peut s'agir d'une variable, d'un attribut de base de données ou d'un attribut de formulaire), utilisez la fonction TypeZnch.

Cette fonction reçoit l'objet pour lequel vous souhaitez obtenir le type de données.

En tant que valeur de retour, cette fonction renvoie exactement le type de type type.

À l'avenir, il devrait être comparé à tout type d'intérêt. Par exemple:

IfTypeVal (Element) \u003d Type ("ReferenceLink.Nomenclature") Then
Rapport («Ceci est un produit»);
Fin si;

En conclusion, résumons tout le matériel abordé.

Nous avons examiné les constructions de base du langage 1C embarqué, appris à utiliser des variables et des opérateurs, compris quoi et comment utiliser des procédures et des fonctions. Notez que pratiquement tout le code de notre programme jusqu'à ce point était autosuffisant - nous avons tout écrit nous-mêmes à partir de zéro et avons utilisé au moins certains objets de configuration ou un langage intégré.

Nous explorerons ces objets plus en détail dans le prochain article, alors ne changez pas! ;)

Beaucoup de ceux qui commencent tout juste à apprendre la programmation rencontrent pour la première fois un nouveau type primitif booléen... Il est également appelé différemment type booléen... Ce type est nommé d'après le mathématicien anglais George Boole, qui a étudié des questions de logique mathématique.

Avant de commencer à étudier ce type primitif, nous allons apprendre en général ce que sont les expressions booléennes ou logiques.

Les expressions booléennes sont quelque chose comme une question à laquelle il faut répondre sans ambiguïté, que ce soit oui ou non.

5 < 7 — Да;

5 \u003d 8 - Non;

4\u003e 9 - Non.

Je peux aussi avoir des questions plus complexes:

Bouton enfoncé - oui;

Bouton enfoncé - non;

Les expressions booléennes sont utilisées dans tous les sauts conditionnels:

Si un< Булево выражение1> puis

// les opérateurs

Sinon, si< BooleanExpression2\u003e puis

// les opérateurs

Fin si;

Dans le langage de programmation 1C, une variable avec un type booléen primitif peut être définie explicitement:

A \u003d vérité;

B \u003d faux;

Où True et False sont les seules valeurs que le type booléen primitif peut prendre.

La vérité signifie qu'une déclaration est vraie (Réponse - Oui).

Un mensonge - signifie qu'une déclaration, au contraire, ne correspond pas à la réalité (Réponse - Non).

De plus, les variables de type booléen peuvent être définies à l'aide de n'importe quelle expression logique.
Par exemple:

A \u003d 5< 7 ;

B \u003d 6\u003e 9;

Dans ce cas, la variable A aura la valeur True, et une variable de type B contiendra false;

Dans le langage de programmation 1C, diverses opérations peuvent être effectuées sur des variables de type booléen.

Par exemple:

A \u003d 5< 7 ;

B \u003d 6\u003e 9;

B \u003d A et B;

C \u003d A OU B;

D \u003d pas A;

Il y en a trois - ET, OU et NON.

Les tableaux suivants vous aideront à comprendre la fonctionnalité de ces opérations.

Opération NON

ET B
Vrai Faux
Faux Vrai

Fonctionnement ET

C \u003d A ET B ET B
Vrai Vrai Vrai
Faux Faux Vrai
Faux Vrai Faux
Faux Faux Faux

Opération OU

C \u003d A OU B ET B
Vrai Vrai Vrai
Vrai Faux Vrai
Vrai Vrai Faux
Faux Faux Faux

Est-il possible d'effectuer ces opérations d'affilée?

Oui, vous pouvez, ces opérations seront effectuées de gauche à droite. Et avoir le niveau d'ancienneté suivant:

Premièrement: les opérations entre parenthèses sont effectuées en premier

Deuxièmement: opération NON

Troisième: Opération I

Quatrièmement: Opération OU.

Pour éviter toute confusion dans les opérations, je vous conseille d'utiliser autant que possible des parenthèses.

Par exemple:

A \u003d faux;

B \u003d vérité;

C \u003d faux;

D \u003d A et C ou B;

Dans ce cas, l'opération fonctionnera en premier. ETentre A et C.

Voir tableau A - Faux, DE - Faux, résultat A ETC va Faux.

La prochaine étape consiste à effectuer l'opération OUentre Mensonges(Le résultat de l'opération précédente) et la valeur B, qui Vrai.

Le résultat sera Vrai.

Et si nous avons besoin que l'opération ait lieu en premier OUentre C et B, et alors seulement l'opération ETentre A et ce qui s'est passé, pour cela, vous devez utiliser des parenthèses.

A \u003d faux;

B \u003d vérité;

C \u003d faux;

D \u003d A et (C ou B);

Le résultat sera diamétralement opposé. Pourquoi? Maintenant, nous allons analyser. Grâce aux crochets, l'opération est d'abord effectuée entre C et B, puisque DE - Faux, et B - Vrai, le résultat sera Vrai... Puis entre la valeur de A (qui Faux) et la valeur Vrai(résultat de l'opération précédente) l'opération est effectuée ET... Le résultat sera Faux.

De nombreux programmeurs novices ne comprennent pas entièrement les principes de l'interaction entre les variables booléennes. Seule la pratique peut y contribuer. Et la pratique avec des variables de type booléen suffit dans mon livre de problèmes au livre

Apprenez les bases de la configuration en 1C et apprenez à programmer en 1C: Entreprise à l'aide de mes livres: et "Principes de base du développement en 1C: Taxi"

Apprenez la programmation en 1C en place à partir de mon livre "Programme en 1C en 11 étapes"

  1. Le livre est écrit dans un langage clair et simple - pour un débutant.
  2. Apprenez à comprendre l'architecture 1C;
  3. Commencez à écrire du code en 1C;
  4. Maîtriser les techniques de programmation de base;
  5. Renforcez les connaissances acquises à l'aide d'un livre de problèmes;

Un excellent guide pour développer dans une application gérée 1C, à la fois pour les développeurs novices et les programmeurs expérimentés.

  1. Langage très accessible et compréhensible
  2. Le livre est envoyé par e-mail au format PDF. Peut être ouvert sur n'importe quel appareil!
  3. Comprendre l'idéologie d'une application gérée 1C
  4. Apprenez à développer une application gérée;
  5. Apprenez à développer des formes contrôlées 1C;
  6. Vous serez en mesure de travailler avec les éléments de base et nécessaires des formulaires gérés
  7. La programmation sous application gérée deviendra claire

Code promo de 15% de réduction - 48PVXHeYu


Si cette leçon vous a aidé à résoudre un problème, qu'elle vous a plu ou s'est avérée utile, vous pouvez soutenir mon projet en transférant n'importe quel montant:

vous pouvez payer manuellement:

Yandex.Money - 410012882996301
Argent Web - R955262494655

Rejoignez mes groupes.

En configurant la prochaine intégration de 1C: Trade Management 11 avec un site géré par 1C-Bitrix, j'ai rencontré le problème suivant: les détails avec le type "Boolean" ont été téléchargés sur le site avec le type "String" et avec la valeur "Yes". Par conséquent, les détails standard «Nouveau», «Offre spéciale» et «Bestseller» ne sont plus affichés.

Malheureusement, je n'ai pas trouvé d'autre option pour résoudre le problème du téléchargement sur le site dans 1C: UT. Les améliorations sont minimes.

1. Toutes les valeurs d'attribut de propriété à l'exception des nombres, de la date et de la référence sont déchargées en tant que chaîne de type générique. Faisons un déchargement booléen non pas comme une chaîne, mais comme un Répertoire, pour cela nous trouvons dans le module Général de la configuration "Echange par site" la procédure UnloadMainPropertyAttributesForClassifier (). Ajoutez deux lignes à la condition:

2. Vous devez maintenant télécharger les valeurs possibles. Dans notre cas, ce sera un seul: "Oui" avec l'identifiant "OUI". Ajoutons une condition supplémentaire juste en dessous dans la même procédure:

3. Lors du déchargement d'une propriété d'élément, il est nécessaire que, si la valeur booléenne est true, "YES" soit déchargé. Pour ce faire, dans le même module, recherchez la procédure UnloadNomenclatureProperties () et ajoutez-y quelques lignes:

4. Vous pouvez maintenant enregistrer les modifications et démarrer l'échange de données avec le site. Au cas où, allez dans le menu "Contenu - Propriétés des infoblocs - Catalogues - Catalogue de produits" et vérifiez les paramètres des Propriétés des éléments de type booléen. Leur apparence doit être définie comme "Cases à cocher":

Désormais, "Nouveau", "Offre spéciale" et "Bestseller" sont correctement transférés depuis 1C et affichés sous forme de drapeaux dans la fiche produit:

LA CLOCHE

Il y a ceux qui ont lu cette actualité avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam