Schéma de composition des données des champs calculés. Fonctions du langage d'expression du système de composition 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 écrire des 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 relation, etc.
  • paramètres de composition de données - pour décrire les expressions de champ personnalisées
  • modèle de composition de données - pour décrire les expressions de relation d'ensemble de données, décrire les paramètres du modèle, etc.

Littéraux

Les expressions peuvent contenir des littéraux. Les littéraux des types suivants sont possibles:

  • Ligne;
  • Nombre;
  • Date;
  • Booléen.

Ligne

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

"Chaîne littérale"

Si vous devez utiliser le caractère "" "dans une chaîne littérale, 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. La partie fractionnaire est séparée par le symbole "." Par exemple:

10.5 200

Date

Le littéral de date est écrit à l'aide du littéral de clé DATETIME. Après ce 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 répertoriés. L'heure est facultative.

Par exemple:

DATE HEURE (1975, 1, 06) - 6 janvier 1975 DATE (2006, 12, 2, 23, 56, 57) - 2 décembre 2006, 23 heures 56 minutes 57 secondes, 23 heures 56 minutes 57 secondes

Booléen

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

Valeur

Pour spécifier des littéraux d'autres types (énumérations système, données prédéfinies), utilisez mot-clé Une valeur suivie du nom littéral entre parenthèses.

Valeur (Type de compte. Actif)

Opérations sur les nombres

Unaire -

Cette opération a pour but d'inverser le signe d'un nombre. Par exemple:

Ventes.Number

Unaire +

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

Ventes.Number

Binaire -

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

Soldes et chiffres d'affaires Solde initial - Soldes et chiffres d'affaires Soldes finaux et chiffres d'affaires Solde initial - 100400 - 357

Binaire +

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

Soldes et chiffres d'affaires Solde de départ + soldes et chiffres d'affaires Soldes de chiffre d'affaires et chiffres d'affaires Solde initial + 100400 + 357

Composition

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 vise à 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 est destinée à 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 destinée à concaténer deux chaînes. Par exemple:

Nomenclature.Article + ":" + Nomenclature.Name

Comme

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

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

Les caractères suivants dans<Строке_шаблона> ont un sens autre que le caractère de ligne suivant:

  • % - 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, l'un de ceux indiqués entre crochets. L'énumération peut contenir des plages, par exemple, a-z, signifiant un caractère arbitraire inclus 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 sauf ceux listés après l'icône de négation;

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

Par exemple, le modèle

«% ABC [abcg] \\ _ abc%» SYMBOLE SPÉCIAL «\\»

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

Opérations de comparaison

Également

Cette opération est destinée à comparer deux opérandes pour l'égalité. Par exemple:

Sales.Contractor \u003d Sales.NomenclatureMainSupplier

Inégal

Cette opération vise à comparer deux opérandes pour l'inégalité. Par exemple:

Ventes, entrepreneur<> Ventes.NomenclatureMainSupplier

Moins

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

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

Plus

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

SalesCurrent.Total\u003e 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:

VentesCurrent.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\u003e \u003d SalesPast.Amount

Opération B

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

Article B (& Item1, & Item2)

L'opération de vérification de l'existence d'une valeur dans un jeu de données

L'opération vérifie l'existence 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. Contrepartie aux contreparties

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

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

Ventes, le contractant EST NULL

L'opération de vérification d'une valeur pour l'inégalité NULL

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

Ventes, le contractant N'EST PAS NULL

Opérations logiques

Les opérations logiques prennent des expressions booléennes comme opérandes.

Opération NON

L'opération ne renvoie PAS True si son opérande est False et False si son opérande est True. Par exemple:

NOT Document.Consignee \u003d Document.Shipper

Fonctionnement ET

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

Document.Consignee \u003d Document.Carrier AND Document.Consignee \u003d & Contrepartie

Opération OU

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.Consignee \u003d Document.Carrier OU Document.Consignee \u003d & Contrepartie

Fonctions d'agrégation

Les fonctions d'agrégation exécutent certaines actions sur un ensemble de données.

Montant

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

Montant (Sales.AmountTurnover)

nombre

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

Quantité (Ventes. Entrepreneur)

Nombre de différents

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

Quantité (diverses ventes. Entrepreneur)

Maximum

La fonction obtient la valeur maximale. Par exemple:

Maximum (soldes, quantité)

Le minimum

La fonction obtient la valeur minimale. Par exemple:

Minimum (soldes, quantité)

Moyenne

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

Moyenne (Balances.Amount)

Autres opérations

Opération SELECT

Operation Select est conçu pour sélectionner l'une des nombreuses valeurs lorsque certaines conditions sont remplies. Par exemple:

Choix lorsque Montant\u003e 1000 Puis Montant 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;
  • Ligne;
  • Types de référence

Les relations entre les différents types de référence sont déterminées à partir des numéros de référence des tableaux correspondant à un type particulier.

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

  • type Boolean a une valeur TRUE supérieure à la valeur FALSE;
  • le type Nombre a les règles de comparaison habituelles pour les nombres;
  • le type Date a des dates antérieures inférieures aux dates ultérieures;
  • pour le type de 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éros d'enregistrement, etc.).

