Fonctions du langage d'expression du système de composition de données. Exemples d'utilisation de la fonction SKD - calculer l'expression Champs calculés dans les fonctions SKD 1s 8.3

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

Ouvrez le diagramme de présentation des données, de préférence dans un rapport externe, pour faciliter la modification.

Nous ajoutons un ensemble de données de type requête et écrivons, soit manuellement, soit à l'aide du concepteur de requêtes, une requête simple :

1. Configurez une demande dans le système de contrôle d'accès.

2. Configurer les champs calculés dans le système de contrôle d'accès

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

4. Lancez 1C Entreprise 8.2.14. Ouvrez le rapport. On forme, on reçoit.

Description des nouvelles fonctions elles-mêmes :

1. La date actuelle()

Renvoie la date du système. Lors de la composition d'une 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. COMPUTEEXPRESSION()

Syntaxe:

CalculerExpression(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

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 regroupement dans la sélection de groupe de ce regroupement. Par exemple, dans la sélection du groupe 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 Grouping est défini sur GrandTotal), 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.

Possibilités

<Выражение>

Type : chaîne. L'expression à évaluer.

<Группировка>

Type : chaîne. 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 cadre du regroupement parent du même nom.

Par exemple:

Somme(Sales.SumTurnover)/Calculate("Somme(Sales.SumTurnover)", "Total")

Dans cet exemple, le résultat sera le rapport entre le montant du champ Sales.SumTurnover de l'enregistrement de regroupement et le montant du même champ dans l'ensemble de la mise en page ;

<ОбластьВычисления>

Type : chaîne. Le paramètre peut prendre les valeurs suivantes :

  • GeneralTotal : l'expression sera calculée pour tous les enregistrements de regroupement.
  • Hiérarchie - L'expression sera é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.
  • Regroupement - l'expression sera évaluée pour l'enregistrement de regroupement actuel.
  • Regroupement hors ressource - lors du calcul d'une fonction pour un enregistrement de groupe par ressource, l'expression sera évaluée pour le premier enregistrement de groupe du regroupement d'origine.

Lors du calcul d'une fonction CalculerExpression() avec la valeur Regroupement sans ressources pour les enregistrements de groupe qui ne sont pas des regroupements de ressources, la fonction est calculée de la même manière qu'elle le serait si la valeur du paramètre était égale à la valeur de Regroupement.

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 de ressource par lequel le regroupement est effectué vers la mise en page, place une expression dans la mise en page qui est calculée à l'aide de la fonction CalculerExpression(), indiquant le paramètre Non-Regroupement de ressources. Pour les autres ressources, les expressions de ressources habituelles sont placées dans le groupe de ressources.

<Начало>

Type : chaîne. 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. La valeur peut être l'une des suivantes :

<Конец>

Type : chaîne. Indique vers quel enregistrement le fragment doit être continué, dans lequel les fonctions globales de l'expression doivent être calculées. La valeur peut être l'une des suivantes :

  • 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 préciser 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 le 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 dépasse le regroupement (par exemple, pour le deuxième enregistrement de regroupement, vous devez obtenir Précédent(3), alors le premier enregistrement de regroupement est obtenu.

Lors de la récupération de l'enregistrement précédent pour un total de regroupement, on considère que 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 enregistrements et que le troisième reçoit Next(), alors on considère qu’il n’y a aucun enregistrement.

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 LimitingValues ​​​​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)), alors un enregistrement avec la date 02/01 sera obtenu.

<Сортировка>

