Langage d'expression du système de composition de données (1Cv8). Fonctions du langage d'expression du système de composition de données 1s SKD champs de fonctions calculés

CalculerExpression est une fonction ACS assez difficile à comprendre, et les exemples d'application dans les informations de référence sont assez rares. Cet article présente des exemples qui seront certainement utiles à tous les développeurs :

  1. total cumulé en regroupement ;
  2. total cumulé dans un tableau croisé ;
  3. obtenir la valeur précédente ;
  4. Sortie PM sur une seule ligne.

1. Obtention d'un indicateur selon la méthode de la comptabilité d'exercice

Obtenons la quantité de marchandises sous forme de total cumulé au niveau du regroupement. Pour ce faire, créez un champ calculé (voir Figure 1).
Dans l'onglet "Ressources", paramétrez la fonction du champ calculé :
CalculateExpression("Sum(QuantityTurnover)", "Premier", "Actuel")
qui additionnera le nombre de produits du premier enregistrement à celui actuel (voir Figure 2).

Si la quantité totale cumulée d'un article doit être obtenue au niveau des enregistrements détaillés, nous définissons alors la fonction CalculateExpression pour le champ calculé dans l'onglet « Champs calculés » (voir Figure 3).
En fonction du niveau d'obtention du cumul, on crée un regroupement (voir Figure 4) : au niveau ressource - regroupement par marchandises, au niveau télécommande - regroupement des enregistrements détaillés.
Figure 4. Regroupements de rapports avec totaux cumulés

2. Obtenir la valeur de l'indicateur de la ligne précédente

Obtenons le taux de change pour la date et la date précédente. Pour ce faire, créez un champ calculé et écrivez l'expression suivante dans le champ expression (voir Figure 5) :
CalculateExpression("Taux", "Précédent", "Précédent")
qui prendra la valeur précédente du taux de change pour la ligne courante, le dernier paramètre de la fonction limite la réception des données.
Puisque nous travaillons au niveau des enregistrements détaillés, nous allons immédiatement dans l'onglet "Paramètres" et créons un regroupement - enregistrements détaillés.

3. Obtention d'un indicateur sous forme de total cumulé dans un tableau croisé

Obtenons la quantité de marchandises selon la méthode de la comptabilité d'exercice par période. Pour ce faire, créez un champ calculé (voir Figure 1). Sur l'onglet « Ressources », on précise l'expression suivante pour le champ calculé (voir Figure 6) :
CalculateExpression("Sum(QuantityTurnover)", "Période", "Premier", "Actuel")
qui, au niveau du regroupement, calculera la quantité de marchandises dans l'intervalle allant de la première ligne à la ligne actuelle dans le contexte de la période pour chaque article.
Dans l'onglet « Paramètres », créez un tableau avec un regroupement par élément dans une ligne et un regroupement par période dans une colonne (voir Figure 7).

4. Sortie de données tabulaires sur une seule ligne

Les méthodes d'affichage des données tabulaires sur une seule ligne, y compris la méthode utilisant la fonction CalculateExpression, sont abordées dans l'article

Schéma de disposition des données (1C SKD)- un concepteur pratique pour créer des rapports complexes dans les produits logiciels 1C:Enterprise qui contribuent au développement et au suivi de l'automatisation de la production, permettant de les rendre aussi flexibles et beaux que possible en un minimum de temps. Un avantage supplémentaire du schéma de composition des données (1C SKD) est la génération automatique d'un formulaire de rapport contrôlé, et avec le développement ultérieur de ce domaine, il s'agit d'un facteur important lors du choix d'une méthode de développement de rapport. Mais en raison de la complexité de la structure du schéma de composition des données (1C SKD) et du grand nombre de paramètres, cela conduit souvent à un développement du rapport plus long que via le « concepteur de formulaire de sortie ». Par conséquent, un programmeur 1C doit comprendre toutes les subtilités du schéma de composition des données (1C DCS) afin d'accélérer encore le temps de développement pour la génération de rapports.

Examinons les trois premiers onglets du schéma de composition des données (1C SKD) - ensemble de données, connexions d'ensembles de données et champs calculés.

Ensemble de données dans 1C SKD

L'ensemble de données inclut la possibilité de créer trois objets - une requête, un objet et une union, examinons chacun d'eux de plus près :

Il s'agit d'une requête standard générée à l'aide du bouton Query Builder. Si l'indicateur de remplissage automatique est activé, tous les détails sélectionnés seront automatiquement inclus dans les champs de l'ensemble de données. Il est également possible de personnaliser le remplissage des champs de la requête dans l'onglet Composition des données, où se trouvent trois onglets :

Tableaux, ici sont sélectionnées les tables qui participeront à la génération du rapport, généralement les données par défaut sont sélectionnées, puisque sur l'onglet Tables et Champs nous avons déjà sélectionné les documents, répertoires, registres dont nous avons besoin...

Champs, ici nous sélectionnons les objets qui doivent être inclus dans le rapport, le drapeau enfants indique s'il y aura ou non des éléments enfants accessibles pour l'objet, il est logique que pour les données de chaîne, numériques et similaires, il ne sera pas possible de définir le drapeau à True.

Conditions, nous sélectionnons ici les objets qui peuvent être utilisés sous conditions dans le système de contrôle d'accès.

Une partie du travail est effectuée dans le schéma de composition des données, et une autre partie est effectuée par programme ; regardons un exemple simple :

Tout d'abord, nous allons créer un schéma de mise en page pour la mise en page des données du document et l'appeler SKD (par exemple : 1C SKD), nous y créons un objet d'ensemble de données, puis nous remplissons les champs, par exemple, nous avons un document avec une partie tabulaire des marchandises avec des détails - nomenclature, quantité et prix.

Ajoutons trois champs et remplissons chaque colonne avec le nom des détails, les colonnes restantes seront remplies automatiquement :

Créons un bouton sur le formulaire de document et décrivons le mécanisme de fonctionnement dans les formulaires contrôlés :

&SurClient

Procédure Imprimer()

NotreRapport = PrintOnServer(); // appelle la fonction sur le serveur

NotreReport.Show(); //afficher le rapport généré

Fin de la procédure

&Sur le serveur

Fonction PrintOnServer()

DocumentObject = FormAttributeValue("Objet");

//nous plaçons la partie tabulaire Produits dans une structure avec le nom ProductsSKD de la même manière que nous avons indiqué dans le SKD lui-même le nom de l'objet contenant les données

