1s expression de champs calculés skd. Fonctions du langage d'expression du système de composition de données. Modification de l'ordre des colonnes

À la lumière de la prochaine version de 8.2.14, je vais essayer de décrire certaines des nouvelles fonctionnalités du système de composition de données.

Ouvrez le schéma de composition des données, de préférence dans un rapport externe, pour en faciliter la modification.

Nous ajoutons un ensemble de données de requête et écrivons, manuellement ou à l'aide du générateur de requêtes, la requête la plus simple :

1. Configurez une demande dans l'ACS.

2. Configurer les champs calculés dans ACS

3. Nous configurons la disposition des données dans l'onglet Paramètres

4. Nous lançons 1C Enterprise 8.2.14. Nous ouvrons le rapport. On forme, on reçoit.

Description des nouvelles fonctionnalités elles-mêmes :

1. La date actuelle()

Renvoie la date système. Lors de la mise en page de la mise en page, dans toutes les expressions présentes dans la mise en page, la fonction CurrentDate() est remplacée par la valeur de la date actuelle.

2. CALCULER L'EXPRESSION()

Syntaxe:

Calculer l'expression (,)

La description:

La fonction est conçue pour é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 groupement dans la sélection de groupe de ce groupement. Par exemple, dans la sélection du regroupement Nomenclature, vous ne pouvez pas utiliser l'expression Calculer l'expression ("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 pas d'enregistrements pour le calcul des données détaillées et le calcul des fonctions d'agrégation.

Lors du calcul d'expressions d'intervalle pour un total général (le paramètre Grouping est défini sur GrandTotal ), il est considéré qu'il n'existe aucun enregistrement pour le calcul des données détaillées et le calcul des fonctions d'agrégation.

Générateur de mise en page lors de la génération d'une expression de fonction Expression de calcul, si l'expression de tri contient des champs qui ne peuvent pas être utilisés dans le regroupement, remplace la fonction Expression de calcul sur le NUL.

Choix

Type de: Ligne. Expression à évaluer.

Type de: Ligne. Contient le nom du groupement 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 regroupement, le calcul sera effectué dans le contexte du total général. Sinon, le calcul sera effectué dans le contexte du regroupement parent portant ce nom.

Par exemple:

Somme(Ventes.SommeChiffre)/Calculer("Somme(Ventes.SumChiffre)", "TotalTotal")

À cet exemple le résultat sera le rapport de la somme sur le champ Ventes.MontantChiffre d'affaires regrouper les entrées à la somme du même champ dans l'ensemble de la mise en page ;

Type de: Ligne. Le paramètre peut prendre les valeurs suivantes :

· Le résultat global— l'expression sera évaluée pour tous les enregistrements de regroupement.

· Hiérarchie— l'expression sera évaluée pour l'entrée hiérarchique parente, s'il y en a une, et pour l'ensemble du groupement, s'il n'y a pas d'entrée hiérarchique parente.

· regroupement— l'expression sera évaluée pour l'enregistrement de groupe courant du regroupement.

· GroupingNotResourceGroupingNotResource— lors du calcul d'une fonction pour une fiche de groupe par ressources, l'expression sera calculée pour la première fiche de groupe du regroupement initial.

Lors du calcul de la fonction Calculer l'expression() avec un sens GroupingNotResourceGroupingNotResource pour les enregistrements de groupe qui ne sont pas des regroupements par ressources, la fonction est calculée de la même manière que si la valeur du paramètre était égale à la valeur regroupement.

Lors de la génération d'une mise en page de composition de données, lors de l'affichage du champ de ressource par lequel le regroupement est effectué, le générateur de mise en page de la mise en page de composition de données place une expression dans la mise en page qui est calculée à l'aide de la fonction Calculer l'expression() , en spécifiant le paramètre GroupingNotResourceGroupingNotResource. Pour les autres ressources regroupées par ressource, des expressions de ressource régulières sont placées.

Type de: Ligne. Spécifie dans quel enregistrement démarrer le fragment dans lequel calculer les fonctions d'agrégation de l'expression et à partir de quel enregistrement obtenir les valeurs des champs en dehors des fonctions d'agrégation. La valeur peut être l'une des suivantes :

· Premier (Premier)

· Dernier (Dernier)

· Précédent (Précédent )

· Suivant Suivant )