Type : chaîne. Répertorie les expressions, séparées par des virgules, qui décrivent les règles de classement. 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 les mots-clés Ascending (pour classer par ordre croissant), Descending (pour classer par ordre décroissant) et AutoOrder (pour classer les champs de référence selon les champs selon lesquels vous souhaitez classer l'objet référencé). Le mot Ordre automatique peut être utilisé à la fois avec le mot Ascendant et le mot Descendant.

<ИерархическаяСортировка>

Type : chaîne. Identique à l’option Trier. 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.

<ОбработкаОдинаковыхЗначенийПорядка>

Type : chaîne. Spécifie la règle permettant de déterminer l'enregistrement précédent ou suivant au cas où il existe plusieurs enregistrements avec la même valeur de classement :

  • Séparément signifie 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 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 :

date Nom et prénom Signification
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

Si la valeur du paramètre est Séparément, alors :

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

§ si le fragment de calcul est défini comme Current, Current (respectivement les paramètres Start et End), alors pour l'enregistrement 2 ce fragment sera constitué d'un enregistrement 2. L'expression CalculateExpression(“Sum (Value)”, Current, Current) sera être égal à 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 de calcul est défini comme Current, Current (respectivement les paramètres Start et End), alors pour l'enregistrement 2 ce fragment sera constitué des enregistrements 2 et 3. L'expression CalculateExpression(« Somme (Valeur) », Current, Current) sera égal à 50.

Lorsque vous spécifiez une valeur de paramètre égale à Together, dans les paramètres Début et Fin, vous ne pouvez pas spécifier de décalage pour les positions Premier, Dernier, Précédent et Suivant.

CalculateExpression("Sum(SumTurnover)", "Premier", "Actuel")

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

CalculerExpression(« Taux », « Précédent »)

Liste nouveau les fonctions:

CalculerExpressionAvecGroupArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

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

CalculateExpressionWithGroupValueTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

La fonction renvoie un tableau 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 autre que la valeur par défaut de ce type, autre que NULL, autre qu'une référence vide, autre qu'Indéfini. Les valeurs booléennes sont vérifiées pour NULL. Les chaînes sont vérifiées pour l'absence de caractères autres que des espaces

Format(<Выражение>, <Форматная строка>) – Recevez une 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 extraire une sous-chaîne d’une chaîne.

Longueur de la ligne(<Выражение>) – La fonction est conçue pour déterminer la longueur d’une chaîne. Paramètre - expression de chaîne

Doubler(<Выражение>) – 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 une table de valeurs est passée en paramètre, la fonction renvoie une chaîne contenant des représentations sous forme de chaîne de toutes les lignes de la table de valeurs, avec les représentations de cellules de chaque ligne séparées par les caractères « ; ", et les lignes sont un symbole de saut de ligne. Si un élément a une représentation sous forme de chaîne vide, alors la chaîne est affichée à la place de sa représentation<Пустое значение>.

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 le montre 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 » défini, 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".

Nous avons examiné en détail les paramètres des rapports mis en œuvre sur la base du système de contrôle d'accès. Examinons maintenant les paramètres plus subtils et détaillés des options de rapport. La fenêtre des paramètres « avancés » de l'option de rapport est appelée par la commande « Plus » - « Autre » - « Modifier l'option de rapport ».

La fenêtre de modification de la version du rapport est divisée en deux parties :

1. Structure du rapport.

2. Paramètres du rapport.


La section Structure des options de rapport est similaire à l'onglet « Structure » ​​des paramètres de rapport standard. L'objectif et la configuration des groupements sont abordés en détail dans la première partie de l'article.

Le tableau de structure des variantes d'état, en plus de la colonne réelle avec les regroupements, contient plusieurs colonnes supplémentaires :

La section des paramètres des options de rapport offre à l'utilisateur de nombreuses possibilités de configurer le rapport en fonction de ses besoins. Cela coïncide presque complètement avec les paramètres de rapport standard abordés dans la première partie. Examinons tous les onglets de la section et notons les différences.

La section des paramètres comprend les onglets suivants :

1. Paramètres. Contient les paramètres ACS disponibles pour l'utilisateur.

Le paramètre SKD est une valeur utilisée pour obtenir des données de rapport. Il peut s'agir d'une valeur de condition pour sélectionner ou vérifier des données, ainsi que d'une valeur auxiliaire.


Le tableau des paramètres est présenté au format « Paramètre » - « Valeur ». Si nécessaire, vous pouvez modifier les valeurs des paramètres. Cliquer sur le bouton « Propriétés de l'élément de paramètres personnalisés » ouvre les paramètres personnalisés de l'élément.


Dans cette fenêtre, vous pouvez choisir si l'élément sera inclus dans les paramètres utilisateur (c'est-à-dire visible par l'utilisateur lors de la création d'un rapport), définir le mode de présentation et d'édition de l'élément (accès rapide dans l'en-tête du rapport, normal dans l'en-tête du rapport). paramètres de rapport et inaccessible).

Les propriétés des éléments de paramètres personnalisés comportent également des champs, des marges, des sélections et des éléments d'apparence conditionnelle pouvant être regroupés.

2. Champs personnalisés. Contient des champs générés par l'utilisateur lui-même en fonction des données sélectionnées par le rapport.


L'utilisateur peut ajouter deux types de champs :

  • Nouveau champ de sélection...
  • Nouveau champ d'expression...

Les champs de sélection vous permettent de calculer une valeur basée sur une condition spécifiée. La fenêtre d'édition du champ de sélection contient un titre de champ et un tableau dans lequel sont précisées la sélection, la valeur et la présentation du champ. La sélection est une condition en fonction de laquelle la valeur souhaitée sera substituée.