DataSet = nouvelle structure ;

DataSet.Insert("ProductsSKD", DocumentObject.Products);

//nous obtenons notre mise en page et définissons les paramètres par défaut afin que tous les paramètres de sortie du rapport soient extraits de notre mise en page

OurLayout = DocumentObject.GetLayout("SKD");

Paramètres = OurLayout.DefaultSettings ;

//créer une mise en page des données avec nos paramètres

LayoutLinker = newDataLayoutLayoutLinker ;

LayoutLayout = LayoutComposer.Execute(OurLayout, Paramètres);

//effectuer une composition de données avec notre ensemble de données

DataCompositionProcessor = newDataCompositionProcessor ;

DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

//Nous créons une feuille de calcul et y affichons notre rapport

ReportDocument = Nouveau TabularDocument ;

OutputProcessor = Nouveau OutputProcessorDataCompositionResultInTabularDocument ;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

Retourner le rapport de document ;

FinFonction

Si vous le souhaitez, vous pouvez obtenir des zones de n'importe quelle autre mise en page et également les afficher dans ce rapport, par exemple, nous avons une mise en page standard pour générer un ordre de paiement et l'en-tête y est très bien créé, alors, pour ne pas faire travail inutile, nous allons d'abord obtenir la mise en page, afficher l'en-tête, puis nous générerons et afficherons notre rapport sur le système de contrôle d'accès.

À PROPOS unification

Nous pouvons y placer nos requêtes et nos objets, mais contrairement à une connexion, cela ajoute simplement des tables les unes aux autres, c'est-à-dire que si nous connectons deux tables identiques, nous nous retrouverons avec une seule, et une fois combinée, elle doublera, regardons sur un exemple simple :

Nous avons des tableaux :

Dès communication, nous recevrons :

Et une fois combinés :