· Courant (Courant)

· LimitingValue(Valeur limite) LimitingValue

Type de: Ligne. Indique vers quel enregistrement continuer le fragment dans lequel calculer les fonctions d'agrégation de l'expression. La valeur peut être l'une des suivantes :

· Premier (Premier). Vous devez obtenir le premier 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 depuis le début du regroupement. La valeur résultante doit être un nombre entier supérieur à zéro. Par exemple, First(3) - obtenir le troisième enregistrement depuis le début du regroupement.

Si la première entrée est en dehors du groupement, alors on considère qu'il n'y a pas d'entrées. Par exemple, s'il y a 3 enregistrements et que vous souhaitez obtenir First(4) , on considère qu'il n'y a aucun enregistrement.

· Dernier (Dernier). Vous devez obtenir la dernière entrée de regroupement. Après le mot entre parenthèses, vous pouvez spécifier une expression dont le résultat sera utilisé comme décalage à partir de la fin du regroupement. La valeur résultante doit être un nombre entier supérieur à zéro. Par exemple, Last(3) - obtient le troisième enregistrement à partir de la fin du regroupement.

Si un dernier enregistrement va au-delà du regroupement, on considère qu'il n'y a pas d'enregistrements. Par exemple, s'il y a 3 enregistrements et que vous souhaitez obtenir Last(4) , on considère qu'il n'y a aucun enregistrement.

· Précédent (Précédent ). Vous devez obtenir l'entrée de regroupement précédente. Après le mot entre parenthèses, vous pouvez spécifier une expression dont le résultat sera utilisé comme un décalage par rapport à l'enregistrement de regroupement actuel. Par exemple, Précédent(2) - récupère 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 Précédent(3) , alors le premier enregistrement de regroupement est obtenu.

Lors de l'obtention de l'enregistrement précédent pour le total de regroupement, on considère que le premier enregistrement est obtenu.

· Suivant Suivant ). Vous devez obtenir l'entrée de regroupement suivante. 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 à partir de l'enregistrement de regroupement actuel. Par exemple, Next(2) - obtient le suivant à partir de l'enregistrement suivant.

Si l'enregistrement suivant va au-delà du regroupement, on considère qu'il n'y a pas d'enregistrements. Par exemple, s'il y a 3 enregistrements et que le troisième enregistrement obtient Next() , on considère qu'il n'y a pas d'enregistrements.

Lorsque l'enregistrement suivant est reçu pour le total de regroupement, on considère qu'il n'y a pas d'enregistrement.

· Courant (Courant). Vous devez obtenir l'entrée actuelle.

Lorsqu'il est récupéré pour un total de regroupement, le premier enregistrement est récupéré.

· LimitingValue(Valeur limite). La nécessité d'obtenir l'enregistrement par la valeur spécifiée. Après le mot LimitingValue entre parenthèses, vous devez spécifier l'expression avec la valeur dont vous voulez commencer le fragment, le premier champ de tri.

L'enregistrement sera le premier enregistrement dont la valeur du champ de tri est supérieure ou égale à la valeur spécifiée. Par exemple, si vous utilisez le champ Période comme champ de tri et qu'il a les valeurs 01/01/2010 , 02/01/2010 , 03/01/2010 , et que vous souhaitez obtenir ValeurLimite(DateHeure(2010, 1, 15)), alors un enregistrement avec la date 02/01/2010 sera reçu.

Type de: Ligne. Les expressions séparées par des virgules qui décrivent les règles de classement sont répertoriées. S'il n'est pas spécifié, le tri 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 mot-clé Asc(pour l'ordre croissant), Descendant(pour l'ordre décroissant) et Auto-arrangement(pour classer les champs de référence par les champs par lesquels vous souhaitez classer l'objet référencé). Mot Auto-arrangement peut être utilisé comme le mot Asc, et avec le mot Descendant.

Type de: Ligne. Identique au paramètre Tri. Utilisé pour organiser les enregistrements hiérarchiques. S'il n'est pas spécifié, le constructeur de mise en page génère un ordre selon l'ordre spécifié dans le paramètre Tri.

Type de: Ligne. Spécifie une règle pour déterminer l'enregistrement précédent ou suivant s'il existe plusieurs enregistrements avec la même valeur de tri :

· Séparément indique qu'une séquence d'enregistrements ordonnés est utilisée pour déterminer les enregistrements précédents et suivants. Valeur par défaut.

· Ensemble ensemble) indique 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 triée par date :

