Maison / Navigateurs / 1c 8.3 rapporte le calcul dans des champs personnalisés. Langage d'expression du système de composition de données (1Cv8). Opération pour vérifier si une valeur existe dans un jeu de données

1c 8.3 rapporte le calcul dans des champs personnalisés. Langage d'expression du système de composition de données (1Cv8). Opération pour vérifier si une valeur existe dans un jeu de données

Langage d'expression du système de composition de données

Le langage d'expression du système de composition de données est conçu pour enregistrer les expressions utilisées dans diverses parties du système.

Les expressions sont utilisées dans les sous-systèmes suivants :

  • schéma de composition de données - pour décrire les champs calculés, les champs totaux, les expressions de lien, etc. ;
  • paramètres de composition des données - pour décrire les expressions de champ personnalisées ;
  • mise en page de la composition des données - pour décrire les expressions de relation d'ensemble de données, décrire les paramètres de mise en page, etc.

Littéraux

L'expression peut contenir des littéraux. Littéraux possibles des types suivants :

  • Doubler;
  • Nombre;
  • Date de;
  • Booléen.

Doubler

Un littéral de chaîne est écrit dans les caractères """, par exemple :

"Chaîne littérale"

Si vous devez utiliser le caractère """ à l'intérieur du littéral de chaîne, vous devez utiliser deux de ces caractères.

Par exemple:

"littéral" "entre guillemets" ""

Nombre

Le nombre est écrit sans espaces, au format décimal. Fraction séparés par le caractère ".". Par exemple:

10.5 200

date

Un littéral de type date est écrit à l'aide du littéral de clé DATETIME. Après ça mot-clé, entre parenthèses, séparés par des virgules, l'année, le mois, le jour, les heures, les minutes, les secondes sont listés. L'indication de l'heure n'est pas nécessaire.

Par exemple:

DATETIME(1975, 1, 06) - 6 janvier 1975 DATETIME(2006, 12, 2, 23, 56, 57) - 2 décembre 2006, 23:56:57 secondes, 23:56:57 secondes

booléen

Les valeurs booléennes peuvent être écrites à l'aide de littéraux True (True), False (False).

Signification

Pour spécifier des littéraux d'autres types (énumérations système, données prédéfinies), le mot-clé Value est utilisé, suivi du nom du littéral entre parenthèses.

Valeur(AccountType. Actif)

Opérations sur les nombres

Unaire -

Cette opération est conçue pour inverser le signe d'un nombre. Par exemple:

Ventes.Quantité

Unaire +

Cette opération n'effectue aucune opération sur le numéro. Par exemple:

Ventes.Quantité

Binaire -

Cette opération est conçue pour calculer la différence de deux nombres. Par exemple:

SoldesEtChiffres.InitialBalance - SoldesEtChiffres.EndBalance SoldesEtChiffres.InitialBalance - 100 400 - 357

Binaire +

Cette opération est conçue pour calculer la somme de deux nombres. Par exemple:

SoldesEtChiffres D'affaires.SoldeInitial + SoldesEtChiffres D'affaires.Chiffre D'affaires SoldesEtChiffres D'affaires.SoldeInitial + 100 400 + 357

Travail

Cette opération est conçue pour calculer le produit de deux nombres. Par exemple:

Nomenclature Prix * 1,2 2 * 3,14

Division

Cette opération est destinée à obtenir le résultat de la division d'un opérande par un autre. Par exemple:

Nomenclature Prix / 1,2 2 / 3,14

Reste de la division

Cette opération a pour but d'obtenir le reste de la division d'un opérande par un autre. Par exemple:

Nomenclature Prix % 1,2 2 % 3,14

Opérations sur les chaînes

Concaténation (Binaire +)

Cette opération est conçue pour concaténer deux chaînes. Par exemple:

Nomenclature.Article + " : " + Nomenclature.Nom

Comme

Cette opération vérifie si une chaîne correspond au modèle donné.

La valeur de l'opérateur LIKE est TRUE si la valeur<Выражения>correspond au modèle, et FALSE sinon.

Les caractères suivants dans<Строке_шаблона>avoir une signification autre qu'un simple caractère dans la chaîne :

  • % - pourcentage : une séquence contenant zéro ou plusieurs caractères arbitraires ;
  • _ - trait de soulignement : un caractère arbitraire;
  • […] - un ou plusieurs caractères entre crochets : un caractère, n'importe lequel de ceux listés entre crochets. Une énumération peut contenir des plages, telles que a-z, c'est-à-dire n'importe quel caractère dans la plage, y compris les extrémités de la plage ;
  • [^…] - entre crochets une icône de négation suivie d'un ou plusieurs caractères : tout caractère autre que ceux listés après l'icône de négation ;

Tout autre symbole signifie lui-même et ne porte aucune charge supplémentaire. S'il est nécessaire d'écrire l'un des caractères répertoriés comme lui-même, il doit être précédé de<Спецсимвол>Le spécifié après le mot-clé ESCAPE.