Travailler avec NULL

Toute opération dans laquelle la valeur de l'un des opérandes est NULL aboutira à NULL.

Il y a des exceptions:

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

Priorités de fonctionnement

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

  • B IS NULL IS NOT 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 évaluer une expression dans le contexte d'un certain regroupement. La fonction a les paramètres suivants:

  • Expression. Tapez String. Contient une expression calculée;
  • Regroupement. Tapez String. 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 GeneralTotal 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 groupement parent portant ce nom. Par exemple:
Montant (Sales.SumTurnover) / Calculer ("Montant (Sales.SumTurnover)", "TotalTotal")

DANS cet exemple par conséquent, vous obtenez 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.

Niveau

La fonction est destinée à obtenir le niveau d'enregistrement actuel.

Niveau()

L'ordre des numéros

Obtenez le numéro de séquence suivant.

L'ordre des numéros ()

NumberOrderInGroup

Renvoie le numéro séquentiel suivant dans le regroupement actuel.

NumberOrderInGrouping ()

Format

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

La chaîne de format est définie selon chaîne de format 1C: Entreprise.

Options:

  • Valeur;
  • Chaîne de format.

Format (factures de consignation.SumDoc, "NPT \u003d 2")

Début de période

Options:

    • Minute;
    • Journée;
    • Une semaine;
    • Mois;
    • Trimestre;
    • Décennie;
    • Une demi-année.

Début de période (DateHeure (2002, 10, 12, 10, 15, 34), "Mois")

Résultat:

01.10.2002 0:00:00

Fin de période

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

Options:

  • Date. Saisissez la date. Date spécifiée;
  • Type de période. Tapez String. Contient l'une des valeurs:
    • Minute;
    • Journée;
    • Une semaine;
    • Mois;
    • Trimestre;
    • Décennie;
    • Une demi-année.

EndPeriod (DateTime (2002, 10, 12, 10, 15, 34), "Semaine")

Résultat:

13.10.2002 23:59:59

Ajouter à la date

La fonction est destinée à ajouter une certaine valeur à la date.

Options:

  • Type de grossissement. Tapez String. Contient l'une des valeurs:
    • Minute;
    • Journée;
    • Une semaine;
    • Mois;
    • Trimestre;
    • Décennie;
    • Une demi-année.
  • Valeur - de combien la date doit être augmentée. Numéro de type. La partie fractionnaire est ignorée.

Ajouter à la date (DateHeure (2002, 10, 12, 10, 15, 34), "Mois", 1)

Résultat:

12.11.2002 10:15:34

Différence de date

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

Options:

  • Expression. Saisissez la date. Date d'origine;
  • Expression. Saisissez la date. Date soustraite;
  • Type de différence. Tapez String. Contient l'une des valeurs:
    • Seconde;
    • Minute;
    • Journée;
    • Mois;
    • Trimestre;