Envisageons maintenant de remplir les colonnes des ensembles de données (nous en sauterons certaines, car elles sont liées à d'autres onglets ; nous y reviendrons dans de prochains articles) :

- champ, indiquez le nom général de l'attribut ;

­­- chemin, indiquez le nom des coordonnées par lesquelles nous le contacterons dans le système de contrôle d'accès, par exemple, dans Champs calculés;

- titre, indiquez le nom de l'attribut qui sera affiché dans le rapport ;

- limitation du champ, indiquer la disponibilité de cette condition requise;

- restriction des détails, nous indiquons la disponibilité des éléments enfants, il est important que si la disponibilité des détails est indiquée, alors le champ lui-même sera disponible, peut-être que cette mécanique sera modifiée dans les versions futures ;

- expression par laquelle la représentation du champ est calculée, il est pratique à utiliser lorsque nous devons modifier légèrement la sortie des détails, par exemple, nous avons besoin après le nom nomenclature a été affiché action, où il se trouve, puis remplissez ce qui suit : Article + « est dans l'entrepôt » + Entrepôt. Je répète que l'accès aux coordonnées s'effectue via le nom indiqué dans la colonne chemin;

- ordre des expressions, un mécanisme pratique pour configurer l'ordre des rapports, où la condition peut être définie manuellement, similaire au point précédent, mais comme le montre la pratique, ce mécanisme ne fonctionne souvent pas comme nous le souhaiterions, et je vous conseille d'utiliser le tri standard ;

- type de valeur, indique le type de valeur de l'attribut ; celui-ci doit être renseigné si vous utilisez le champ suivant ;

- valeurs disponibles, ne fonctionne que lorsqu'il est plein type de valeur, ouvrez le formulaire et dans la colonne Signification nous indiquons l'élément qui doit être modifié, selon le type, il peut s'agir d'objets prédéfinis ou numériques, par exemple, les détails ont des valeurs simples, en présentation Nous indiquons ce vers quoi nous devons changer, un exemple de type booléen :

- décor– les paramètres de format de champ standard, similaires aux paramètres des formulaires gérés, vous permettent de personnaliser plus précisément et plus joliment la sortie de certains détails.

Connexions d'ensembles de données dans 1C SKD

Ici, il est installé uniquement joint gauche, sur un principe similaire à Connexions dans les demandes, dans source de communication spécifiez la table principale pour la connexion, dans destinataire supplémentaire. DANS source d'expression Et récepteur d'expression Nous indiquons les détails par lesquels la communication aura lieu. Nous examinerons les colonnes restantes plus en détail lorsque nous examinerons l'onglet. Possibilités. S'il n'y a pas de connexion supplémentaire avec les paramètres, il est alors recommandé d'effectuer la connexion dans la demande, cela accélérera le rapport.

La bonne utilisation d'un schéma de composition de données (DCS) permet de :

  • réduire considérablement le temps requis pour élaborer un rapport ;
  • éliminer le besoin de créer un gestionnaire de formulaire géré ;
  • obtenez un beau résultat avec possibilité de personnalisation supplémentaire par l'utilisateur.

Mais tous les développeurs ne tirent pas le meilleur parti des capacités du système, car tous ses paramètres ne sont pas évidents et intuitifs. En particulier, beaucoup de gens savent qu'il existe des champs calculés dans 1C SKD, mais ils ne comprennent pas pleinement la portée de leur utilisation et les méthodes de travail avec eux.

Qu'est-ce qu'un champ calculé

Dans la plupart des cas, la source de données dans le diagramme de présentation est une requête. En principe, dans la requête elle-même, vous pouvez déjà utiliser diverses formules, constructions et expressions. Une question naturelle se pose : pourquoi avons-nous besoin de fonctionnalités dupliquées ?

Le fait est que le système de contrôle d'accès est bien plus que simplement afficher le résultat d'une requête, et cela est clairement visible sur le formulaire de création de diagramme (Fig. 1).

Les champs calculés vous permettent d'effectuer certaines actions avec l'ensemble de données généré :

  • Génère un tableau de données reçues par une requête dans une cellule spécifique, combinant plusieurs lignes en une seule ;
  • Accéder aux fonctions d'export du module général ;
  • Exécutez les différentes expressions disponibles pour le langage de mise en page et utilisez les fonctions spéciales EvaluateExpression.

Passons en revue cette liste.

Tableau de valeurs dans une cellule

Simulons une situation où il est nécessaire de recevoir tous les numéros de documents de réception pour une contrepartie dans une cellule séparée :


Ainsi, nous avons créé un champ de calcul supplémentaire dans notre schéma ;


Comme vous pouvez le voir dans l'exemple ci-dessus, il n'y a aucune difficulté à ajouter et à traiter des champs calculés. Nous avons utilisé deux fonctions : Array() et ConnectRows().

Quelques mots sur ce dernier. En plus du premier paramètre indiquant l'identifiant du tableau, des valeurs ou une valeur, deux autres peuvent y être définis :

  1. Séparateur d'éléments – indique quel caractère séparera un élément du tableau ou une ligne d'un tableau de valeurs d'un autre (dans notre cas, nous avons omis ce paramètre et un saut de ligne a été attribué par défaut) ;
  2. Séparateur de colonnes – un caractère utilisé pour séparer les colonnes d'un tableau de valeurs (le point-virgule est utilisé par défaut).

Accéder aux fonctions d'export d'un module commun

Les fonctions d'un module commun peuvent servir de source de données pour remplir un champ calculé.

Quelques points importants :

  • La fonction doit être exportable ;
  • Si une fonction se trouve dans un module commun avec l'attribut « Global », elle est appelée directement par son nom, sinon la fonction doit être appelée selon le schéma « Nom du module partagé ». "Nom de la fonction à appeler."

A titre d'exemple d'utilisation, nous prendrons la même demande de justificatifs de réception et l'afficherons dans une colonne séparée. Nous ne décrirons pas la requête elle-même ; passons directement aux champs calculés :


Ainsi, nous voyons que presque n'importe quel processeur de données peut être initialisé à partir du système de contrôle d'accès, ce qui élargit considérablement les possibilités d'utilisation du système.

Expressions du langage de mise en page

Très souvent, dans le travail d'un développeur, une situation se présente lorsqu'il est nécessaire d'afficher le résultat de la division dans le champ ACS :

  1. Calculer le coût moyen de l'article ;
  2. Toutes sortes d'intérêts ;
  3. Calculs des gains moyens, etc.

Pour éviter des problèmes, il est conseillé dans ces cas de saisir un test de division par 0 dans le champ calculé.

Cela peut être fait en utilisant la construction « Choix Quand….Puis… Sinon… Fin ».

Pour finir, quelques mots sur la fonction relativement nouvelle CalculateExpression(). Avec son aide, vous pouvez notamment calculer les écarts de coût entre les lignes actuelles et précédentes, le solde cumulé, etc.

Disons que vous pouvez obtenir la somme du document à partir de la ligne précédente de notre demande en spécifiant la valeur Calculer l'expression ("Somme du document", "Somme précédente") dans le champ "Expression".

1. Calculer (Évaluer)- est destiné à évaluer une expression dans le contexte d'un certain regroupement. La fonction est utilisée pour la compatibilité avec les versions précédentes de la plateforme. Il est recommandé d'utiliser plutôt la fonction CalculateExpression.

Syntaxe:
Calculer (Expression, Regroupement, Type de calcul)

Possibilités :

  • Expression(Doubler). Contient une expression calculée ;
  • Regroupement(Doubler). Contient le nom du regroupement dans le contexte duquel l'expression doit être évaluée. Si une chaîne vide est utilisée comme nom de regroupement, le calcul sera effectué dans le contexte du regroupement actuel. Si la chaîne GrandTotal est utilisée comme nom de groupe, le calcul sera effectué dans le contexte du total général. Dans le cas contraire, le calcul sera effectué dans le contexte du groupe parent du même nom.
    Par exemple:
    Somme(Sales.SumTurnover) / Calculer("Somme(Sales.SumTurnover)", "Total").
    Dans cet exemple, le résultat sera le rapport entre le montant du champ « Sales.AmountTurnover » de l'enregistrement de regroupement et le montant du même champ dans l'ensemble de la mise en page.
  • Type de calcul(Doubler). Si ce paramètre est défini sur "TotalTotal", l'expression sera calculée pour tous les enregistrements de regroupement. Si la valeur du paramètre est "Regroupement", les valeurs seront calculées pour l'enregistrement du groupe de regroupement en cours.
2. Évaluer l'expression (EvalExpression) - est destiné à évaluer une expression dans le contexte d'un certain regroupement. La fonction prend en compte la sélection des regroupements, mais ne prend pas en compte les sélections hiérarchiques. La fonction ne peut pas être appliquée à un regroupement dans la sélection de groupe de ce regroupement.

Syntaxe:
CalculateExpression (Expression, Regroupement, CalculationType, Début, Fin, Tri, HierarchicalSort, ProcessingIdenticalOrderValues)

Possibilités :

  • Expression(Doubler). Contient une expression calculée ;
  • Regroupement(Doubler). Contient le nom du regroupement dans le contexte duquel l'expression doit être évaluée. Si une chaîne vide est utilisée comme nom de regroupement, le calcul sera effectué dans le contexte du regroupement actuel. Si la chaîne GrandTotal est utilisée comme nom de groupe, le calcul sera effectué dans le contexte du total général. Dans le cas contraire, le calcul sera effectué dans le contexte du regroupement parent portant ce nom ;
  • Type de calcul(Doubler). Si ce paramètre est défini sur "TotalTotal", l'expression sera calculée pour tous les enregistrements de regroupement. Si la valeur du paramètre est "Regroupement", les valeurs seront calculées pour l'enregistrement du groupe de regroupement en cours. Si le paramètre est défini sur « Regroupement hors ressource », alors lors du calcul de la fonction pour un enregistrement de groupe par ressource, l'expression sera évaluée pour le premier enregistrement de groupe du regroupement d'origine. Lors de l'évaluation de la fonction CalculateExpression avec la valeur « GroupingNonResource » pour les enregistrements de groupe qui ne sont pas des regroupements par ressource, la fonction est évaluée de la même manière qu'elle le serait avec la valeur du paramètre « Grouping ». Le générateur de mise en page de composition de données, lors de la génération d'une mise en page de composition de données lors de la sortie d'un champ - une ressource par laquelle le regroupement est effectué, vers la mise en page, génère dans la mise en page une expression calculée à l'aide de la fonction CalculateExpression avec le paramètre "GroupingNon-Resource" spécifié. Pour les autres ressources regroupées par ressource, les expressions de ressources normales sont renvoyées. Si le paramètre est défini sur "Hiérarchie", alors l'expression doit être évaluée pour l'enregistrement hiérarchique parent, s'il existe, et pour l'ensemble du regroupement, s'il n'y a pas d'enregistrement hiérarchique parent. Le générateur de présentation, lors de la génération d'une expression pour le champ % dans le groupe hiérarchique, génère une expression contenant la relation entre l'expression de ressource et la fonction CalculateExpression pour l'expression de ressource en cours de calcul pour le regroupement actuel avec le type de calcul Hiérarchie.
  • Commencer. Indique à partir de quel enregistrement le fragment doit commencer, dans lequel les fonctions d'expression d'agrégat doivent être calculées et à partir de quel enregistrement obtenir les valeurs de champ en dehors des fonctions d'agrégat. Une chaîne contenant l'un des éléments suivants :
    • "D'abord" Il est nécessaire d'obtenir le premier enregistrement de regroupement. Après le mot entre parenthèses, vous pouvez préciser une expression dont le résultat sera utilisé comme décalage depuis le début du regroupement. La valeur résultante doit être un entier supérieur à zéro. Par exemple, First(3) – reçoit le troisième enregistrement depuis le début du regroupement. Si le premier enregistrement est en dehors du regroupement, alors on considère qu’il n’y a aucun enregistrement. Par exemple, s'il y a 3 enregistrements et que vous souhaitez obtenir First(4), alors on considère qu'il n'y a aucun enregistrement.
    • "Dernier" Vous devez obtenir le dernier enregistrement de regroupement. Après le mot entre parenthèses, vous pouvez spécifier une expression dont le résultat sera utilisé comme décalage par rapport à la fin du regroupement. La valeur résultante doit être un entier supérieur à zéro. Par exemple, Last(3) – reçoit le troisième enregistrement de la fin du groupe. Si le dernier enregistrement est en dehors du regroupement, alors on considère qu'il n'y a aucun enregistrement. Par exemple, s'il y a 3 enregistrements et que vous souhaitez obtenir Last(4), alors on considère qu'il n'y a aucun enregistrement.
    • "Précédent" Vous devez obtenir l'enregistrement de regroupement précédent. Après le mot entre parenthèses, vous pouvez spécifier une expression dont le résultat sera utilisé comme décalage par rapport à l'enregistrement de regroupement actuel. Par exemple, Précédent(2) – obtient le précédent à partir de l'enregistrement précédent. Si l'enregistrement précédent est en dehors du regroupement (par exemple, le deuxième enregistrement de regroupement nécessite l'obtention de Précédent(3)), alors le premier enregistrement de regroupement est obtenu. Lors de la réception de l'enregistrement précédent pour le total de regroupement, le premier enregistrement est obtenu.
    • "Suivant" Vous devez obtenir le prochain enregistrement de regroupement. Après le mot entre parenthèses, vous pouvez spécifier une expression dont le résultat sera utilisé comme décalage vers l'avant par rapport à l'enregistrement de regroupement actuel. Par exemple, Next(2) – obtenir le suivant à partir de l'enregistrement suivant. Si l'enregistrement suivant dépasse le regroupement, alors on considère qu'il n'y a aucun enregistrement. Par exemple, s'il y a 3 entrées et que la troisième entrée reçoit Next, alors on considère qu'il n'y a aucune entrée. Lorsque l'enregistrement suivant est reçu pour le total de regroupement, on considère qu'il n'y a pas d'enregistrement.
    • "Actuel". Vous devez obtenir l'enregistrement actuel. Lors de la récupération d'un total de regroupement, le premier enregistrement est obtenu.
    • "Valeur limite". La nécessité d'obtenir un enregistrement par la valeur spécifiée. Après le mot LimitingValue entre parenthèses, vous devez indiquer l'expression avec la valeur dont vous souhaitez démarrer le fragment, le premier champ de tri. Le premier enregistrement dont la valeur du champ de classement est supérieure ou égale à la valeur spécifiée sera renvoyé en tant qu'enregistrement. Par exemple, si le champ Période est utilisé comme champ de tri et qu'il a les valeurs 01/01/2010, 01/02/2010, 01/03/2010 et que vous souhaitez obtenir la valeur LimitingValue(DateTime(2010 , 1, 15)), on obtient alors un enregistrement avec la date 02/01. 2010.
  • Fin. Indique vers quel enregistrement le fragment doit être continué, dans lequel l'expression globale doit être calculée. Une chaîne contenant l'un des éléments suivants :
    • "D'abord"
    • "Dernier"
    • "Précédent"
    • "Suivant"
    • "Actuel".
    • "Valeur limite".
  • Tri. Chaîne qui répertorie les expressions, séparées par des virgules, dans le sens dans lesquelles la séquence doit être ordonnée. S'il n'est pas spécifié, le classement est effectué de la même manière que pour le regroupement pour lequel l'expression est évaluée. Après chaque expression, vous pouvez spécifier le mot-clé Ascending, pour trier par ordre croissant, Descending, pour trier par ordre décroissant, Auto-Ordering, pour trier les champs de référence selon les champs par lesquels vous souhaitez trier l'objet référencé. Le mot Ordre automatique peut être utilisé à la fois avec le mot Ascendant et le mot Descendant.
  • Tri hiérarchique. Semblable au tri. Utilisé pour organiser les enregistrements hiérarchiques. S’il n’est pas spécifié, le compositeur de mise en page génère l’ordre selon l’ordre spécifié dans le paramètre Sort.
  • Traitement des mêmes valeurs de commande. Une chaîne contenant l'un des éléments suivants :
    • « Ensemble » signifie qu'une séquence d'enregistrements ordonnés est utilisée pour déterminer les enregistrements précédents et suivants ;
    • « Séparément » signifie que les enregistrements précédents et suivants sont déterminés en fonction des valeurs des expressions de classement ;
    Par exemple, si la séquence résultante est classée par date :
    1. 01 janvier 2001 Ivanov M. 10
    2. 2 janvier 2001 Petrov S. 20
    3. 2 janvier 2001 Sidorov R. 30
    4. 3 janvier 2001 Petrov S. 40
    Lors de l'utilisation du traitement de valeurs identiques de l'ordre "Séparément", le précédent pour l'enregistrement 3 sera l'enregistrement 2, et lors de l'utilisation de "Ensemble" - l'enregistrement 1. Et le fragment de l'enregistrement actuel pour l'enregistrement 2 pour "Séparément" sera l'enregistrement 2, et pour "Ensemble" - les enregistrements 2 et 3. Ainsi, le total pour l'enregistrement actuel pour "Séparément" sera de 20 et pour "Ensemble" - 50. Lorsque "Ensemble" est spécifié dans les champs Début et Paramètres de fin, vous ne pouvez pas spécifier de décalage pour les positions « Premier », « Dernier », « Précédent », « Suivant ». La valeur par défaut est "Séparé".
Exemple:
Obtention du rapport entre le montant du champ "Sales.AmountTurnover" d'un enregistrement de regroupement et le montant du même champ dans l'ensemble du layout :
Somme(Sales.SumTurnover) / CalculateExpression("Sum(Sales.SumTurnover)", "Total").

Cet exemple calcule la valeur de la hiérarchie actuelle :
Choix
Lorsque Niveau() > 0
Puis EvaluateExpression("Référence", "Hiérarchie")
Sinon nul
Fin

Remarques:
La fonction prend en compte la sélection des regroupements, mais ne prend pas en compte les sélections hiérarchiques. La fonction ne peut pas être appliquée à un regroupement dans la sélection de groupe de ce regroupement. Par exemple, lors de la sélection du regroupement Nomenclature, vous ne pouvez pas utiliser l'expression CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000 . Mais une telle expression peut être utilisée en sélection hiérarchique. Si l'enregistrement de fin précède l'enregistrement de début, on considère qu'il n'y a aucun enregistrement pour calculer les données détaillées et calculer les fonctions d'agrégation. Lors du calcul d'expressions d'intervalle pour un total général (le paramètre de regroupement est défini sur « GrossTotal »), il est supposé qu'il n'existe aucun enregistrement pour calculer les données détaillées et calculer les fonctions d'agrégation. Lors de la génération d'une expression pour la fonction CalculateExpression, le compositeur de mise en page, si l'expression de tri contient des champs qui ne peuvent pas être utilisés dans le regroupement, remplace la fonction CalculateExpression par NULL.

3. Évaluer l'expression avec un tableau de groupe (EvalExpression avec un tableau de groupe) - la fonction renvoie un tableau dont chaque élément contient le résultat du calcul d'une expression de regroupement par le champ spécifié.

Syntaxe:
CalculateExpressionWithGroupArray (Expression, GroupFieldExpressions, SelectRecords, SelectGroups)

Possibilités :

  • Expression(Chaîne) - l'expression à évaluer. Par exemple, « Montant (AmountTurnover) » ;
  • Groupes d'expressions de champs
  • Sélection des enregistrements
  • Sélection de regroupements- sélection appliquée aux enregistrements de groupe. Par exemple : "Montant (AmountTurnover) > &Paramètre1".
Exemple:
Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty"));


Le générateur de mise en page, lors de la génération d'expressions pour l'affichage d'un champ personnalisé dont l'expression contient uniquement la fonction CalculateArrayWithGroup, génère l'expression d'affichage de sorte que les données affichées par les vues et les données soient ordonnées.
Par exemple, pour un champ personnalisé avec l'expression :
CalculateExpressionWithGroupArray("Montant(AmountTurnover)", "Contrepartie")
Le générateur de mise en page générera l'expression suivante pour la sortie :
ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. Calculer l'expression avec GroupValueTable (EvalExpressionWithGroupValueTable) - la fonction renvoie un tableau de valeurs dont chaque élément contient le résultat du calcul d'une expression de regroupement par le champ spécifié.

Syntaxe:
CalculateExpressionWithGroupValueTable (Expression, Expressions GroupField, Sélection d'enregistrements, Sélection de groupe)

Possibilités :

  • Expression(Chaîne) - l'expression à évaluer. Une ligne peut contenir plusieurs expressions séparées par des virgules. Après chaque expression, il peut y avoir un mot-clé facultatif AS et le nom de la colonne de la table de valeurs. Par exemple : « Contrepartie, montant (AmountTurnover) en tant que volume des ventes ».
  • Groupes d'expressions de champs- des expressions de champs de regroupement, séparées par des virgules. Par exemple, « Contrepartie, Partie » ;
  • Sélection des enregistrements- une expression appliquée aux enregistrements de détail. Par exemple, « Indicateur de suppression = Faux ». Si ce paramètre utilise une fonction d'agrégation, une erreur se produira lors de la composition des données ;
  • Sélection de regroupements- sélection appliquée aux enregistrements de groupe. Par exemple : "Montant (AmountTurnover) > &Paramètre1".
Exemple:
Calculer l'expression avec le tableau de regroupement des valeurs ("Compte AS Contrepartie, Montant (Montant Chiffre d'affaires) AS Volume des ventes", "Compte")

Le résultat de cette fonction sera un tableau de valeurs avec des colonnes Contrepartie et Volume des ventes, qui contiendra les contreparties avec leurs volumes de ventes.
Le compositeur de mise en page, lors de la génération d'une mise en page, convertit les paramètres de fonction en termes de champs de mise en page de composition de données. Par exemple, le champ Compte sera converti en DataSet.Account.
Par exemple, un champ personnalisé avec l'expression :
CalculateExpressionWithGroupValueTable("Compte, Montant(AmountTurnover)", "Compte")
Le générateur de mise en page générera l'expression suivante pour la sortie :
ConnectRows(GetPart(Order(CalculateExpressionWithGroupValueTable("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "DataSet.Account"), "5, 1, 3" ), "2, 4"))

5. Niveau - la fonction est conçue pour obtenir le niveau d'enregistrement actuel.

Syntaxe:
Niveau()

Exemple:
Niveau()

6. Numéro de séquence - obtenez le prochain numéro de série.

Syntaxe:
NuméroParCommande()

Exemple:
NuméroParCommande()

7. Numéro de séquence dans le groupe - renvoie le numéro de séquence suivant dans le regroupement actuel.

Exemple:
NuméroParCommandeInGroup()

8. Formater - récupère une chaîne formatée de la valeur transmise.

Syntaxe:
Format(Valeur, FormatChaîne)

Possibilités :

  • Signification- l'expression à formater ;
  • Chaîne de format- la chaîne de format est définie conformément à la chaîne de format 1C:Enterprise.
Exemple:
Format(Factures.Doc Montant, "NPV=2")

9. Début de la période

Syntaxe:
Période de début (Date, Type de période)

Possibilités :

  • date(Date de). Date spécifiée ;
  • Type de période
Exemple:
PériodeDébut(DateHeure(2002, 10, 12, 10, 15, 34), "Mois")
Résultat : 10/01/2002 0:00:00

10. Fin de période - la fonction est conçue pour sélectionner une date précise à partir d'une date donnée.

Syntaxe:
FinPériode(Date, TypePériode)

Possibilités :

  • date(Date de). Date spécifiée ;
  • Type de période(Doubler). Contient l’une des valeurs suivantes : Minute ; Heure; Jour; Une semaine; Mois; Quart; Année; Décennie; Semestre.
Exemple:
FinPériode(DateHeure(2002, 10, 12, 10, 15, 34), "Semaine")
Résultat : 13/10/2002 23:59:59

11. AddKDate (DateAjouter) - la fonction est conçue pour ajouter une certaine valeur à la date.

Syntaxe:
AddToDate (Expression, IncrementType, Magnitude)

Possibilités :

  • Expression(Date de). Date originale ;
  • TypeGrossissement(Doubler). Contient l’une des valeurs suivantes : Minute ; Heure; Jour; Une semaine; Mois; Quart; Année; Décennie; Semestre.
  • Ordre de grandeur(Nombre). De combien la date doit être augmentée, la partie fractionnaire est ignorée.
Exemple:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mois", 1)
Résultat : 12/11/2002 10:15:34

12. Différence de date - la fonction est conçue pour obtenir la différence entre deux dates.

Syntaxe:
DateDifférence(Expression1, Expression2, TypeDifférence)

Possibilités :

  • Expression1(Date de). Date soustraite ;
  • Expression2(Date de). Date originale ;
  • TypeDifférence(Doubler). Contient l’une des valeurs : Second ; Minute; Heure; Jour; Mois; Quart; Année.
Exemple:
DATEDIFFÉRENCE(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), "JOUR")
Résultat : 2

13. Sous-chaîne - cette fonction est conçue pour extraire une sous-chaîne d'une chaîne.

Syntaxe:
Sous-chaîne (Chaîne, Position, Longueur)

Possibilités :

  • Doubler(Doubler). La chaîne à partir de laquelle la sous-chaîne est extraite ;
  • Position(Nombre). La position du caractère à partir duquel commence la sous-chaîne à extraire de la chaîne ;
  • Longueur(Nombre). Longueur de la sous-chaîne allouée.
Exemple:
SUBSTRING(Comptes.Adresse, 1, 4)

14. Longueur de chaîne - la fonction est conçue pour déterminer la longueur d'une chaîne.

Syntaxe:
ChaîneLongueur(Chaîne)

Paramètre :

  • Doubler(Doubler). Une chaîne dont la longueur est spécifiée.
Exemple:
Ligne (Contreparties.Adresse)

15. Année- cette fonction est conçue pour extraire l'année d'une valeur de type Date.

Syntaxe:
Année (Date)

Paramètre :

  • date(Date de). La date à laquelle l'année est déterminée.
Exemple:
ANNÉE (Dépense.Date)

16. Trimestre - cette fonction est conçue pour extraire le numéro du trimestre d'une valeur de type Date. Le nombre de quarts varie normalement de 1 à 4.

Syntaxe:
Trimestre (Date)

Paramètre :

  • date(Date de). La date à laquelle le trimestre est déterminé
Exemple:
TRIMESTRE (Dépense.Date)

17. Mois - cette fonction est conçue pour extraire le numéro du mois d'une valeur de type Date. Le numéro du mois varie normalement de 1 à 12.

Syntaxe:
Mois (Date)

Paramètre :

  • date(Date de). La date à laquelle le mois est déterminé.
Exemple:
MOIS(Dépense.Date)

18. Jour de l'année (DayOfYear) - cette fonction est conçue pour obtenir le jour de l'année à partir d'une valeur de type Date. Le jour de l'année varie normalement de 1 à 365 (366).

Syntaxe:
Jour de l'année (Date)

Paramètre :

  • date(Date de). La date à laquelle le jour de l'année est déterminé.
Exemple:
ANNÉEJOUR(DépenseCompte.Date)

19. Jour- cette fonction est conçue pour obtenir le jour du mois à partir d'une valeur de type Date. Le jour du mois va normalement de 1 à 31.

Syntaxe:
Jour(Date)

Paramètre :

  • date(Date de). La date à laquelle le jour du mois est déterminé.
Exemple:
JOUR(Dépense.Date)

20. Semaine - cette fonction est conçue pour obtenir le numéro de semaine de l'année à partir d'une valeur de type Date. Les semaines de l'année sont numérotées à partir de 1.

Syntaxe:
Semaine (Date)

Paramètre :

  • date(Date de). Date à laquelle les numéros de semaine sont déterminés.
Exemple:
SEMAINE(Dépense.Date)

21. Jour de la semaine - cette fonction est conçue pour obtenir le jour de la semaine à partir d'une valeur de type Date. Le jour normal de la semaine va de 1 (lundi) à 7 (dimanche).

Syntaxe:
Jour de la semaine (Date)

Paramètre :

  • date(Date de). La date à laquelle le jour de la semaine est déterminé.
Exemple:
JOUR DE LA SEMAINE (Date de la facture de dépenses)

22. Heure- cette fonction est conçue pour obtenir l'heure du jour à partir d'une valeur de type Date. L'heure du jour varie de 0 à 23.

Syntaxe:
Heure (Date)

Paramètre :

  • date(Date de). La date à laquelle l'heure du jour est déterminée.
Exemple:
HEURE(Dépense.Date)

23. Minutes - cette fonction est conçue pour obtenir la minute de l'heure à partir d'une valeur de type Date. Les minutes de l'heure vont de 0 à 59.

Syntaxe:
Minutes (Date)

Paramètre :

  • date(Date de). La date à laquelle la minute de l'heure est déterminée.
Exemple:
MINUTE (Dépense.Date)

24. Deuxième - cette fonction est conçue pour obtenir la seconde d'une minute à partir d'une valeur de type Date. La seconde d'une minute va de 0 à 59.

Syntaxe:
Deuxième (Date)

Paramètre :

  • date(Date de). La date à laquelle les secondes de la minute sont déterminées.
Exemple:
DEUXIÈME(Dépense.Date)

25. Casting - cette fonction est conçue pour extraire un type d'une expression pouvant contenir un type composé. Si l'expression contient un type autre que le type requis, NULL sera renvoyé.

Syntaxe:
Express(Expression, TypeIndication)

Possibilités :

  • Expression- expression à convertir ;
  • Type Indication(Doubler). Contient une chaîne de type. Par exemple, "Nombre", "Chaîne", etc. En plus des types primitifs, cette ligne peut contenir le nom de la table. Dans ce cas, une tentative sera faite pour exprimer une référence au tableau spécifié.
Exemple:
Express(Data.Props1, "Nombre(10,3)")

26. EstNull (EstNull) - cette fonction renvoie la valeur du deuxième paramètre si la valeur du premier paramètre est NULL. Sinon, la valeur du premier paramètre sera renvoyée.

Syntaxe:
EstNull(Expression1, Expression2)

Possibilités :

  • Expression1- valeur à vérifier ;
  • Expression2- valeur de retour si Expression1 est NULL.
Exemple:
OuiNULL(Montant(Sales.AmountTurnover), 0)

27.ACos- calcule l'arc cosinus en radians.

Syntaxe:
ACos(Expression)

Paramètre :

  • Expression(Nombre). La valeur du cosinus (dans la plage -1 ... 1) par laquelle l'angle est déterminé.
28.ASin- calcule l'arc sinus en radians.

Syntaxe:
ASin(Expression)

Paramètre :

  • Expression(Nombre). La valeur sinusoïdale (dans la plage -1 ... 1) par laquelle l'angle est déterminé.
29.ATan- calcule l'arctangente en radians.

Syntaxe:
ATan(Expression)

Paramètre :

  • Expression(Nombre). La valeur de la tangente par laquelle l'angle est déterminé.
30.Cos- calcule le cosinus.

Syntaxe:
Cos(Expression)

Paramètre :

  • Expression
31. Expérience- élever le nombre e à une puissance.

Syntaxe:
Exp(Expression)

Paramètre :

  • Expression(Nombre). La signification du diplôme.
32.Journal- calcule le logarithme népérien.

Syntaxe:
Journal (expression)

Paramètre :

  • Expression
33.Journal10- calcule le logarithme de X en base 10.

Syntaxe:
Journal10 (expression)

Paramètre :

  • Expression(Nombre). Le nombre d'origine est supérieur à 0.
34. Pouvoir- exponentiation.

Syntaxe:
Puissance (base, indicateur)

Possibilités :

  • Base(Nombre). La base de l'opération d'exponentiation.
  • Indice(Nombre). Exposant.
35. Péché- calcule le sinus.

Syntaxe:
Péché (expression)

Paramètre :

  • Expression(Nombre). Spécifié en radians.
36. SQL- calcule la racine carrée.

Syntaxe:
SQL (expression)

Paramètre :

  • Expression(Nombre). Nombre non négatif.
37. bronzage- calcule la tangente.

Syntaxe:
Bronzage (expression)

Paramètre :

  • Expression(Nombre). La valeur sinusoïdale par laquelle l'angle est déterminé.
38. Rond- arrondit le nombre d'origine à la profondeur de bits requise. Le mode d'arrondi est standard (1,5 comme 2).

Syntaxe:
Env (Expression, Profondeur de bits)

Possibilités :

  • Expression(Nombre). Numéro d'origine ;
  • Peu profond(Nombre). Le nombre de décimales à arrondir.
39. Int- coupe la partie fractionnaire d'un nombre.

Syntaxe:
Objet (Expression)

Paramètre :

  • Expression(Nombre). Un nombre fractionnaire.
40. Fonctions des modules communs

Une expression de moteur de composition de données peut contenir des appels à des fonctions de modules de configuration communs globaux. Aucune syntaxe supplémentaire n'est requise pour appeler de telles fonctions.

Exemple:
Nom abrégé (Documents.Link, Documents.Date, Documents.Number)

Dans cet exemple, la fonction "AbbreviatedName" sera appelée depuis le module de configuration générale.
Notez que l'utilisation des fonctions communes du module n'est autorisée que si le paramètre approprié du processeur de composition de données est spécifié.
De plus, les fonctions des modules communs ne peuvent pas être utilisées dans les expressions de champs personnalisés.

41. Ressentiment - cette fonction renvoie une représentation sous forme de chaîne de la valeur transmise d'un type non primitif. Pour les valeurs de type primitif, renvoie la valeur elle-même.

<Пустое значение>".

Exemple:
Présentation (Contrepartie)

42. Chaîne - cette fonction convertit la valeur transmise en chaîne.

Si un tableau ou une table de valeurs est utilisé comme paramètre, la fonction renvoie une chaîne contenant une représentation sous forme de chaîne de tous les éléments du tableau, séparés par les caractères "; ". Si un élément a une représentation sous forme de chaîne vide, alors la chaîne "<Пустое значение>".

Exemple:
Ligne (Date de vente)

43. ValueImpled

Pour les valeurs NULL, Undefined renvoie toujours False.
Pour les valeurs booléennes, elle renvoie toujours True.
Pour les autres types, renvoie True si la valeur diffère de la valeur par défaut pour le type donné.

Exemple:
ValueFilled (Date de livraison)

44. NiveauDansGroupe - cette fonction obtient le niveau d'enregistrement actuel par rapport au regroupement.

Peut être utilisé pour obtenir le niveau d'imbrication d'un enregistrement dans un regroupement hiérarchique.

Exemple:
NiveauDansGroupe()

45. Type de valeur

Syntaxe:
Type de valeur (Expression)

Paramètre :

  • Expression(Doubler). Type de valeur de chaîne.
Renvoie une valeur de type Type contenant le type de valeur du paramètre de fonction.

Connectez-vous au site en tant qu'étudiant

Connectez-vous en tant qu'étudiant pour accéder au matériel scolaire

Système de composition de données 1C 8.3 pour débutants : compter les résultats (ressources)

Le but de cette leçon sera :

  • Rédigez un rapport qui affiche une liste de produits (Répertoire alimentaire), leur teneur en calories et leur goût.
  • Regroupez les produits par couleur.
  • Découvrez la synthèse (ressources) et les champs calculés.

Créer un nouveau rapport

Comme dans les leçons précédentes, nous ouvrons la base de données " épicerie fine"dans le configurateur et créez un nouveau rapport via le menu" Déposer"->"Nouveau...":

Type de document - rapport externe:

Dans le formulaire de configuration du rapport, écrivez le nom " Lecon 3" et appuyez sur le bouton " Diagramme de composition de données ouvertes":

Laissez le nom du schéma par défaut et cliquez sur le bouton " Prêt":

Ajout d'une requête via le constructeur

Sur l'onglet " Base de données" Cliquez sur vert signe plus et sélectionnez " Ajouter un ensemble de données – Requête":

Au lieu d'écrire le texte de la requête manuellement, nous le réexécutons constructeur de requête:

Sur "l'onglet" les tables"faites glisser la table" Nourriture" de la première colonne à la seconde :

Sélectionnez dans le tableau " Nourriture"les champs que nous demanderons. Pour cela, faites glisser et déposez les champs" Nom", "Goût", "Couleur" Et " Teneur en calories" de la deuxième colonne à la troisième :

Cela s'est passé comme ceci :

Appuie sur le bouton " D'ACCORD" - le texte de la demande a été généré automatiquement :

Création des paramètres de présentation du rapport

Allez dans l'onglet " Paramètres" et cliquez sur baguette magique, appeler concepteur de paramètres:

Sélectionnez le type de rapport " Liste..." et appuyez sur le bouton " Plus loin":

Faites glisser de la colonne de gauche vers la droite les champs qui seront affichés dans la liste et cliquez sur « Plus loin":

Faites glisser de la colonne de gauche vers le champ de droite " Couleur" - cela va arriver regroupement lignes du rapport. Cliquez sur " D'ACCORD":

Et voici le résultat du travail du designer. Hiérarchie de notre rapport :

  • le rapport dans son ensemble
  • regroupement "Couleur"
  • entrées détaillées - lignes avec les noms des aliments

Enregistrez le rapport (bouton disquette) Et sans fermer Nous ouvrirons immédiatement le configurateur en mode utilisateur. Cela s'est passé comme ceci :

Changer l'ordre des colonnes

Mais allons changeons l'ordre colonnes (flèches haut et bas) pour que cela ressemble à la figure ci-dessous :

Sauvons le rapport et ouvrons-le à nouveau en mode utilisateur :

Super, c'est bien mieux.

Résumons la teneur en calories

Ce serait bien de résumer la teneur en calories des aliments par groupe. Pour voir la somme de la teneur en calories de tous les produits, par exemple blancs ou jaunes. Ou découvrez la teneur totale en calories de tous les produits dans la base de données.

A cet effet, il existe un mécanisme de calcul des ressources.

Allez dans l'onglet " Ressources"et faites glisser le champ" Teneur en calories"(nous allons le résumer) de la colonne de gauche vers la droite.

Dans ce cas, dans le champ, sélectionnez l'expression dans la liste déroulante " Quantité (calories)", puisque le total sera la somme de tous les éléments inclus dans le total :

Nous enregistrons et générons un rapport :

Nous disposons désormais de résultats pour chacun des groupes et pour le rapport dans son ensemble.

Résumons (moyenne) en termes de calories

Faisons-le maintenant apparaître dans une autre colonne moyenne teneur en calories des produits par groupes et dans le rapport dans son ensemble.

Vous ne pouvez pas toucher la colonne « Calories » existante : le total y est déjà affiché, donc créons un autre champ, qui sera une copie exacte du champ « Calorie ».

Pour créer un tel champ « virtuel », nous utiliserons le mécanisme champs calculés.

Allez dans l'onglet " Champs calculés" et appuyez sur vert signe plus :

Dans une chronique " Chemin de données"on écrit le nom du nouveau champ ( en toute transparence, sans espaces). Qu'il s'appelle " Teneur moyenne en calories", et dans la colonne " Expression"on écrit le nom d'un champ existant sur la base duquel le nouveau champ sera calculé. On y écrit " Teneur en calories". Colonne " Titre" sera renseigné automatiquement.

Nous avons ajouté un nouveau champ (" Teneur moyenne en calories"), mais il n'apparaîtra pas tout seul dans le rapport - vous devez soit rappeler concepteur de paramètres("baguette magique") ou ajoutez ce champ manuellement.

Faisons-le deuxième chemin. Pour cela, rendez-vous dans l'onglet " Paramètres", sélectionner " Rapport"(après tout, nous voulons ajouter le champ dans son ensemble au rapport), sélectionnez l'onglet en bas" Champs sélectionnés"et faites glisser le champ" Teneur moyenne en calories"de la colonne de gauche vers la droite :

Cela s'est passé comme ceci :

Nous enregistrons et générons un rapport :

Le champ est apparu et on voit que ses valeurs sont les valeurs du champ "Calorie". Super!

Pour ce faire, nous utiliserons à nouveau le mécanisme qui nous est déjà familier ressources(résumant). Allez dans l'onglet " Ressources"et faites glisser le champ" Teneur moyenne en calories"de la colonne de gauche vers la droite :

D'ailleurs, dans la colonne " Expression"choisir" Moyenne (calories moyennes)":

Nous enregistrons et générons un rapport :

On voit que pour les groupes, c'est-à-dire pour chaque couleur, et pour le rapport dans son ensemble, la valeur moyenne a été calculée de manière tout à fait correcte. Mais ils sont présents entrées supplémentaires pour les produits individuels (et non les groupes) que je souhaite supprimer du rapport.

Savez-vous pourquoi ils sont apparus (valeurs non par groupe) ? Parce que quand on a ajouté le champ " Teneur moyenne en calories"dans les paramètres du rapport, dans la deuxième étape, nous avons sélectionné l'intégralité du rapport et ce nouveau champ s'est retrouvé dans l'élément " Détaillé enregistrements".

Corrigeons l'erreur. Pour cela, retournez dans l'onglet " Paramètres", sélectionner " Entrées détaillées" d'abord par le haut (étape 2) puis " Entrées détaillées"par le bas (étape 3), allez dans le favori" Choisi des champs" et nous verrons dans sa colonne de droite l'élément " Auto".

Élément " Auto" - ce n'est pas un champ. Il s'agit de plusieurs champs qui tombent ici automatiquement en fonction de paramètres de niveau supérieur.

Pour voir quels sont ces champs, cliquez sur l'élément " Auto" droite et sélectionnez " Développer":

Élément " Auto" développé dans les domaines suivants :

Et voici notre terrain" Teneur moyenne en calories"qui est venu ici du point" Rapport"quand nous l'avons traîné là-bas. Juste supprimons cochez la case à côté de ce champ pour supprimer sa sortie.

Publications sur le sujet