la date Nom et prénom Sens
1 01 janvier 2001

Ivanov M.

10
2 02 janvier 2001 Petrov S. 20
3 03 janvier 2001 Sidorov R. 30
4 04 janvier 2001 Petrov S. 40

Séparément, alors:

§ l'entrée précédente à l'entrée 3 sera l'entrée 2.

courant, courant(respectivement, les paramètres Commencer et Fin), alors pour l'enregistrement 2 ce fragment sera composé d'un enregistrement 2. L'expression sera égale à 20.

Si la valeur du paramètre est Ensemble, alors:

§ l'entrée précédente à l'entrée 3 sera l'entrée 1.

§ si le fragment calculé est défini comme courant, courant(respectivement, les paramètres Commencer et Fin), alors pour l'enregistrement 2, ce fragment sera composé des enregistrements 2 et 3. L'expression CalculerExpression("Somme(Valeur)", Courant, Courant) sera égal à 50.

Lors de la spécification d'une valeur de paramètre égale à Ensemble, en paramètres Commencer et Fin vous ne pouvez pas spécifier de décalage pour les positions Premier , Dernier , Précédent , Suivant.

CalculerExpression("Montant(Montantchiffre d'affaires)", "Premier", "Actuel")

Si vous souhaitez obtenir la valeur de regroupement de la ligne précédente, vous pouvez utiliser l'expression suivante :

CalculeExpression("Cours", "Précédent")

Liste Nouveau Caractéristiques:

ComputeExpressionGroupedArray(,) -

La fonction renvoie un tableau, dont chaque élément contient le résultat de l'évaluation de l'expression pour le regroupement par le champ spécifié.

ComputeExpressionGroupedValueTable(,) -

La fonction renvoie une table de valeurs, dont chaque ligne contient le résultat de l'évaluation des expressions pour le regroupement par le champ spécifié

ValeurRemplie() - Renvoie True si la valeur est différente de la valeur de ce type default, autre que NULL , autre qu'une référence nulle, autre qu'Undefined . Les valeurs booléennes sont testées par rapport à NULL . Les chaînes sont vérifiées pour les caractères non blancs.

Format(, ) - Récupère la chaîne formatée de la valeur transmise. La chaîne de format est définie conformément à la chaîne de format du système 1C:Enterprise.

Sous-chaîne(, , ) - Cette fonction est conçue pour sélectionner une sous-chaîne à partir d'une chaîne.

Longueur de chaine() - La fonction est conçue pour déterminer la longueur d'une chaîne. Le paramètre est une expression de type chaîne

Ligne() - Si un tableau est passé en paramètre, la fonction renvoie une chaîne contenant des représentations sous forme de chaîne de tous les éléments du tableau, séparés par les caractères " ; ". Si un tableau de valeurs est passé en paramètre, la fonction renvoie une chaîne contenant des représentations sous forme de chaîne de toutes les lignes du tableau de valeurs, et les représentations de cellule de chaque ligne sont séparées par les caractères "; ", et les lignes sont séparés par le caractère de saut de ligne. Si un élément a une représentation sous forme de chaîne vide, une chaîne est affichée à la place de sa représentation.

L'utilisation correcte du schéma de composition de données (SKD) vous permet de :

  • réduire considérablement le temps nécessaire à l'élaboration d'un rapport ;
  • éliminer le besoin de créer formulaire géré gestionnaire ;
  • obtenir un beau résultat avec possibilité de personnalisation supplémentaire par l'utilisateur.