Par exemple, calculons une estimation du nombre de ventes. Nous supposerons que si moins de 10 unités d'un produit sont vendues, nous avons vendu un peu, et si plus de 10 unités, nous avons vendu beaucoup. Pour ce faire, nous définirons 2 valeurs pour le champ calculé : la première sera avec la sélection « Nombre de marchandises inférieur ou égal à « 10 » », la seconde avec la sélection « Nombre de marchandises supérieur à « 10 » "".

Les champs d'expression vous permettent de calculer une valeur à l'aide d'algorithmes arbitraires. Ils peuvent utiliser les fonctions du langage de requête et du langage de programmation 1C intégré. La fenêtre d'édition du champ d'expression contient deux champs pour les expressions d'enregistrements détaillés et récapitulatifs. Les enregistrements de totaux sont des regroupements configurés dans la zone « Structure du rapport » ; ils doivent utiliser des fonctions d'agrégation (« Somme », « Minimum », « Maximum », « Quantité »).

Par exemple, calculons le pourcentage de remise moyen. Le pourcentage de remise moyen est calculé à l'aide de la formule : [Montant des ventes sans remise] - [Montant des ventes avec remise] / [Montant des ventes sans remise]. Il est important de se rappeler que le montant des ventes sans remise peut être nul, nous utilisons donc l'opérateur SELECT pour vérifier. On obtient les expressions suivantes :

· Pour les entrées détaillées :

Choix

Lorsque [Montant des ventes sans remise] = 0

Puis 0

Sinon [Montant des ventes sans remise] - [Montant des ventes avec remise] / [Montant des ventes sans remise]

Fin

· Pour les comptes rendus sommaires :

Choix

Lorsque Montant([Montant des ventes sans remise]) = 0

Puis 0

Sinon Somme([Montant des ventes sans remise]) - Somme([Montant des ventes avec remise]) / Somme([Montant des ventes sans remise])

Fin

Comme mentionné précédemment, pour exprimer le total des enregistrements, nous utilisons la fonction d'agrégation « Somme ».

3. Champs regroupables. Contient des champs selon lesquels les résultats de la variante du rapport seront regroupés. Les champs groupés sont configurés séparément pour chaque regroupement, mais vous pouvez définir des champs groupés généraux pour une option de rapport si vous sélectionnez la racine « Rapport » dans l'arborescence de la structure. Vous pouvez ajouter un champ à partir du résultat du rapport, un champ personnalisé ou sélectionner un champ automatique, puis le système sélectionnera automatiquement les champs. Cet onglet vous permet également de modifier l'ordre des champs regroupés.


4. Champs. Contient les champs qui seront édités suite à la variante d'état. Les champs sont configurés séparément pour chaque groupe, mais vous pouvez définir des champs communs pour une option de rapport si vous sélectionnez la racine « Rapport » dans l'arborescence de la structure. Vous pouvez ajouter un champ à partir du résultat du rapport, un champ personnalisé ou sélectionner un champ automatique, puis le système sélectionnera automatiquement les champs. Cet onglet vous permet également de modifier l'ordre des champs.

Les champs peuvent être regroupés pour mettre en évidence logiquement n'importe quelle partie du rapport ou pour spécifier une disposition particulière des colonnes. Lors de l'ajout d'un groupe, la colonne « Localisation » devient active et permet de sélectionner l'une des options de localisation :

  • Auto : le système place les champs automatiquement ;
  • Horizontal - les champs sont positionnés horizontalement ;
  • Vertical - les champs sont disposés verticalement ;
  • Dans une colonne séparée - les champs sont situés dans des colonnes différentes ;
  • Ensemble - les champs sont situés dans une seule colonne.


5. Sélection. Contient les sélections utilisées dans la variante du rapport. La configuration des sélections a été abordée en détail dans la première partie de cet article. Les filtres sont configurés séparément pour chaque groupe, mais vous pouvez définir des filtres généraux pour une option de rapport si vous sélectionnez la racine « Rapport » dans l'arborescence de la structure.


6. Tri. Contient les champs de tri utilisés dans la variante du rapport. La configuration des champs de tri a été abordée en détail dans la première partie de cet article. Le tri est configuré séparément pour chaque groupe, mais vous pouvez définir des champs de tri généraux pour une option de rapport si vous sélectionnez la racine « Rapport » dans l'arborescence de la structure.


7. Inscription conditionnelle. Contient des éléments de conception conditionnels utilisés dans la variante du rapport. La configuration de l’apparence conditionnelle a été abordée en détail dans la première partie de cet article. L'apparence conditionnelle est configurée séparément pour chaque groupe, mais vous pouvez définir des éléments généraux d'apparence conditionnelle pour une option de rapport si vous sélectionnez la racine « Rapport » dans l'arborescence de la structure.