DIFFÉRENCE (DATE / HEURE (2002, 10, 12, 10, 15, 34), DATE / HEURE (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.

Options:

  • Ligne. Tapez String. La chaîne à partir de laquelle extraire la sous-chaîne;
  • Position. Numéro de type. La position du caractère à partir de laquelle commence la sous-chaîne à extraire de la chaîne;
  • Longueur. Numéro de type. La longueur de la sous-chaîne à sélectionner.

SUBSTRAT (adresse de l'entrepreneur, 1, 4)

Longueur de la ligne

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

Paramètre:

  • Ligne. Tapez String. La chaîne à spécifier en longueur.

Chaîne (Accounts.Address)

An

Cette fonction est conçue pour extraire une année d'une valeur de type Date.

Paramètre:

  • Date. Saisissez la date. La date à laquelle l'année est déterminée.

ANNÉE (date d'expédition)

Trimestre

Cette fonction est destinée à extraire un numéro de trimestre d'une valeur de type Date. Le numéro de quartier est normalement compris entre 1 et 4.

Paramètre

  • Date. Saisissez la date. La date à laquelle le trimestre est déterminé
QUARTIER (date de livraison)

Mois

Cette fonction est destinée à 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. Saisissez la date. La date à laquelle le mois est déterminé.
MOIS (date de la 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 est normalement compris entre 1 et 365 (366).

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

journée

Cette fonction est destinée à obtenir le jour du mois à partir d'une valeur de type Date. Le jour du mois est normalement compris entre 1 et 31.

  • Date. Saisissez la date. La date à laquelle le jour du mois est déterminé.
DAY (date de facturation)

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

  • Date. Saisissez la date. La date à laquelle les numéros de semaine sont déterminés.
SEMAINE (date de facturation)

Jour de la semaine

Cette fonction est destinée à obtenir le jour de la semaine à partir d'une valeur de type Date. Le jour de la semaine est normalement compris entre 1 (lundi) et 7 (dimanche).

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

Heure

Cette fonction est destinée à obtenir l'heure du jour à partir d'une valeur de type Date. L'heure du jour varie de 0 à 23.

  • Date. Saisissez la date. La date à laquelle l'heure de la journée est déterminée.
HEURE (date d'envoi)

Minute

Cette fonction est destinée à obtenir la minute d'une heure à partir d'une valeur de type Date. La minute de l'heure varie de 0 à 59.

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

Seconde

Cette fonction est destinée à obtenir la seconde de la minute à partir d'une valeur de type Date. La seconde d'une minute varie de 0 à 59.

  • Date. Saisissez la date. La date à laquelle les secondes de la minute sont déterminées.
DEUXIÈME (date de facturation)

Express

Cette fonction est conçue pour extraire un type d'une expression qui peut contenir un type complexe. Dans le cas où l'expression contient un type autre que le type requis, une valeur NULL sera renvoyée.

Options:

  • L'expression à convertir;
  • Indication de type. Tapez String. Contient une chaîne de type. Par exemple, "Number", "String", etc. Outre les types primitifs chaîne donnée peut contenir le nom de la table. Dans ce cas, une tentative sera faite pour exprimer vers un lien vers la table spécifiée.

Express (Data.Props1, "Number (10.3)")

OuiNull

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.

YesNULL (Sum (Sales.SumTurnover), 0)

Fonctions communes du module

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

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

Notez que l'utilisation des fonctions des modules communs n'est autorisée que lorsque le paramètre correspondant 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 champ personnalisées.

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

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

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

1. Configurez une demande dans l'ACS.

2. Configuration des champs calculés dans l'ACS

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

4. Nous démarrons 1C Enterprise 8.2.14. Nous ouvrons le rapport. Nous formons, nous obtenons.

Description des nouvelles fonctions elles-mêmes:

1. La date actuelle ()

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

2. CALCULER L'EXPRESSION ()

Syntaxe:

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

La description:

La fonction est destinée à évaluer une expression dans le contexte d'un certain regroupement.

La fonction prend en compte la sélection des regroupements, mais ne prend pas en compte les sélections hiérarchiques.

La fonction ne peut pas être appliquée à un groupement dans la sélection de groupe de ce groupement. Par exemple, dans la sélection du groupement Nomenclature, vous ne pouvez pas utiliser l'expression CalculateExpression ("Sum (SumTurnover)", "TotalTotal")\u003e 1000. Mais une telle expression peut être utilisée dans une sélection hiérarchique.

Si l'enregistrement de fin précède l'enregistrement de début, on considère qu'il n'y a pas d'enregistrements pour le calcul des données détaillées et le calcul des fonctions d'agrégation.

Lors du calcul d'expressions d'intervalle pour le total général (le paramètre de regroupement est défini sur Total général), on suppose qu'il n'y a pas d'enregistrements pour le calcul des données détaillées et le calcul des fonctions d'agrégation.

Le composeur de disposition, lors de la génération d'une expression de la fonction EvaluateExpression, si l'expression de classement contient des champs qui ne peuvent pas être utilisés dans le regroupement, remplace la fonction EvaluateExpression par NULL.

Options

<Выражение>

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

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

Type: 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 GeneralTotal 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 groupement parent portant ce nom.

Par exemple:

Montant (Sales.SumTurnover) / Calculer ("Montant (Sales.SumTurnover)", "TotalTotal")

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 la mise en page entière;

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

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

  • Total - l'expression sera évaluée pour tous les enregistrements de regroupement.
  • Hiérarchie - l'expression sera évaluée pour l'enregistrement hiérarchique parent, s'il en existe un, 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.
  • GroupingNonResource - lors de l'évaluation d'une fonction pour un enregistrement de groupe par ressources, l'expression sera calculée pour le premier enregistrement de groupe du regroupement d'origine.

Lors du calcul de la fonction EvaluateExpression () avec la valeur GroupNoResource pour les enregistrements de groupe qui ne sont pas regroupés par ressource, la fonction est calculée de la même manière qu'elle le serait si la valeur du paramètre était égale à Grouping.

Le compositeur du modèle de composition de données, lors de la génération du modèle de composition de données, lors de la sortie du champ de ressources par lequel le regroupement est effectué vers le modèle, place une expression calculée à l'aide de la fonction EvaluateExpression (), en spécifiant le paramètre GroupNoResource. Pour le reste des ressources, les expressions de ressources régulières sont regroupées par ressource.

<Начало>

Type: chaîne. Indique avec quel enregistrement démarrer le fragment, dans lequel calculer les fonctions d'agrégation de l'expression et à partir de quel enregistrement pour obtenir les valeurs des champs en dehors des fonctions d'agrégation. La valeur peut être l'une des suivantes:

<Конец>

Type: chaîne. Indique à quel enregistrement continuer le fragment dans lequel évaluer les fonctions d'agrégation de l'expression. La valeur peut être l'une des suivantes:

  • Premier (premier). Vous devez obtenir le premier enregistrement de regroupement. Une expression peut être spécifiée après le mot entre crochets, dont le résultat sera utilisé comme décalage par rapport au début du regroupement. La valeur résultante doit être un nombre entier supérieur à zéro. Par exemple, First (3) - obtenir le troisième enregistrement depuis le début du regroupement.

Si le premier enregistrement sort des limites de regroupement, on considère qu'il n'y a pas d'enregistrements. Par exemple, s'il y a 3 enregistrements et que vous souhaitez obtenir First (4), il est considéré qu'il n'y a aucun enregistrement.

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

Si le dernier enregistrement est en dehors des limites de regroupement, alors il est considéré qu'il n'y a pas d'enregistrements. Par exemple, s'il y a 3 enregistrements et que vous souhaitez obtenir le dernier (4), il est considéré qu'il n'y a aucun enregistrement.

  • Précédent. Vous devez obtenir l'enregistrement de regroupement précédent. Une expression peut être spécifiée après le mot entre crochets, dont le résultat sera utilisé comme décalage par rapport à l'enregistrement de regroupement actuel. Par exemple, Précédent (2) - récupère le précédent à partir de l'enregistrement précédent.

Si l'enregistrement précédent va au-delà du regroupement (par exemple, pour le deuxième enregistrement de regroupement, vous devez obtenir Précédent (3), le premier enregistrement de regroupement est obtenu.

Lors de la récupération de l'enregistrement précédent pour le total de regroupement, le premier enregistrement est pris en compte.

  • Suivant Suivant). Vous devez obtenir le prochain enregistrement de regroupement. Une expression peut être spécifiée après le mot entre crochets, dont le résultat sera utilisé comme décalage en avant par rapport à l'enregistrement de regroupement actuel. Par exemple, Suivant (2) - obtenir le suivant à partir de l'enregistrement suivant.

Si l'enregistrement suivant sort du groupement, il est considéré qu'il n'y a pas d'enregistrements. Par exemple, s'il y a 3 enregistrements et que Next () est reçu pour le troisième enregistrement, alors 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 (actuel). Vous devez obtenir l'enregistrement actuel.

Lors de la récupération du total de regroupement, le premier enregistrement est obtenu.

  • BoundaryValue. La nécessité d'obtenir un enregistrement par la valeur spécifiée... Après le mot BoundingValue entre parenthèses, vous devez spécifier une expression avec la valeur dont vous souhaitez démarrer le fragment, le premier champ de classement.

En tant qu'enregistrement, le premier enregistrement sera obtenu, dont la valeur du champ de classement est supérieure ou égale à la valeur spécifiée. Par exemple, si le champ Période est utilisé comme champ de classement et qu'il a les valeurs 01/01/2010, 01/02/2010, 01/03/2010, et que vous souhaitez obtenir une BoundingValue (DateHeure (2010, 1, 15)), vous recevrez un enregistrement avec la date 01.02. 2010.

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

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 le mot-clé Croissant (pour l'ordre croissant), Décroissant (pour l'ordre décroissant) et Classement automatique (pour ordonner les champs référencés en fonction des champs selon lesquels vous souhaitez classer l'objet référencé). Le mot Réorganisation automatique peut être utilisé à la fois avec Croissant et Décroissant.

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

Type: chaîne. Identique au tri. Utilisé pour organiser les enregistrements hiérarchiques. S'il n'est pas spécifié, le composeur 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 pour déterminer l'enregistrement précédent ou suivant dans le cas où plusieurs enregistrements ont la même valeur de classement:

  • Signifie séparément qu'une séquence d'enregistrements ordonnés est utilisée pour définir les enregistrements précédent et suivant. Valeur par défaut.
  • Ensemble signifie que les enregistrements précédent et suivant sont déterminés en fonction des valeurs des expressions de classement.

Par exemple, si la séquence résultante est triée par date:

Date Nom complet Valeur
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ée, alors:

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

§ si le fragment calculé est défini comme Actuel, Actuel (respectivement, les paramètres Début et Fin), alors pour l'enregistrement 2, ce fragment sera constitué d'un enregistrement 2. Expression Calculer Expression («Somme (Valeur)», Actuel, Actuel) sera égal à 20.

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

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

§ si le fragment calculé est défini comme Actuel, Actuel (respectivement, les paramètres Début et Fin), alors pour l'enregistrement 2, ce fragment sera constitué des enregistrements 2 et 3. Expression Calculer l'expression («Somme (Valeur)», Actuel, Actuel) sera égal à 50.

Lorsque vous spécifiez la valeur de paramètre égale à Together, dans les paramètres Start et End, vous ne pouvez pas spécifier de décalage pour les positions First, Last, Previous, Next.

Calculer l'expression ("Sum (SumTurnover)", "First", "Current")

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

Évaluer l'expression ("Cours", "Précédent")

liste nouveau les fonctions:

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

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

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

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

Valeur remplie(<Выражение>) - Renvoie True si la valeur est différente de la valeur de ce type par défaut, non NULL, non nul, non indéfini. Pour les valeurs booléennes, un contrôle nul est effectué. Pour les chaînes, il est vérifié l'absence de caractères non blancs

Format(<Выражение>, <Форматная строка>) - Récupère la chaîne formatée de la valeur transmise. La chaîne de format est définie conformément à la chaîne de format du système 1C: Enterprise.

Sous-chaîne(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - Cette fonction est conçue pour extraire une sous-chaîne d'une chaîne.

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

Ligne(<Выражение>) - Si un tableau est passé en paramètre, la fonction renvoie une chaîne contenant des représentations sous forme de chaîne de tous les éléments du tableau, séparés par des symboles «; «. Si un tableau de valeurs est passé en paramètre, la fonction renvoie une chaîne contenant des représentations sous forme de chaîne de toutes les lignes du tableau de valeurs, et les représentations de cellule de chaque ligne sont séparées par «; ", Et chaînes - avec un caractère de saut de ligne. Si un élément a une représentation sous forme de chaîne vide, la chaîne est affichée à la place de sa représentation<Пустое значение>.

Connectez-vous en tant qu'étudiant

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

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

Le but de ce tutoriel sera:

  • Rédigez un rapport qui affiche une liste des aliments (répertoire des aliments), leur teneur en calories et leur goût.
  • Regroupez les produits par couleur.
  • En savoir plus sur la synthèse (ressources) et les champs calculés.

Créer un nouveau rapport

Comme dans les leçons précédentes, ouvrez la base " Épicerie"dans le configurateur et créez nouveau rapport à travers le menu " Fichier"->"Nouveau...":

Type de document - rapport externe:

Sous la forme de paramétrage du rapport, écrivez le nom " Lecon 3"et appuyez sur le bouton" Schéma de composition des données ouvertes":

Laissez le nom de schéma par défaut et cliquez sur " Terminé":

Ajouter une requête via le constructeur

Sur le " Base de données"pousser vertsigne plus et sélectionnez l'élément " Ajouter un ensemble de données - requête":

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

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

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

Il s'est avéré comme ceci:

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

Nous formons les paramètres pour la présentation du rapport

Allez dans l'onglet " Réglages"et cliquez sur baguette magique, appeler constructeur de paramètres:

Choix du type de rapport " liste... "et appuyez sur le bouton" Plus loin":

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

Faites glisser de la colonne de gauche vers la marge de droite " Couleur"- ce sera regroupement lignes dans le rapport. Cliquez sur " D'accord":

Et voici le résultat du travail du constructeur. La hiérarchie de notre rapport:

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

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

Changer l'ordre des colonnes

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

Sauvegardons le rapport et rouvrons-le en mode utilisateur:

Génial, tellement mieux.

Résumer (quantité) par teneur en calories

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

Pour cela, il existe un mécanisme de calcul des ressources.

Accédez à la " Ressources"et faites glisser le champ" Teneur en calories"(nous allons le résumer) de la colonne de gauche vers la droite.

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

Nous sauvegardons et générons un rapport:

Nous avons maintenant des totaux pour chacun des groupes et pour le rapport dans son ensemble.

Récapitulation (moyenne) par teneur en calories

Maintenant, faisons en sorte qu'une colonne de plus s'affiche moyenne teneur en calories des produits par groupes et en général selon le rapport.

Vous ne pouvez pas toucher la colonne déjà existante "Teneur en calories" - la somme totale y est déjà affichée, par conséquent prenons un autre champqui sera copie exacte champs "Teneur en calories".

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

Allez dans l'onglet " Champs calculés"et cliquez sur vertsigne plus:

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

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

Faisons seconde façon. Pour ce faire, accédez à la " Réglages", choisissez" rapport"(après tout, nous voulons ajouter le champ dans son ensemble au rapport), sélectionnez l'onglet ci-dessous" Champs sélectionnés"et faites glisser le champ" Teneur moyenne en calories"de la colonne de gauche vers la droite:

Il s'est avéré comme ceci:

Nous sauvegardons et générons un rapport:

Le champ est apparu et on voit que ses valeurs sont les valeurs du champ "Teneur en calories". Bien!

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

De plus, dans la colonne " Expression"choisir" Moyenne (calories moyennes)":

Nous sauvegardons et générons un rapport:

On voit que pour les groupes, c'est-à-dire pour chaque couleur, et pour le rapport dans son ensemble, la valeur moyenne a été calculée assez correctement. Mais il y a entrées supplémentaires pour les produits individuels (pas pour les groupes) que nous souhaitons supprimer du rapport.

Savez-vous pourquoi ils sont apparus (valeurs non par groupe)? Parce que lorsque nous avons ajouté le " Teneur moyenne en calories"dans les paramètres du rapport, à la deuxième étape, nous avons sélectionné l'ensemble du rapport dans son ensemble et ce nouveau champ a frappé l'élément " Détaillé records".

Corrigeons l'erreur. Pour ce faire, revenons à la " Réglages", sélectionnez" Dossiers détaillés"d'abord d'en haut (étape 2), puis" Dossiers détaillés"ci-dessous (étape 3), accédez à l'onglet" Choisi des champs"et nous verrons un élément dans sa colonne de droite" Auto".

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

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

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

Et voici notre domaine " Teneur moyenne en calories"qui est arrivé ici à partir de l'élément" rapport"quand nous l'avons traîné là-bas. décollage case à cocher à côté de ce champ pour supprimer sa sortie.

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

Jetons un coup d'œil aux trois premiers onglets du schéma de composition des données (1C ACS) - ensemble de données, liens d'ensemble de données et champs calculés.

Ensemble de données dans 1C ACS

L'ensemble de données comprend la capacité création de trois objets - requête, objet et union, revenons plus en détail sur chacun d'eux:

Il s'agit d'une demande régulière qui est formée en cliquant sur le bouton Constructeur de requête. Si l'indicateur de saisie semi-automatique est défini, tous les détails sélectionnés tomberont automatiquement dans les champs de l'ensemble de données. Il est également possible de personnaliser le remplissage des champs dans la requête sur l'onglet Composition des données, où il y a trois onglets:

Tables, nous sélectionnons ici les tables qui participeront à la formation du rapport, généralement les données par défaut sont sélectionnées, car dans l'onglet Tables et champs, nous avons déjà sélectionné les documents, livres de référence, registres dont nous avons besoin ...

Champs, ici nous sélectionnons les objets qui doivent être inclus dans le rapport, l'indicateur enfant indique s'il y aura ou non des éléments enfants disponibles pour l'objet, il est logique que l'indicateur ne puisse pas être défini sur True pour les données de type chaîne, numérique et similaires.

Conditions, nous sélectionnons ici les objets qui peuvent être utilisés dans les conditions de l'ACS.

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

Tout d'abord, nous allons créer un schéma de mise en page de la composition des données du document et nommer l'ACS (par exemple: 1C ACS), créer un objet dedans, puis remplir les champs, par exemple, nous avons le document partie tabulaire marchandises avec conditions requises - nomenclature, quantité et prix.

Ajoutons trois champs et remplissons le champ pour chaque colonne avec le nom des détails, le reste des colonnes sera rempli automatiquement:

Créons un bouton sur le formulaire de document, décrivons le mécanisme de travail dans formulaires gérés:

& Sur le client

Impression de procédure ()

OurReport \u003d PrintOnServer (); // appelle la fonction sur le serveur

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

Fin de la procédure

& Sur le serveur

Fonction PrintOnServer ()

DocumentObject \u003d FormAvailableValue ("Object");

//nous plaçons la section tabulaire Marchandises dans une structure nommée GoodsSKD de la même manière que nous avons indiqué dans l'ACS lui-même le nom de l'objet contenant les données

Dataset \u003d Nouvelle structure;

SetData.Insert ("GoodsSKD", DocumentObject.Goods);

//obtenir notre mise en page et définir les paramètres par défaut afin que tous les paramètres de sortie de rapport soient extraits de notre mise en page

OurMakeup \u003d DocumentObject.GetMakeup («SKD»);

Settings \u003d OurLayout.Default Paramètres;

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

Layout Composer \u003d New DataComposition Layout Composer;

LayoutComposition \u003d LayoutComposer.Execute (OurLayout, Paramètres);

//effectuer la composition des données avec notre ensemble de données

Processeur DataComposition \u003d Nouveau processeur DataComposition;

DataCompositionProcessor.Initialize (LayoutDataset);

//nous formons une feuille de calcul et y affichons notre rapport

ReportDocument \u003d Nouveau SpreadsheetDocument;

OutputProcessor \u003d Nouveau OutputProcessorDataCompositionResultInTableDocument;

OutputProcessor.SetDocument (ReportDoc);

OutputProcessorOutput (processeur de composition de données);

Retour du document de rapport;

FinFonction

Si vous le souhaitez, vous pouvez obtenir les zones et toute autre mise en page et également les afficher dans ce rapport, par exemple, nous avons une mise en page typique pour la formation d'un paiement et un en-tête y est très bien créé, puis, pour que nous ne fassions pas de travail inutile, nous commençons simplement par obtenir la mise en page, afficher l'en-tête, puis nous générerons et afficherons notre rapport sur l'ACS.

À PROPOS unification

Nous pouvons y placer nos requêtes et nos objets, mais contrairement à un lien, il ajoute simplement des tables les unes aux autres, c'est-à-dire que si nous lions deux tables identiques, nous nous retrouvons avec une, et une fois combiné, il doublera, considérons un exemple simple :

Nous avons des tables:

Lors de la communication, nous recevrons:

Et lors de la combinaison:

Considérons maintenant le remplissage des colonnes dans les jeux de données (nous en sauterons quelques-unes, puisqu'elles sont liées à d'autres onglets, nous y reviendrons dans les prochains articles):

- champ, indiquez le nom général des accessoires;

­­- façon, nous indiquons le nom du requis par lequel nous y ferons référence dans l'ACS, par exemple, dans Champs calculés;

- titre, indiquez le nom de la variable qui sera affichée dans le rapport;

- restriction de marge, indiquez la disponibilité de ce matériel;

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

- expression par laquelle la représentation du champ est évaluée, il est pratique à utiliser lorsque nous devons modifier un peu l'affichage des détails, par exemple, nous en avons besoin après le nom nomenclature a été retiré entrepôt, sur lequel il se trouve, puis remplissez les informations suivantes: Nomenclature + «en stock» + Entrepôt. Je répète que l'adresse aux détails s'effectue à travers le nom indiqué dans la colonne façon;

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

- type de valeur, le type de valeur de la variable est indiqué, il faut renseigner si vous allez utiliser le champ suivant;

- valeurs disponibles, ne fonctionne que lorsqu'il est rempli type de valeur, ouvrez le formulaire de remplissage et dans la colonne Valeur nous indiquons l'élément à modifier, selon le type, il peut s'agir d'objets prédéfinis ou numériques, par exemple, des attributs, avoir des valeurs simples, en soumission nous indiquons ce que nous devons changer, un exemple de type booléen:

- enregistrementparamètre standard le format du champ, similaire au paramètre dans les formulaires gérés, vous permet de personnaliser plus précisément et magnifiquement la sortie de certains attributs.

Liens de jeux de données dans 1C ACS

Seulement joint gauche, selon le principe similaire à connexions dans les requêtes, dans source de communication nous indiquons la table principale de la connexion, en destinataire Additionnel. DANS source d'expressionet récepteur d'expression nous indiquons les détails par lesquels la connexion aura lieu. Nous examinerons les colonnes restantes plus en détail lors de l'analyse de l'onglet. Options... Si non communication supplémentaire avec les paramètres, il est recommandé de faire la connexion dans la requête, cela accélérera le rapport.

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

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

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

1. Configurez une demande dans l'ACS.

2. Configuration des champs calculés dans l'ACS

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

4. Nous démarrons 1C Enterprise 8.2.14. Nous ouvrons le rapport. Nous formons, nous obtenons.

Description des nouvelles fonctions elles-mêmes:

1. La date actuelle ()

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

2. CALCULER L'EXPRESSION ()

Syntaxe:

Évaluer l'expression (,)

La description:

La fonction est destinée à évaluer une expression dans le contexte d'un certain regroupement.

La fonction prend en compte la sélection des regroupements, mais ne prend pas en compte les sélections hiérarchiques.

La fonction ne peut pas être appliquée à un groupement dans la sélection de groupe de ce groupement. Par exemple, dans la sélection de la nomenclature de regroupement, vous ne pouvez pas utiliser l'expression CalculateExpression ("Sum (SumTurnover)", "TotalTotal")\u003e 1 000... Mais une telle expression peut être utilisée dans la sélection hiérarchique.

Si l'enregistrement de fin précède l'enregistrement de début, on considère qu'il n'y a pas d'enregistrements pour le calcul des données détaillées et le calcul des fonctions d'agrégation.

Lors du calcul des expressions d'intervalle pour le total général (le paramètre de regroupement est défini sur Total général), il est supposé qu'il n'y a pas d'enregistrements pour le calcul des données détaillées et le calcul des fonctions d'agrégation.

Éditeur de liens de mise en page lors de la génération d'une expression de fonction EvaluateExpression, au cas où l'expression de classement contiendrait des champs qui ne peuvent pas être utilisés dans le regroupement, remplace la fonction EvaluateExpression sur NUL.

Options

Un type: Ligne... L'expression à évaluer.

Un type: Ligne... Contient le nom du groupement dans le contexte duquel l'expression doit être évaluée. Si une chaîne vide est utilisée comme nom de regroupement, le calcul sera effectué dans le contexte du regroupement actuel. Si la chaîne GeneralTotal 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 groupement parent portant ce nom.

Par exemple:

Montant (Sales.SumTurnover) / Calculer ("Montant (Sales.SumTurnover)", "TotalTotal")

Dans cet exemple, le résultat est le rapport de la somme sur le champ Ventes.AmountTurnover regrouper les enregistrements à la somme du même champ dans la mise en page entière;

Un type: Ligne... Le paramètre peut prendre les valeurs suivantes:

· Somme finale - l'expression sera évaluée pour tous les enregistrements de regroupement.

· Hiérarchie - l'expression sera évaluée pour l'enregistrement hiérarchique parent, le cas échéant, et pour l'ensemble du groupement, s'il n'y a pas d'enregistrement hiérarchique parent.

· Regroupement - l'expression sera évaluée pour l'enregistrement de groupe actuel du groupement.

· RegroupementNonResource - lors du calcul d'une fonction pour un enregistrement de groupe par ressources, l'expression sera calculée pour le premier enregistrement de groupe du groupement d'origine.

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

Le compositeur du modèle de composition de données, lors de la génération du modèle de composition de données, lors de la sortie du champ de ressources par lequel le regroupement est effectué vers le modèle, place une expression calculée à l'aide de la fonction EvaluateExpression () , en spécifiant le paramètre RegroupementNonResource... Pour le reste des ressources, les expressions de ressources régulières sont regroupées par ressource.

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

· Première

· Dernier

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

· Suivant Suivant)

· Actuel

· Valeur limite (BoundaryValue) Valeur limite

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

· Première... Vous devez obtenir le premier enregistrement de regroupement. Après le mot entre parenthèses, vous pouvez spécifier une expression dont le résultat sera utilisé comme décalage par rapport au début du regroupement. La valeur résultante doit être un nombre entier supérieur à zéro. Par exemple, First (3) - obtenir le troisième enregistrement depuis le début du regroupement.

Si le premier enregistrement sort des limites de regroupement, on considère qu'il n'y a pas d'enregistrements. Par exemple, s'il y a 3 enregistrements et que vous souhaitez obtenir le premier (4), il est considéré qu'il n'y a aucun enregistrement.

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

Si le dernier enregistrement est en dehors des limites de regroupement, alors il est considéré qu'il n'y a pas d'enregistrements. Par exemple, s'il y a 3 enregistrements et que vous souhaitez obtenir le dernier (4), il est considéré qu'il n'y a aucun enregistrement.

· Précédent (précédent)... Vous devez obtenir l'enregistrement de regroupement précédent. Une expression peut être spécifiée après le mot entre crochets, dont le résultat sera utilisé comme décalage par rapport à l'enregistrement de regroupement actuel. Par exemple, Précédent (2) - récupère le précédent à partir de l'enregistrement précédent.

Si l'enregistrement précédent va au-delà du regroupement (par exemple, pour le deuxième enregistrement de regroupement que vous souhaitez obtenir Précédent (3), le premier enregistrement de regroupement est obtenu.

Lors de la récupération de l'enregistrement précédent pour le total de regroupement, le premier enregistrement est pris en compte.

· Suivant Suivant)... Vous devez obtenir le prochain enregistrement de regroupement. Une expression peut être spécifiée après le mot entre crochets, dont le résultat sera utilisé comme décalage en avant de l'enregistrement de regroupement actuel. Par exemple, Suivant (2) - obtenir le suivant à partir de l'enregistrement suivant.

Si l'enregistrement suivant sort du groupe, il est considéré qu'il n'y a pas d'enregistrements. Par exemple, s'il y a 3 enregistrements et que Next () est reçu pour le troisième enregistrement, alors 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 du total de regroupement, le premier enregistrement est obtenu.

· Valeur limite (BoundaryValue)... La nécessité d'obtenir un enregistrement à la valeur spécifiée. Après le mot Valeur limite entre parenthèses, vous devez spécifier une expression avec la valeur de laquelle vous voulez commencer un fragment, le premier champ de classement.

En tant qu'enregistrement, le premier enregistrement sera obtenu, dont la valeur du champ de classement est supérieure ou égale à la valeur spécifiée. Par exemple, si le champ Période est utilisé comme champ de classement et qu'il a les valeurs 01.01.2010, 01.02.2010, 01.03.2010 et que vous souhaitez obtenir ConstrainingValue (DateTime (2010, 1, 15)), vous recevrez alors un enregistrement avec la date 02/01/2010.

Un type: Ligne... 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 un mot-clé Âge (pour trier par ordre croissant), Descendant (par ordre décroissant) et Commande automatique (pour trier les champs référencés par les champs par lesquels classer l'objet référencé). Mot Commande automatique peut être utilisé comme avec un mot Âge, donc avec le mot Descendant.

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

Un type: Ligne... Spécifie la règle pour déterminer l'enregistrement précédent ou suivant dans le cas où plusieurs enregistrements ont la même valeur de tri:

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

· Ensemble indique que les enregistrements précédent et suivant sont déterminés en fonction des valeurs des expressions de classement.

Par exemple, si la séquence résultante est triée par date:

Date Nom complet Valeur
1 01 janvier 2001

Ivanov M.

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

Séparément, puis:

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

Actuel, actuel (respectivement, paramètres Début et la fin), alors pour l'enregistrement 2, ce fragment sera constitué d'un enregistrement 2. L'expression sera égale à 20.

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

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

§ si le fragment calculé est défini comme Actuel, actuel (respectivement, paramètres Début et la fin), alors pour l'enregistrement 2, ce fragment sera constitué des enregistrements 2 et 3. Expression ComputeExpression ("Sum (Value)", Current, Current) aura 50 ans.

Lorsqu'elle est spécifiée, la valeur du paramètre est Ensemble, en paramètres Début et la fin vous ne pouvez pas spécifier de décalage pour les positions Premier, dernier, précédent, suivant.

Calculer l'expression ("Sum (SumTurnover)", "First", "Current")

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

Évaluer l'expression (cours, précédent)

liste nouveau les fonctions:

EvaluateExpressionGroupedArray(,) -

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

EvaluateExpressionGroupedValuesTable(,) -

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

Valeur remplie() - Renvoie True si la valeur est différente de la valeur par défaut du type donné, autre que NULL, autre qu'une référence vide, autre que Undefined. Pour les valeurs booléennes, un contrôle nul est effectué. Pour les chaînes, il est vérifié l'absence de caractères non blancs

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

Sous-chaîne(,,) - Cette fonction est conçue pour extraire une sous-chaîne d'une chaîne.

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

Ligne() - Si un tableau est passé en paramètre, la fonction renvoie une chaîne contenant des représentations sous forme de chaîne de tous les éléments du tableau séparés par des caractères ";". Si une table de valeurs est transmise en tant que 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 des représentations de cellule de chaque ligne séparées par des caractères ";" et des chaînes - par saut de ligne. Si un élément a une représentation sous forme de chaîne vide, une chaîne s'affiche à la place de sa représentation.

Partagez ceci