Par exemple, modèle

« %ABC[abc]\_abc% » CARACTÈRE SPÉCIAL « \ »

désigne une sous-chaîne constituée d'une suite de caractères : lettres A ; lettres B ; lettres B ; Un chiffre; une des lettres a, b, c ou d ; caractère de soulignement ; lettres a ; lettres b ; lettres dans. De plus, cette séquence peut être localisée à partir d'une position arbitraire dans la chaîne.

Opérations de comparaison

Équivaut à

Cette opération est conçue pour comparer deux opérandes pour l'égalité. Par exemple:

Sales.Counterparty = Sales.NomenclatureMainSupplier

Inégal

Cette opération est conçue pour comparer deux opérandes pour l'inégalité. Par exemple:

Ventes.Entrepreneur<>Sales.NomenclatureMainSupplier

Moins

Cette opération a pour but de vérifier que le premier opérande est inférieur au second. Par exemple:

SalesCurrent.Amount< ПродажиПрошлые.Сумма

Plus

Cette opération a pour but de vérifier que le premier opérande est supérieur au second. Par exemple:

SalesCurrent.Amount > SalesPast.Amount

Inférieur ou égal

Cette opération a pour but de vérifier que le premier opérande est inférieur ou égal au second. Par exemple:

SalesCurrent.Amount<= ПродажиПрошлые.Сумма

Plus ou égal

Cette opération a pour but de vérifier que le premier opérande est supérieur ou égal au second. Par exemple:

SalesCurrent.Amount >= SalesPast.Amount

Opération B

Cette opération vérifie la présence d'une valeur dans la liste de valeurs passée. Le résultat de l'opération est True si la valeur est trouvée, ou False sinon. Par exemple:

Article B (&Article1, &Article2)

Opération pour vérifier si une valeur existe dans un jeu de données

L'opération vérifie la présence d'une valeur dans l'ensemble de données spécifié. L'ensemble de données de validation doit contenir un champ. Par exemple:

Ventes. Entrepreneur à Entrepreneurs

Opération de vérification NULL

Cette opération renvoie True si la valeur est NULL. Par exemple:

Sales.Contractor IS NULL

L'opération de vérification d'une valeur non NULL

Cette opération renvoie True si la valeur n'est pas NULL. Par exemple:

Sales.Contractor N'EST PAS NULL

Opérations booléennes

Les opérations logiques acceptent comme opérandes des expressions de type booléen.

Opération NON

L'opérateur NOT renvoie True si son opérande est False et False si son opérande est True. Par exemple:

NON Document.Consignataire = Document.Consignateur

Opération ET

L'opération AND renvoie True si les deux opérandes sont True et False si l'un des opérandes est False. Par exemple:

Document.Consignataire = Document.Consignateur ET Document.Consignataire = &Entrepreneur

OU opération

L'opération OR renvoie True si l'un des opérandes est True et False si les deux opérandes sont False. Par exemple:

Document.Consignataire = Document.Consignateur OU Document.Consignataire = &Entrepreneur

Fonctions d'agrégation

Les fonctions d'agrégation effectuent une action sur un ensemble de données.

Somme

La fonction d'agrégation Sum calcule la somme des valeurs des expressions qui lui sont transmises en tant qu'argument pour tous les enregistrements de détail. Par exemple:

Montant(Ventes.MontantChiffre d'affaires)

Quantité

La fonction Count compte le nombre de valeurs non nulles. Par exemple:

Quantité (Ventes. Entrepreneur)

Nombre de différents

Cette fonction compte le nombre de valeurs distinctes. Par exemple:

Quantité (diverses ventes. Entrepreneur)

Maximum

La fonction obtient la valeur maximale. Par exemple:

Maximum (restes. Quantité)

Le minimum

La fonction reçoit valeur minimum. Par exemple:

Minimum (solde. quantité)

Moyenne

La fonction obtient la moyenne des valeurs non nulles. Par exemple:

Moyenne(Restes. Quantité)

Autres opérations

Opération SÉLECTIONNER

L'opération Select est conçue pour sélectionner l'une de plusieurs valeurs sous certaines conditions. Par exemple:

Sélectionnez Quand Somme > 1000 Puis Somme Sinon 0 Fin

Règles de comparaison de deux valeurs

Si les types des valeurs comparées diffèrent les uns des autres, la relation entre les valeurs est déterminée en fonction de la priorité des types :

  • NULL (le plus bas);
  • booléen ;
  • Nombre;
  • Date de;
  • Doubler;
  • Types de référence

Les relations entre les différents types de référence sont définies sur la base des numéros de référence des tables correspondant à un type particulier.

Si les types de données correspondent, alors les valeurs sont comparées selon les règles suivantes :

  • type booléen VRAI est supérieur à FAUX ;
  • le type Nombre a les règles de comparaison habituelles pour les nombres ;
  • pour le type Date, les dates antérieures sont antérieures aux dates ultérieures ;
  • pour le type Chaîne - comparaisons de chaînes conformément aux caractéristiques nationales établies de la base de données ;
  • les types de référence sont comparés en fonction de leurs valeurs (numéro d'enregistrement, etc.).

Travailler avec NUL

Toute opération dans laquelle la valeur de l'un des opérandes est NULL produira un résultat NULL.

Il existe des exceptions :

  • l'opération AND ne renverra NULL que si aucun des opérandes n'est False ;
  • l'opération OU renverra NULL uniquement si aucun des opérandes n'est vrai.

Priorités d'opération

Les opérations ont les priorités suivantes (la première ligne a la priorité la plus basse) :

  • B, EST NULL, N'EST PAS NULL ;
  • =, <>, <=, <, >=, >;
  • Binaire +, Binaire - ;
  • *, /, %;
  • Unaire +, Unaire -.

Fonctions du langage d'expression du système de composition de données

Calculer

La fonction Calculer est conçue pour calculer une expression dans le contexte d'un certain regroupement. La fonction a les paramètres suivants :

  • Expression. Tapez Chaîne. Contient une expression calculée ;
  • Regroupement. Tapez Chaîne. 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:
Montant(Ventes.MontantChiffre) / Calculer("Montant(Ventes.MontantChiffre)", "TotalTotal")

DANS cet exemple en conséquence, vous obtiendrez 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.

Niveau

La fonction est conçue pour obtenir le niveau d'enregistrement actuel.

Niveau()

NumberInOrder

Obtenez le numéro de séquence suivant.

Numéro de commande()

NumberIn OrderInGrouping

Renvoie le numéro de séquence suivant dans le groupement actuel.

NumberInOrderInGroup()

Format

Récupère la chaîne formatée de la valeur transmise.

La chaîne de format est définie en fonction de formater la chaîne 1C : Entreprise.

Option :

  • Signification;
  • Formater la chaîne.

Format(Dépenses Factures.AmountDoc, "NPV=2")

Début de période

Option :

    • Minute;
    • Jour;
    • Une semaine;
    • Mois;
    • Quart;
    • Décennie;
    • Une demi-année.

PériodeDébut(DateHeure(2002, 10, 12, 10, 15, 34), "Mois")

Résultat:

01.10.2002 0:00:00

FinPériode

La fonction est conçue pour extraire une date spécifique à partir d'une date donnée.

Option :

  • Date de. Tapez Date. Date donnée ;
  • Type de période. Tapez Chaîne. Contient l'une des valeurs suivantes :
    • Minute;
    • Jour;
    • Une semaine;
    • Mois;
    • Quart;
    • Décennie;
    • Une demi-année.

FinPériode(DateHeure(2002, 10, 12, 10, 15, 34), "Semaine")

Résultat:

13.10.2002 23:59:59

AjouterDate

La fonction est conçue pour ajouter de la valeur à la date.

Option :

  • Type de grossissement. Tapez Chaîne. Contient l'une des valeurs suivantes :
    • Minute;
    • Jour;
    • Une semaine;
    • Mois;
    • Quart;
    • Décennie;
    • Une demi-année.
  • Valeur - de combien vous voulez augmenter la date. Tapez le numéro. La partie fractionnaire est ignorée.

AddToDate(DateHeure(2002, 10, 12, 10, 15, 34), "Mois", 1)

Résultat:

12.11.2002 10:15:34

DifférenceDate

La fonction est conçue pour obtenir la différence entre deux dates.

Option :

  • Expression. Tapez Date. date d'origine ;
  • Expression. Tapez Date. Date soustraite ;
  • Type de différence. Tapez Chaîne. Contient l'une des valeurs suivantes :
    • Deuxième;
    • Minute;
    • Jour;
    • Mois;
    • Quart;

DATEDIFF(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "JOUR")

Résultat:

Sous-chaîne

Cette fonction est conçu pour extraire une sous-chaîne d'une chaîne.

Option :

  • Doubler. Tapez Chaîne. La chaîne à partir de laquelle la sous-chaîne est extraite ;
  • Position. Tapez le numéro. La position du caractère à partir de laquelle commence la sous-chaîne à extraire de la chaîne ;
  • Longueur. Tapez le numéro. La longueur de la sous-chaîne sélectionnée.

SUBSTRING(Comptes.Adresse, 1, 4)

Longueur de chaine

La fonction est conçue pour déterminer la longueur d'une chaîne.

Paramètre:

  • Doubler. Tapez Chaîne. La chaîne dont la longueur est déterminée.

Chaîne(Comptes.Adresse)

Année

Cette fonction a pour but d'extraire l'année d'une valeur de type Date.

Paramètre:

  • Date de. Tapez Date. La date à laquelle l'année est déterminée.

ANNÉE (Inc.Date)

Quart

Cette fonction est conçue pour extraire le numéro du trimestre de la valeur du type Date. Le numéro de bloc varie normalement de 1 à 4.

Paramètre

  • Date de. Tapez Date. La date à laquelle le trimestre est déterminé
TRIMESTRE(Facture.Date)

Mois

Cette fonction a pour but d'extraire le numéro du mois d'une valeur de type Date. Le numéro du mois est normalement compris entre 1 et 12.

  • Date de. Tapez Date. La date à laquelle le mois est déterminé.
MOIS(Date.facture)

Jour de l'année

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).

  • Date de. Tapez Date. La date à laquelle le jour de l'année est déterminé.
JOUR DE L'ANNÉE (Exp.Inc.Date)

Jour

Cette fonction est conçue pour obtenir le jour du mois à partir d'une valeur de type Date. Le jour du mois varie normalement de 1 à 31.

  • Date de. Tapez Date. La date à laquelle les jours du mois sont déterminés.
JOUR(Exp.Inc.Date)

Une semaine

Cette fonction est conçue pour obtenir le numéro de la 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.

  • Date de. Tapez Date. La date à laquelle les numéros de semaine sont déterminés.
SEMAINE(Exp.Inc.Date)

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 de la semaine va normalement de 1 (lundi) à 7 (dimanche).

  • Date de. Tapez Date. La date à laquelle le jour de la semaine est déterminé.
JOUR DE LA SEMAINE (Exp.Inc.Date)

Heure

Cette fonction est conçue pour obtenir l'heure de la journée à partir d'une valeur de type Date. L'heure du jour varie de 0 à 23.

  • Date de. Tapez Date. La date à laquelle l'heure du jour est déterminée.
HEURE(Exp.Inc.Date)

Minute

Cette fonction est conçue pour obtenir la minute de l'heure à partir d'une valeur de type Date. La minute de l'heure va de 0 à 59.

  • Date de. Tapez Date. La date à laquelle la minute de l'heure est déterminée.
MINUTE(Exp.Inc.Date)

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.

  • Date de. Tapez Date. La date à laquelle les secondes de la minute sont déterminées.
SEC(Exp.Inc.Date)

exprimer

Cette fonction est conçue pour extraire un type d'une expression pouvant contenir un type composite. Si l'expression contient un type différent du type requis, NULL sera renvoyé.

Option :

  • L'expression à convertir ;
  • Indication de type. Tapez Chaîne. Contient une chaîne de type. Par exemple, "Numéro", "Chaîne", etc. En plus des types primitifs, cette chaîne peut contenir le nom d'une table. Dans ce cas, une tentative sera faite pour exprimer une référence à la table spécifiée.

Express(Data.Attribute1, "Number(10,3)")

Nul

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.

EstNULL(Montant(Ventes.MontantChiffre d'affaires), 0)

Fonctions communes des modules

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

Dans cet exemple, la fonction "ShortName" sera appelée depuis le module de configuration générale.

Notez que l'utilisation des fonctions de module partagées n'est autorisée que lorsque l'option de processeur de composition de données correspondante est spécifiée.

En outre, les fonctions de module communes ne peuvent pas être utilisées dans les expressions de champ personnalisées.

Nous avons examiné en détail les paramètres des rapports mis en œuvre sur la base d'ACS. Voyons maintenant plus subtilement et paramètres détaillés options de rapport. La fenêtre des paramètres "avancés" des variantes de rapport est appelée par la commande "Plus" - "Autre" - "Modifier la variante de rapport".

La fenêtre de modification d'une variante d'état est divisée en deux parties :

1. La structure du rapport.

2. Paramètres de rapport.


La section de structure d'une variante de rapport est similaire à l'onglet "Structure" des paramètres de rapport standard. Le but et la configuration des regroupements sont discutés en détail dans la partie 1 de l'article.

La table de structure de la variante de rapport, en plus de la colonne avec les regroupements, contient plusieurs colonnes supplémentaires :

La section des paramètres de variante de rapport donne à 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 partie 1. Examinons tous les onglets de la section et notons les différences.

La section des paramètres se compose des onglets suivants :

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

Paramètre ACS - une valeur utilisée pour obtenir des données de rapport. Il peut s'agir d'une valeur de condition pour la sélection ou la validation 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. Cliquez sur le bouton "Propriétés de l'élément des paramètres utilisateur" pour ouvrir les paramètres utilisateur de l'élément.


Dans cette fenêtre, vous pouvez choisir si l'élément sera inclus dans les paramètres de l'utilisateur (c'est-à-dire visible par l'utilisateur lors de la configuration du 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 le rapport paramètres et inaccessible).

Les propriétés des éléments de paramètres personnalisés comportent également des champs de regroupement, des marges, des sélections et des éléments de style conditionnels.

2. Champs personnalisés. Contient des champs que l'utilisateur remplit 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 le titre du champ et un tableau dans lequel la sélection, la valeur et la présentation du champ sont précisées. 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 de biens sont vendues, peu est vendu, et si plus de 10 unités, beaucoup est vendu. Pour ce faire, nous allons définir 2 valeurs du champ calculé : la première sera avec la sélection "Nombre de produits Inférieur ou égal à "10"", la seconde avec la sélection "Nombre de produits 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 des champs d'expression contient deux champs pour les expressions des notices détaillées et sommaires. Les fiches de synthèse sont des regroupements configurés dans la zone "Structure du rapport", elles 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 faut 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 [Somme des ventes sans remise] = 0

Puis 0

Sinon [Ventes sans remise] - [Ventes avec remise] / [Ventes sans remise]

Fin

· Pour les entrées récapitulatives :

Choix

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

Puis 0

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

Fin

Comme mentionné précédemment, dans l'expression du nombre total d'enregistrements, nous utilisons fonction d'agrégation"Somme".

3. Champs groupés. Contient les champs par lesquels le résultat de la variante de rapport sera regroupé. Les champs de regroupement sont configurés séparément pour chacun des regroupements, mais vous pouvez définir des champs de regroupement communs pour une variante de rapport si vous sélectionnez la racine « Rapport » dans l'arborescence. 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 les champs automatiquement. Cet onglet vous permet également de modifier l'ordre des champs groupés.


4. Champs. Contient les champs qui seront affichés dans le résultat de la variante de rapport. Les champs sont configurés séparément pour chacun des regroupements, mais vous pouvez définir des champs communs pour une variante de rapport si vous sélectionnez la racine « Rapport » dans l'arborescence. 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 les champs automatiquement. 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 configurer une disposition de colonne spécifique. Lors de l'ajout d'un groupe, la colonne "Localisation" devient active et vous permet de sélectionner l'une des options de localisation :

  • Auto - le système organise automatiquement les champs ;
  • Horizontalement - les champs sont disposés horizontalement ;
  • Verticalement - 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 disposés dans une colonne.


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


6. Tri. Contient les champs de tri utilisés dans la variante de rapport. La configuration des champs de tri a été abordée en détail dans la partie 1 de cet article. Le tri est configuré séparément pour chacun des regroupements, mais vous pouvez définir des champs de tri communs pour une variante de rapport si vous sélectionnez la racine "Rapport" dans l'arborescence.


7. Conception conditionnelle. Contient des éléments de conception conditionnels utilisés dans une variante de rapport. La configuration de la mise en forme conditionnelle a été abordée en détail dans la partie 1 de cet article. La conception conditionnelle est configurée séparément pour chacun des groupements, mais vous pouvez définir éléments communs apparence conditionnelle pour une variante d'état, si vous sélectionnez la racine "Etat" dans l'arborescence.


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


En conclusion, je voudrais noter que les paramètres du rapport peuvent non seulement être enregistrés en tant que variante de rapport, mais également téléchargés dans un fichier (menu "Plus" - "Enregistrer les paramètres"). Pour télécharger, sélectionnez "Charger les paramètres" et sélectionnez le fichier enregistré. Ainsi, nous pouvons transférer les paramètres de variante de rapport entre différentes bases de données qui ont la même configuration.


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

Rapports sur système de composition de données(SKD) dans les configurations 1C modernes sont devenus la norme. Ils sont pratiques dans la mesure où les utilisateurs peuvent modifier eux-mêmes les paramètres sans l'aide de programmeurs. Cela sera discuté plus loin.

La version modifiée du rapport est facilement stockée dans la base de données et utilisée en parallèle avec la version originale. En même temps, en cas de problème, vous pouvez revenir à paramètres par défaut. En mode utilisateur, vous pouvez ajouter un champ supplémentaire à n'importe quel rapport sur l'ACS, y configurer la sélection, le regroupement, le tri ou la mise en forme conditionnelle.

Envisagez d'ajouter un champ personnalisé avec un exemple rapport standard Taux de rotation du personnel en configuration 1C : Gestion des salaires et du personnel 3.1.

Le taux de roulement dans le rapport peut être calculé soit pour l'ensemble de l'organisation, soit par poste. Supposons que nous ayons besoin de connaître le taux de roulement pour la catégorie de personnel, qui est une liste de postes.

Attention! Dans les anciennes configurations, cela nécessiterait d'ajouter accessoires supplémentaires Catégorie au répertoire Postes, puis développez votre propre version du rapport, qui tiendrait compte de ces données.

Mais avec SKD, tout est devenu beaucoup plus facile.

1. Tout d'abord, enregistrez une nouvelle version du rapport en cliquant sur le bouton Sélectionnez une variante de rapport ou enregistrez-en une nouvelle — Enregistrer la variante de rapport:

Dans la fenêtre qui s'ouvre, renseignez le nom de la nouvelle version du rapport, puis cliquez sur le bouton Sauvegarder. Utilisateur avec droits Administrateur peut enregistrer le paramètre pour tous les utilisateurs.

2. Ajoutons maintenant notre champ. Aller au menu Toutes les actions(ou Plus dans l'interface 1C 8.3) — Autre — Modifier la variante du rapport.

Allez ensuite dans l'onglet Les champs personnalisés en bas du formulaire d'édition de variante, cliquez sur le bouton Ajouter - Nouveau champ de sélection:

Nous remplissons le nom de notre champ et allons au bas du formulaire, où nous diviserons les messages dans les catégories dont nous avons besoin. Cliquez sur Ajouter, renseignez la valeur du champ et sa présentation, puis procédez à l'édition de la sélection en cliquant sur "..." dans la colonne Sélection:

Dans la partie gauche de la fenêtre, sélectionnez le champ Titre d'emploi, double-cliquez ou glissez-déposez pour le déplacer vers le bon tableau. Choisissez le type de comparaison Listé, puis procédez à l'édition de la liste en cliquant sur le bouton "..." dans la colonne Signification:

Remplissez la liste avec les positions nécessaires manuellement ou en utilisant le bouton Sélection. Par exemple, dans la catégorie Administratif attribuer le poste Directeur Et Administrateur, dans la catégorie Linéaire -Vendeur et comptable, et dans la catégorie Sécurité -Responsable de la sécuritéet agent de sécurité.

Attention! J type de valeur de liste - Nombre, et nous entrons le nom de la catégorie dans le champ Performance. Si les valeurs de la liste sont immédiatement affectées du type Doubler, nous ne pourrons pas configurer le filtrage correct pour ce champ à l'avenir. Le filtrage par champs de chaîne est configuré uniquement selon le principe Rempli / Non rempli.

3. Maintenant, configurons la sélection. Aller à l'onglet Sélection. Nous recherchons un dossier en fin de liste à gauche Les champs personnalisés, et dedans se trouve le champ Catégorie de personnel, nous le déplaçons vers la droite.

Cliquez ensuite avec le bouton droit sur la ligne de sélection et sélectionnez l'élément Propriétés de l'élément Paramètres utilisateur.

Pose du drapeau Inclure dans les paramètres utilisateur et sélectionnez le mode d'édition Accès rapide . Cela vous permettra de gérer les paramètres de sélection par catégorie de personnel directement dans l'en-tête du rapport.

4. Ajoutons maintenant le regroupement par champ personnalisé. Pour cela, après regroupement par champs Organisation Et Période de formation ajouter un regroupement par catégorie de personnel et lui transférer le regroupement par fonction. Sélectionnez ensuite le regroupement Catégorie personnel et allez dans l'onglet Paramètres additionnels . Pose du drapeau L'élément actuel a ses propres paramètres supplémentaires, nous recherchons le paramètre dans la liste inférieure Positionnement vertical des totaux généraux et définissez sa valeur sur Fin.

5. Essayons de générer un rapport :

Le rapport dans son ensemble est prêt, mais si nécessaire, il peut être légèrement amélioré.

6. Le regroupement par catégorie de personnel sera trié de la même manière que dans la liste que nous avons remplie précédemment. Si vous voulez trier d'une manière différente, mais, par exemple, par ordre décroissant, nous pouvons aller dans l'onglet Tri, ajoutez la catégorie du personnel à la liste des champs et configurez-la comme suit :

Notez que les champs personnalisés sont triés par valeur, et non par vue.

7. La mise en forme conditionnelle peut être configurée pour les champs du rapport. Pour cela, rendez-vous dans l'onglet Apparition conditionnelle et ajouter à la liste nouvel élément. Choisissez un onglet Condition, ajoutez le champ requis à droite et configurez-le :

Sur l'onglet Décor nous définissons la conception requise pour les champs qui satisfont la condition. Par exemple, la couleur de la police est rouge. Enregistrez notre réglage :

Maintenant, le rapport ressemble à ceci :

Ajout de rapports prêts à l'emploi avec vos propres colonnes.
Vous pouvez ajouter vos propres champs aux rapports créés à l'aide du "Schéma de composition des données" à partir du mode utilisateur, qui seront affichés lors de la génération.
Dans ces domaines, il est permis d'appliquer des opérations arithmétiques.

Il y a longtemps, j'ai écrit le rapport "Ventes de marchandises par expédition" http://infostart.ru/public/16477/. Dans cette publication, nous n'aborderons pas sa pertinence et ses mérites. Ce rapport servira de modèle pour les expérimentations, les modifications. De plus, dans les commentaires, ils ont demandé comment ajouter des champs.

Ouvrez "Paramètres..." et allez dans l'onglet "Paramètres utilisateur".

2. Ajouter "Nouvelle expression de champ"

L'ajout de champs signifie écrire des opérations arithmétiques entre les champs disponibles, (ceci est autorisé marqué d'un carré vert). Également une caractéristique, si le nom d'un tel champ se compose de deux mots ou plus, il doit être placé entre crochets. Obtenez comme ça - [Montant de la vente].

Après l'enregistrement, ce champ deviendra disponible pour la sélection :

Ici, à l'aide de manipulations simples, vous obtenez la valeur dont vous avez besoin. Cette opportunité laissez ajouter Champs obligatoires. Dans les options de calcul dont vous avez besoin. La rentabilité, l'efficacité et d'autres valeurs seront considérées dans votre logique de calculs arithmétiques.

Dans ce cas, votre travail ne sera pas perdu et la prochaine fois que vous ouvrirez le rapport, vous pourrez l'utiliser.

Fonctions utilisées lors de l'écriture des champs.

  • L'arithmétique " + , - , * , / " est claire avec cela, je pense qu'il n'est pas nécessaire d'expliquer le principe de leur action.
  • Les expressions booléennes sont utilisées pour définir les sélections. " > ,< , = , >= , <= , <>, ET, OU, NON". Ces expressions sont utilisées avec l'opération de sélection.
  • Opérations de sélection. Appliquer pour obtenir l'une des valeurs possibles conformément aux conditions spécifiées

CHOIX
QUAND< Операция выбора >ALORS<Выражение>
SINON<Выражение>
FIN
Exemple:
CHOIX
QUAND Quantité > 0 et Montant > 0 ALORS "Correct"
SINON "Erreur"
FIN

Celui-ci se décrypte comme suit : à condition que la quantité soit supérieure à zéro et que les montants soient supérieurs à zéro, le texte « Correct » s'affichera, et si au moins une des conditions n'est pas remplie, « Error » s'affichera.

  • Fonction intégrée, vous permet d'effectuer certaines transformations avec des champs.

SUBSTRING ("Expression", "Starting position", "Ending Position") - sélectionne la partie de "l'expression", délimitée par les cadres "Starting ..." et "Ending ...".
Comment cela se produit-il avec la valeur Nomenclature - La formule "Chocolate Paste" Substring(Nomenclature,1,5) affichera la valeur "Paste"

Les fonctions sont utilisées pour travailler avec des dates.

ANNÉE(<Дата>), QUART(<Дата>), MOIS(<Дата>), JOUR(<Дата>), JOUR(<Дата>), UNE SEMAINE(<Дата>),JOUR DE LA SEMAINE(<Дата>),HEURE(<Дата>), MINUTE(<Дата>), SEC(<Дата>)

La valeur correspondant au nom de la fonction sera affichée.

DEBUT("Date", "Période de décalage"), ENDPERIOD("Date", "Période de décalage"). Pour les données de fonction, la valeur de l'expression de date est au début ou à la fin de la date donnée.

ADDDATE ("Date", "Période de décalage", "Montant dont vous souhaitez augmenter la date") - la fonction vous permet d'augmenter ou de diminuer la date d'une certaine valeur.

DIFFERENCEDATE ("Date1", "Date2", "Shift period") - La fonction est conçue pour obtenir la différence entre deux dates.

"Période de décalage" est l'une des "Minute, Heure, Jour, Semaine, Mois, Trimestre, Année, Décennie, Semestre".

5.Les fonctions d'agrégation du langage de requête sont utilisées lors du regroupement des résultats du calcul des totaux

SOMME (<>) la somme arithmétique de toutes les valeurs de l'échantillon.
MOYENNE (<>) calcule la valeur moyenne de tous ceux de l'échantillon
LE MINIMUM (<>) calcule la valeur minimale de toutes les valeurs de l'échantillon
MAXIMALE (<>) calcule la valeur maximale de toutes les valeurs de l'échantillon
QUANTITÉ (<>) compte le nombre de valeurs de paramètres incluses dans la sélection. Cette fonctionnalité vous permet d'avoir des cas d'utilisation. NUMBER(*) - vous permet de compter le nombre de lignes dans le résultat. NUMBER(DIFFERENT "Expression") - vous permet de compter le nombre de valeurs différentes du champ spécifié.

Montant(Choix
Lorsque Sous-chaîne(Nomenclature, 1, 5) = "Coller"
Puis Quantité *0.2
Autre Quantité *0.35
Fin)

La somme des valeurs sera obtenue dans ce cas, lorsque « Coller » est présent au début du nom de la nomenclature, dans ce cas la quantité augmente de 0,2 ; si non présente, elle augmente de 0,35.

Année([Document.Date])

L'année à laquelle le document a été enregistré/publié sera affichée.

Un exemple plus complexe, sans décodage.

Choix
Lorsque Trimestre([Document.Date]) = 1 ET Sous-chaîne(Nomenclature, 1, 5) = "Coller"
Puis Quantité * 0,2
Autre choix
Lorsque Trimestre([Document.Date]) = 2
Puis Quantité * 0,3
Autre choix
Lorsque Trimestre([Document.Date]) = 3
Puis Quantité * 0,4
Autre choix
Lorsque Trimestre([Document.Date]) = 4
Puis Quantité * 0,5
Fin
Fin
Fin
Fin

Le rapport reçoit le solde des marchandises dans les entrepôts dans différentes sections (caractéristiques, séries, unités de mesure, etc.). Afin de ne pas compliquer l'exemple, nous ne laisserons que le regroupement par poste et n'afficherons que le solde final à la date du rapport. Le tableau final montrera les soldes de stock par article dans les entrepôts.

Mais ensuite, l'utilisateur a déclaré qu'il devait ajouter deux champs supplémentaires :

  1. Avis de quantité. Si la quantité est inférieure ou égale à 5, alors l'alerte est "Insuffisant". Si le nombre est supérieur à 5, puis inférieur ou égal à 10, alors l'alerte est "Normale". Si la quantité est supérieure à 10, alors "Surabondance".
  2. La formule de calcul du solde final. Dans une colonne supplémentaire, l'utilisateur souhaite voir quelles actions le programme a effectuées pour obtenir la valeur du solde final. C'est-à-dire la formule "Solde initial + Chiffre d'affaires = Solde final", où les valeurs correspondantes seront remplacées.

Bien sûr, le programmeur pourrait intervenir ici et modifier la demande de schéma de composition des données et les paramètres du rapport, mais nous terminerons la tâche en mode utilisateur sans modifier le rapport en mode configurateur.

Champs supplémentaires

Et donc, commençons. Passons aux paramètres de l'option de rapport :

Le constructeur de paramètres d'options s'ouvrira devant nous. Rapport SKD. Commençons par les créer en allant dans l'onglet "Champs personnalisés".

La capture d'écran montre déjà deux champs personnalisés créés, dont la fonctionnalité a été décrite ci-dessus. Considérez les paramètres de chacun. Commençons par le champ Alerte.

Dans la configuration, nous devons définir le titre du champ qui sera affiché dans le rapport, ainsi que définir des expressions pour générer une valeur dans le champ des enregistrements détaillés et dans les totaux pour ce champ. Puisqu'il n'est pas nécessaire d'afficher l'alerte dans les totaux, nous écrirons une expression pour les enregistrements détaillés uniquement.

La syntaxe de l'expression est similaire au langage de requête 1C:Enterprise. Il existe quelques différences, mais nous ne les aborderons pas en détail dans cet article. L'expression utilise un opérateur de sélection :

"Choix quand puis sinon fin",

semblable à un opérateur dans un langage de requête. Les champs des expressions de champ personnalisé sont spécifiés par leur représentation. Pour que la plateforme comprenne que la vue saisie désigne un certain champ, le nom de la vue est entouré de crochets "". Si la représentation du champ comporte un seul mot, les crochets sont facultatifs. Dans l'exemple ci-dessus, nous nous référons au champ "Solde final".

Les paramètres du champ "Formule de calcul du solde final" sont définis de la même manière :


Ici, il est nécessaire de mentionner quelques nuances:

  1. Nous ne pouvons afficher la formule dans une cellule que sous forme de chaîne. Par conséquent, nous convertissons toutes les valeurs numériques en une chaîne à l'aide de la méthode "String ()" du langage d'expression ACS, qui convertit toute valeur en une chaîne. Ensuite, nous effectuons une concaténation de chaînes.
  2. Pour que le champ soit affiché dans les totaux du rapport, ajoutons une formule similaire à l'expression des enregistrements totaux. Il vous suffit d'ajouter des fonctions d'agrégation "SUM()" pour chaque valeur en fonction des totaux.

Tout est prêt pour utiliser les champs du rapport !

Mise en place et génération d'un rapport

Le champ "Formule de calcul du solde final" sera ajouté aux champs de sortie du rapport :

L'expression "Alerte" sera ajoutée à enregistrements détaillés nomenclature. Pour cela, ajoutez le champ d'expression "Alerte" au regroupement "Nomenclature". Après cela, la structure du rapport prendra la forme suivante :

La configuration du rapport est maintenant terminée. Si nécessaire, les paramètres ajoutés peuvent être enregistrés pour être réutilisés. Générons un rapport :

Comme nous pouvons le voir, des champs ont été ajoutés au rapport conformément aux conditions de la tâche. En même temps, il n'était pas nécessaire de modifier le rapport en mode configurateur. C'est le principal avantage des champs personnalisés ! Un utilisateur qui a été formé à leur utilisation peut les utiliser pour créer lui-même un rapport de ses propres besoins, sans la participation d'un programmeur.

Croyez-moi, vous pouvez lui apprendre à utiliser ces fonctionnalités, car c'est beaucoup plus facile que d'écrire des formules dans des feuilles de calcul Excel.