Mais tous les développeurs n'utilisent pas les capacités du schéma au maximum, car tous ses paramètres ne sont pas évidents et intuitifs. En particulier, beaucoup de gens savent qu'il existe des champs calculés en 1C dans ACS, cependant, ils ne comprennent pas parfaitement le domaine de leur utilisation et les méthodes pour travailler avec eux.

Qu'est-ce qu'un champ calculé

Dans la plupart des cas, la source de données dans le schéma de mise en page est une requête. En principe, diverses formules, constructions et expressions peuvent déjà être utilisées à l'intérieur de la requête elle-même. Se pose question légitime Pourquoi avons-nous besoin d'une fonctionnalité en double ?

Le fait est qu'ACS est plus qu'un simple affichage du résultat d'une requête, et cela se voit clairement dans le formulaire de création d'un schéma (Fig. 1).

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

  • Afficher dans une certaine cellule un tableau de données reçues par la requête, combinant plusieurs lignes en une seule ;
  • Accéder aux fonctions d'exportation d'un module commun ;
  • Exécutez diverses expressions disponibles dans le langage de liaison et utilisez les fonctions spéciales Évaluer l'expression.

Passons en revue cette liste.

Tableau de valeurs dans une cellule

Simulons une situation où il est nécessaire d'obtenir 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 ConnectStrings().

Quelques mots sur ce dernier. En plus du premier paramètre pointant vers l'identifiant du tableau, les valeurs ou la 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 du tableau des valeurs d'un autre (dans notre cas, nous avons omis ce paramètre et le saut de ligne a été attribué par défaut);
  2. Séparateur de colonnes – caractère utilisé pour séparer les colonnes du tableau des valeurs (par défaut, un point-virgule est utilisé).

Appel des fonctions d'exportation 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 la fonction se trouve dans un module commun avec le drapeau "Global" activé, elle est appelée directement par son nom, sinon la fonction doit être appelée selon le schéma "Nom de module commun". "Le nom de la fonction à appeler".

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


Ainsi, nous voyons que presque tous les gestionnaires de données peuvent être initialisés à partir de l'ACS, ce qui élargit considérablement les possibilités d'utilisation du schéma.

Liaison d'expressions de langage

Assez 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. Calculez le coût moyen de l'article;
  2. Toutes sortes d'intérêts;
  3. Calculs des gains moyens, etc.

Pour éviter les problèmes, dans ces cas, il est souhaitable d'entrer un contrôle de division par 0 dans le champ calculé.

Cela peut être fait en utilisant la construction "Choix Quand .... Alors ... Sinon ... Fin".

A la fin quelques mots sur assez nouvelle fonctionnalité Calculer l'expression(). Avec son aide, en particulier, vous pouvez calculer les écarts de coût entre la ligne actuelle et la ligne précédente, le solde cumulé, etc.

Supposons que vous puissiez obtenir le DocumentAmount à partir de la ligne précédente de notre requête en spécifiant la valeur CalculateExpression("DocumentAmount", "PreviousAmount") dans le champ "Expression".

À cette méthode, il me semble qu'il y a un moins, mais ça marche, mais le moins est gros. Prenons un exemple : il y a un document "Entrée de marchandises" dans la configuration avec partie tabulaire« Marchandises », il est nécessaire d'afficher dans le rapport les documents et les noms des marchandises reçues pour chaque document.

Créons un rapport, ajoutons le schéma principal de composition des données, ajoutons un ensemble de données de type "demande" à l'ACS et formons une requête simple (voir Figure 1).

Figure 1. Requête d'ensemble de données
Dans l'onglet "Champs calculés", ajoutez un champ calculé appelé TabularPart et dans la colonne Expression, spécifiez une chaîne vide (voir Figure 2).
Notre champ calculé sera utilisé comme ressource, donc dans l'onglet "Ressources", nous définissons l'expression de regroupement : ConnectStrings(Array(Products.Nomenclature),""). Nous indiquons également que cette ressource doit être calculée à l'aide du champ Lien (voir Figure 3).
Le résultat du rapport :
À propos du moins - c'est l'utilisation du regroupement, dans notre cas, le regroupement est effectué par l'attribut Lien, sinon cela ne fonctionnera pas. La présence du regroupement impose certaines restrictions sur la configuration de la sortie des données (voir Figure 4).