8. Paramètres supplémentaires. Contient des paramètres de conception de rapport supplémentaires. Permet de sélectionner l'apparence générale du rapport, l'emplacement des champs, les regroupements, les détails, les ressources, les totaux, de définir les paramètres du graphique, de contrôler l'affichage du titre, des paramètres et de la sélection, de déterminer la position des ressources et de fixer l'en-tête et le regroupement. colonnes de la version du rapport.


En conclusion, je voudrais noter que les paramètres du rapport peuvent non seulement être enregistrés en tant qu'option de rapport, mais également téléchargés dans un fichier (menu « Plus » - « Enregistrer les paramètres »). Pour télécharger, vous devez sélectionner « Charger les paramètres » et sélectionner le fichier enregistré. Ainsi, nous pouvons transférer les paramètres des variantes de rapport entre différentes bases de données ayant la même configuration.


Sur cette base, nous pouvons résumer que l'utilisateur peut non seulement personnaliser indépendamment le rapport en fonction de ses besoins, mais également enregistrer ses paramètres et les utiliser à l'avenir si nécessaire.

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 cadre du regroupement 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 préciser 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)), alors un enregistrement avec la date 02/01 sera obtenu.
  • 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, « Supprimer l'indicateur = 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:
CalculateExpressionWithGroupValueTable("Contrepartie AS Contrepartie, Montant(AmountTurnover) ASSalesVolume", "Contrepartie")

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(CalculateExpressionWithGroupingValueTable("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 Consommables. Montant Doc, "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 la 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 destinée à obtenir la minute de l'heure à partir d'une valeur de type Date. Les minutes de l'heure vont de 0 à 59.

Syntaxe:
Minute(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 (Date d'expiration)

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 de fonctions de module communes 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 passée 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.

Dans cette courte note, je souhaite montrer comment résumer des valeurs à différents niveaux de regroupement dans un rapport à l'aide d'un système de composition de données.
Comme le montre l'image, uniquement au niveau de regroupement « Groupes d'articles », la ressource « Commande » est calculée, elle affiche la quantité qui doit être commandée pour le groupe d'articles actuel en fonction de certaines conditions :


Cette valeur ne peut être calculée qu'à ce niveau de regroupement, puisqu'il n'y a pas de valeurs supérieures ou inférieures à calculer. Par exemple, au niveau des enregistrements détaillés, il n'existe pas de données sur la quantité maximale dans un groupe, car ces données ne sont valables que pour le groupe dans son ensemble, et non pour ses composants individuels.

En conséquence, il est maintenant nécessaire de calculer les totaux pour les groupements ci-dessus (« Entrepôts », « Types d'entrepôts ») et le total global.
Pour ce faire, utilisez la fonction CalculerExpressionAvecGroupArray :
ÉVALUER L'EXPRESSIONAVECGROUPARRAY (EVALEXPRESSIONAVECGROUPARRAY)
Syntaxe:
ÉvaluerExpressionWithGroupArray(,)
Description:
La fonction renvoie un tableau dont chaque élément contient le résultat de l'évaluation d'une expression pour le regroupement par le champ spécifié.
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.
Le générateur de mise en page, lors de la génération d'expressions pour la sortie d'un champ personnalisé dont l'expression contient uniquement la fonction CalculateArrayWithGroupArray(), génère l'expression de sortie afin que les informations de sortie 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)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

Possibilités :

Type : chaîne. L'expression à évaluer. Ligne, par exemple, Amount(AmountTurnover).

Type : chaîne. Expressions de champs de regroupement – ​​expressions de champs de regroupement, séparées par des virgules. Par exemple, Entrepreneur, Partie.

Type : chaîne. Expression décrivant la sélection appliquée aux enregistrements de détail. L'expression ne prend pas en charge l'utilisation de fonctions d'agrégation. Par exemple, DeletionFlag = False.

Type : chaîne. Expression décrivant la sélection appliquée aux enregistrements de groupe. Par exemple, Montant (AmountTurnover) > &Paramètre1.
Exemple:

Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Counterparty"));

Une description détaillée de la syntaxe de la fonction peut être trouvée sur http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Maintenant, pour le calcul, nous dupliquons le champ « Ordre », avec différentes valeurs « Calculer par... », en utilisant les expressions suivantes, notons que dans chaque niveau supérieur les valeurs des niveaux inférieurs aux regroupements sont utilisées .

On obtient alors la construction suivante :