2) Appel de votre propre fonction à partir d'un module partagé.

De manière simple et visuelle, la seule difficulté est de trouver un module commun adapté ou d'en créer un nouveau pour écrire sa propre fonction :). La fonction recevra les lignes de la partie tabulaire du document et formera une ligne avec des informations sur les marchandises reçues par le lien transmis vers le document "Réception des marchandises". Venons-en à la mise en œuvre.

Créons un rapport, ajoutons le schéma principal de composition des données, ajoutons un ensemble de données de type "demande" à l'ACS et formons une requête simple (voir Figure 6).


Figure 6. Requête d'ensemble de données
Créons un module commun _DemoWorking with Reports et écrivons la fonction d'exportation GetList de GoodsForReport(). Voir le code de fonction ci-dessous.
Dans l'onglet "Champs calculés", ajoutez un champ calculé appelé TabularPart et dans la colonne Expression, spécifiez l'appel de fonction à partir du module commun (voir Figure 2) :
_DemoTravailler avec des rapports. Obtenir une liste d'éléments pour un rapport (Lien)

Allons dans l'onglet "Paramètres" et créons un paramètre pour la sortie des données - ce sera un enregistrement détaillé (voir Figure 8).
Le résultat du rapport :

Télécharger un exemple de rapport

Ce que vous devez savoir lorsque vous utilisez cette méthode :
1) L'expression du moteur de composition de données peut contenir des appels de fonction de modules de configuration communs globaux. Par exemple:
Nom abrégé (lien, date, numéro)
2) Lorsqu'un rapport est généré par programmation, l'utilisation des fonctions des modules communs n'est autorisée que si le paramètre correspondant du processeur de composition des données (4ème paramètre) est spécifié :
CompositionProcessor = NewDataCompositionProcessor ;
LayoutProcessor.Initialize(LayoutLayout, DecodeData, True);
3) Les fonctions de module communes ne peuvent pas être utilisées dans les expressions de champ personnalisées.
4) Si une exception est levée lors de la génération d'un rapport indiquant la fonction d'un module commun, vérifier le contexte d'exécution du module (voir Figure 9).

Description des fonctions utilisées

Concaténer des chaînes (valeur, séparateur d'éléments, séparateurs de colonnes)- conçu pour concaténer des chaînes en une seule chaîne.
  • Valeur - expressions à concaténer en une seule chaîne. S'il s'agit d'un tableau, les éléments du tableau seront combinés en une chaîne. Si est un ValueTable, toutes les colonnes et lignes du tableau seront combinées en une ligne ;
  • ElementSeparator - Une chaîne contenant le texte à utiliser comme séparateur entre les éléments du tableau et les lignes de la table de valeurs. La valeur par défaut est un caractère de saut de ligne ;
  • Séparateurs de colonne - Une chaîne contenant le texte à utiliser comme séparateur entre les colonnes de la table de valeurs. Défaut "; ".
Tableau([Divers] Expression)- Vous pouvez utiliser un tableau de valeurs comme paramètre. Dans ce cas, le résultat de la fonction sera un tableau contenant les valeurs de la première colonne du tableau des valeurs, passées en paramètre. Si une expression contient une fonction Array, l'expression est considérée comme une expression agrégée. Si le mot-clé Variant est spécifié, le tableau résultant ne contiendra pas de valeurs en double.

GetProductListForReport(DocumentReference)- la fonction génère une chaîne avec une liste des marchandises entrantes.
// Option :
// DocumentLink - DocumentLink.Entrée de marchandise - Document "Entrée de marchandise".
// Valeur de retour :
// String - une chaîne avec une liste de marchandises.
Fonction GetProductListForReport(DocumentReference) Exporter

ItemList = "" ;

Pour chaque chaîne de la boucle DocumentReference.Products
Liste des marchandises = Liste des marchandises + String PM.Nomenclature ;
ItemList = ItemList + Symboles.PS ;
FinCycle ;

Liste de retour des marchandises ;

EndFunction // GetItemListToReport()

Connectez-vous en tant qu'étudiant

Connectez-vous en tant qu'étudiant pour accéder au contenu de l'école

1C 8.3 système de composition de données 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.
  • Familiarisez-vous avec la fonction de synthèse (ressources) et les champs calculés.

Création d'un nouveau rapport

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

Type de document - rapport externe:

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

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

Ajouter 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, exécutez à nouveau constructeur de requête:

Sur l'onglet " les tables"faire glisser le tableau" Aliments" de la première colonne à la seconde :

Sélectionnez dans le tableau Aliments" les champs que nous allons demander. Pour cela, faites glisser les champs " Nom", "Goûter", "Couleur" et " calories"de la deuxième colonne à la troisième :

Il s'est avéré comme ceci:

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

Configuration des paramètres de présentation du rapport

Aller au signet Réglages"et cliquez sur baguette magique, appeler constructeur de paramètres:

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

Faites glisser et déposez 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"- selon qu'il arrivera regroupement lignes dans le rapport. Presse " D'ACCORD":

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

  • rapport dans son ensemble
  • groupement "Couleur"
  • enregistrements détaillés - lignes avec les noms des aliments

Enregistrez le rapport (bouton disquette) et sans fermeture configurateur, nous l'ouvrirons immédiatement en mode utilisateur. Il s'est avéré comme ceci:

Modification de l'ordre des colonnes

Mais allons changer la commande colonnes (flèches haut et bas) pour qu'il ressemble à l'image ci-dessous :

Enregistrez le rapport et rouvrez-le en mode utilisateur :

Super, c'est beaucoup mieux.

Résumer (somme) par teneur en calories

Ce serait bien d'afficher la teneur totale en calories des aliments par groupe. Pour voir la somme de la teneur en calories de tous les produits, disons, blanc ou jaune. Ou découvrez la teneur totale en calories de tous les aliments de la base de données.

Il existe un mécanisme de calcul des ressources pour cela.

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

En même temps, dans le champ expression, sélectionnez dans la liste déroulante " Quantité (calories)", puisque le total sera la somme de tous les éléments inclus dans le total :

Enregistrement et génération d'un rapport :

Nous avons les résultats pour chacun des groupes et pour l'ensemble du rapport.

Résumer (moyenne) par contenu calorique

Faisons maintenant en sorte qu'une autre colonne affiche moyen teneur en calories des produits par groupes et en général pour le rapport.

Il est impossible de toucher la colonne déjà existante "Contenu calorique" - la somme totale y est déjà affichée, donc ajoutons un autre champ, qui sera une copie exacte du champ "Calorie".

Pour créer un tel champ "virtuel", nous utilisons le mécanisme champs calculés.

Aller au signet Champs calculés"et appuyez sur vert signe plus :

Dans une chronique" Chemin de données"écrivez le nom du nouveau champ ( ensemble, sans espaces). Qu'on l'appelle Calories moyennes", et dans la colonne " Expression" on écrit le nom d'un champ déjà existant, sur la base duquel le nouveau champ sera calculé. On y écrit " calories". Colonne " entête" sera rempli automatiquement.

Nous avons ajouté un nouveau champ (" Calories moyennes"), mais il n'apparaîtra pas seul dans le rapport - vous devez soit le rappeler constructeur de paramètres("baguette magique") ou ajouter ce champ manuellement.

Agissons deuxième façon. Pour cela, rendez-vous dans l'onglet " Réglages", choisir " Signaler" (après tout, nous voulons ajouter le champ dans son ensemble au rapport), sélectionnez l'onglet ci-dessous " Champs sélectionnés" et faites glisser le champ " Calories moyennes" de la colonne de gauche vers la droite :

Il s'est avéré comme ceci:

Enregistrement et génération d'un rapport :

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

Pour ce faire, nous utilisons à nouveau le mécanisme qui nous est déjà familier. Ressources(résumant). Aller au signet Ressources" et faites glisser le champ " Calories moyennes" de la colonne de gauche vers la droite :

En même temps, dans la colonne Expression"choisir" Moyenne (calories moyennes)":

Enregistrement et génération d'un rapport :

On voit que pour les groupes, c'est-à-dire pour chaque couleur, et pour l'ensemble du rapport, la valeur moyenne a été calculée assez correctement. Mais présent entrées supplémentaires pour les produits individuels (pas pour les groupes) que vous souhaitez supprimer du rapport.

Savez-vous pourquoi ils sont apparus (significations non groupées) ? Parce que lorsque nous avons ajouté le champ " Calories moyennes" dans les paramètres du rapport, dans la deuxième étape, nous avons sélectionné tout le rapport et ce nouveau champ a frappé l'élément " Détaillé enregistrements".

Corrigeons l'erreur. Pour cela, retournez dans l'onglet " Réglages", choisir " Fiches détaillées" haut d'abord (étape 2) puis " Fiches détaillées"d'en bas (étape 3), allez au signet" Choisi des champs" et voir dans sa colonne de droite l'élément " Auto".

Élément " Auto" - ce n'est pas un champ. Ce sont plusieurs champs qui arrivent automatiquement ici en fonction de paramètres plus élevés.

Pour voir ce que sont ces champs - cliquez sur l'élément " Auto" droit bouton et sélectionnez " Développer":

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

Voici notre domaine Calories moyennes"qui vient du paragraphe" Signaler"quand nous l'avons traîné là-bas. Juste partons cochez à côté de ce champ pour supprimer sa sortie.

Bonne journée, chers lecteurs de notre blog! Aujourd'hui, je veux dire, à l'aide d'un exemple réel, comment
utiliser les fonctions SKD Array (Array) et ConnectStrings (JoinStrings). Dans un article sur

petite mention comment travailler avec
sur le signet
, a également été expliqué comme
à l'aide de l'onglet Ressources. Aujourd'hui, nous allons encore une fois prêter attention à ces
signets à la lumière de notre thème.

Apparition d'un exemple de rapport 1C utilisant deux fonctions ACS déployer et ConnectStrings Suivant:

Énoncé du problème d'application des fonctions ACS Array (Array) et ConnectStrings (JoinStrings)

Tâche : Il est nécessaire d'insérer tous les numéros de vente d'un produit dans une cellule.

Quelque chose comme : nomenclature | quantité | 001, 002, etc... |

Nous utiliserons une demande au registre d'accumulation "Mise en œuvre de TMZ".

CHOISIR
Mise en place de TMZ. Greffier. Numéro,
Mise en place de TMZ. Nomenclature,
Mise en place de TMZ. Greffier,
Mise en place de TMZ. QuantitéChiffre d'affaires
DE
RegistreAccumulation. Mise en place de TMZ. Chiffre d'affaires
(, , registraire, ) COMMENT mettre en œuvre TMZ

Le registre d'accumulation "Implémentation de TMZ" existe à la fois dans la configuration Comptabilité et dans la configuration Gestion d'Entreprise Commerciale (UTP). Découvrez comment dans la configuration USP dans l'élément de répertoire "Nomenclature". Par conséquent, après le téléchargement, pour vérifier ses performances, vous pouvez exécuter ce rapport dans les deux configurations.

Mise en œuvre de la tâche avec l'utilisation des fonctions SKD Array et ConnectStrings


Les mêmes étapes, mais avec quelques ajouts, ont été utilisées pour créer
.

Description de la fonction JoinStrings (JoinStrings)

JoinStrings (JoinStrings)

Utilisé pour concaténer des chaînes en une seule chaîne.

Syntaxe:

Concaténer des chaînes (valeur, séparateur d'éléments, séparateurs de colonnes)

Option :

  1. Sens- expressions à combiner en une seule ligne.
    S'il s'agit d'un tableau, les éléments du tableau seront combinés en une chaîne.
    Si est un ValueTable, toutes les colonnes et lignes du tableau seront combinées en une ligne ;
  2. Séparateur d'éléments est une chaîne contenant le texte à utiliser comme
    séparateur entre les éléments du tableau et les lignes de la table de valeurs. La valeur par défaut est un caractère de saut de ligne ;
  3. Séparateurs de colonnes-chaîne contenant le texte à utiliser comme délimiteur
    entre les colonnes du tableau des valeurs. Défaut ";".