Comment définir la date actuelle dans ACS. Réception des prix à la date du document dans une demande

Connectez-vous au site en tant qu'étudiant

Système de composition de données 1C 8.3 pour débutants : premier rapport sur SKD

Si vous n'avez pas lu l'introduction de ce module, veuillez la lire : .

Pour compléter les leçons, vous aurez besoin 1C 8.3 (pas inférieur 8.3.13.1644 ) .

Si vous avez déjà installé 1C version 8.3, utilisez-le. Sinon, téléchargez et installez la version éducative, que 1C produit spécifiquement à des fins éducatives : .

Le raccourci suivant devrait apparaître sur votre bureau :

Pour toutes les leçons de cette série, nous utiliserons la base de données Gastronom que j'ai préparée. Cela coïncide complètement avec la base que nous avons utilisée dans les modules scolaires lors de l'étude des requêtes. J’attends donc de vous que vous connaissiez ses ouvrages et documents de référence.

Si vous l'avez supprimé, téléchargez-le à nouveau en utilisant le suivant, décompressez-le et ajoutez-le à la liste des bases de données.

Enfin, lieu de travail configuré et nous allons maintenant créer notre premier rapport ensemble en utilisant le système de composition des données. Il sera très simple de démontrer les capacités générales d'un système de composition de données (en abrégé SKD).

Fixer un objectif

Objectif de cette leçon- créer un rapport qui, en mode utilisateur, affiche une liste de clients avec les champs suivants :

  • Nom
  • Sol
  • Couleur préférée du client.

Le rapport doit être externe. Cela signifie qu'il sera créé et configuré dans le configurateur, puis enregistré en tant que fichier séparé (externe) sur l'ordinateur.

Pour générer un tel rapport dans 1C, l'utilisateur devra lancer la base de données en mode utilisateur, ouvrir ce fichier et cliquer sur le bouton « Générer ».

Aller!

Création d'un rapport

Nous lançons le configurateur de la base de données Gastronom :

Depuis le menu principal, sélectionnez "Fichier" -> "Nouveau..." :

Sélectionnez « Rapport externe » :

Création d'un diagramme de disposition des données dans le rapport

La fenêtre de création d'un rapport externe s'ouvre. Pour le nom, saisissez : " Leçon 1", puis appuyez sur le bouton " Diagramme de composition de données ouvertes":

Le concepteur de création de schéma a démarré. Nous sommes d'accord avec le nom par défaut " Schéma de présentation des données principales" et appuyez sur le bouton " Prêt":

Le principal a ouvert fenêtre de travail, avec de nombreux signets et champs, dans lesquels nous configurerons notre schéma de présentation des données.

Il n’y a pas lieu d’avoir peur : il y a vraiment beaucoup d’opportunités ici, mais nous n’avons pas besoin de toutes. Surtout lors du premier cours.

Nous sommes maintenant sur le signet " Ensembles de données"Nous y resterons."

Nous écrivons une requête via le constructeur

Le système de composition des données (en abrégé DCS) nous oblige à données, qu'il affichera à l'utilisateur.

Le moyen le plus simple - rédiger une demandeà la base. À l'école, nous avons appris à rédiger et à comprendre des demandes. J'attends donc de vous que vous possédiez les compétences appropriées.

Cliquer sur vert signe plus et dans la liste déroulante, sélectionnez l'élément " Ajouter un ensemble de données – Requête":

Notre tâche est de rédiger le texte de la demande dans ce champ. Avez-vous déjà oublié comment procéder ?

Je vais vous donner un indice :

Dans cette requête nous avons sélectionné trois champs (" Nom", "Sol" Et " Couleur préférée") du tableau " Annuaire.Clients".

Mais ne vous précipitez pas pour écrire manuellement ce texte dans le champ « Demande ».

Nous allons maintenant créer la même requête visuellement, uniquement en utilisant la souris. Cette méthode s'appelle " Constructeur de requête".

Pour appeler ce constructeur, cliquez sur le bouton " Constructeur de requêtes..." en haut à droite du champ "Demande" :

Dans la fenêtre qui s'ouvre, faites glisser le tableau " Clientèle" de la première colonne à la seconde pour indiquer que c'est à partir de cette table que l'on va interroger les données :

Cela s'est passé comme ceci :

Ensuite, nous ouvrirons la table " Clientèle"dans la deuxième colonne par signe" Plus"pour voir tous ses champs et faire glisser le champ" Nom" de la deuxième colonne à la troisième pour indiquer qu'à partir de cette table nous devons interroger le champ "Nom":

Cela s'est passé comme ceci :

Faisons de même avec les champs" Sol" Et " Couleur préférée". Le résultat sera comme ceci :

Cliquez sur le bouton "OK" pour quitter le générateur de requêtes et constater que le texte de la requête est automatiquement ajouté au champ "Requête".

De plus, sur la base du texte de la demande, 1C lui-même a extrait les noms des champs (la zone au-dessus de la demande) qui seront utilisés par le schéma de composition des données :

Maintenant que nous avons compilé une demande, l'ACS sait comment obtenir les données pour le rapport.

Configuration de la présentation des données

Il reste en quelque sorte visualiser ces données pour l'utilisateur sous la forme formulaire imprimé. Et c’est là que ACS peut faire des merveilles !

Pour créer un tel miracle, allons dans l'onglet " Paramètres" et cliquez sur le bouton du concepteur de paramètres ( baguette magique):

Dans la fenêtre qui s'ouvre, précisez le type de rapport " Liste" et appuyez sur " Plus loin":

Dans la fenêtre suivante, sélectionnez (en faisant glisser) les champs qui doivent être affichés dans la liste (faites glisser tous ceux dont nous disposons : " Couleur préférée", "Nom" Et " Sol"):

Obtenons ce résultat et appuyons sur le bouton " D'ACCORD":

Le concepteur de paramètres s'est fermé et l'élément " Entrées détaillées":

Le rapport est prêt, vérifions-le. Pour ce faire, enregistrez d'abord le rapport sous fichier externe.

Enregistrez le rapport sous forme de fichier

Ouvrez l'élément du menu principal " Déposer"->"Sauvegarder":

Je vais l'enregistrer sur mon bureau sous le nom " Leçon 1":

Vérification du rapport en mode utilisateur

Enfin, fermons le configurateur et allons dans notre base de données en mode utilisateur :

Nom d'utilisateur "Administrateur", pas de mot de passe :

Dans le menu, sélectionnez l'élément " Déposer"->"Ouvrir...":

Et spécifiez le fichier de rapport (je l'ai enregistré sur le bureau sous le nom « Lesson1.erf ») :

Le formulaire de rapport s'est ouvert, cliquez sur le bouton " Formulaire":

Prêt! Voici notre imprimable avec une liste de clients, leur couleur préférée et leur sexe :

Le formulaire imprimable peut être facilement imprimé. Pour ce faire, sélectionnez simplement l'élément " Déposer"->"Joint...":

C'est ainsi que, sans programmation, nous avons réussi à créer un rapport à part entière que les utilisateurs peuvent ouvrir dans leurs bases de données, générer et imprimer.

étudiants - je réponds par mail, mais regarde d'abord.

Connectez-vous au site en tant qu'étudiant

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

L’un des domaines les plus importants des logiciels d’entreprise est le reporting. Le sort d'une entreprise peut dépendre (et non au sens figuré !) de la facilité avec laquelle il est possible d'adapter un rapport existant aux besoins changeants de l'entreprise (et de la législation) ou d'en créer un nouveau, qu'il s'agisse d'un rapport destiné au bureau des impôts. ou un diagramme de la dépendance de la demande de biens sur la saison et d'autres facteurs . Un système de reporting puissant et flexible qui permet d'extraire facilement les données nécessaires du système, de les présenter sous une forme compréhensible, permettant à l'utilisateur final de reconfigurer un rapport standard pour voir les données sous un nouveau jour - c'est l'idéal que chaque le système d’affaires devrait s’efforcer de le faire.

Dans la plateforme 1C:Enterprise, un mécanisme appelé « Data Composition System » (en abrégé DCS) est chargé de générer des rapports. Dans cet article, nous allons essayer de donner brève description idées et architecture du mécanisme ACS et de ses capacités.


ACS est un mécanisme basé sur une description déclarative des rapports. Le système de contrôle d'accès est conçu pour générer des rapports et pour afficher des informations avec une structure complexe. À propos, en plus de développer des rapports, le mécanisme ACS est également utilisé dans 1C:Enterprise dans une liste dynamique, un outil d'affichage d'informations de liste avec des fonctionnalités riches (affichage de listes plates et hiérarchiques, conception conditionnelle de lignes, regroupements, etc. ).

Un peu d'histoire

Dans la toute première version de la plateforme 1C:Enterprise 8, version 8.0, les rapports étaient réalisés comme ceci :
  1. Une ou plusieurs requêtes ont été écrites dans le langage de requête 1C (langage de type SQL, plus d'informations ci-dessous).
  2. Un code a été écrit pour transférer les résultats des requêtes exécutées vers une feuille de calcul ou un graphique. Le code pourrait également effectuer un travail qui ne pourrait pas être effectué dans une requête - par exemple, il calculait des valeurs à l'aide du langage 1C intégré.
L'approche est simple, mais pas la plus pratique : paramètres visuels au minimum, tout doit être programmé « main à main ». Et l'un des atouts à ce moment-là était complètement nouvelle plateforme"1C:Enterprise 8" est une minimisation dans solution d'application la quantité de code qui doit être écrite manuellement, notamment via la conception visuelle. Il serait logique de suivre la même voie dans le mécanisme de reporting. Cela a été réalisé en développant un nouveau mécanisme : le système de composition des données.

L'une des idées à la base du système de contrôle d'accès était la flexibilité et la personnalisation des rapports, accessibles à la fois au développeur et à l'utilisateur final. Idéalement, j'aimerais donner à l'utilisateur final accès au même ensemble d'outils de conception de rapports que le développeur. Il serait logique de créer un ensemble unique d'outils accessibles à tous. Eh bien, puisque les outils nécessitent la participation de l'utilisateur final, cela signifie que l'utilisation de la programmation doit être réduite au minimum (il est préférable de l'éliminer complètement) et que les paramètres visuels doivent être utilisés au maximum.

Formulation du problème

La tâche de l'équipe de développement était de créer un système de reporting basé non pas sur une approche algorithmique (c'est-à-dire via l'écriture de code), mais sur une approche déclarative de création de rapports. Et nous pensons que le problème a été résolu avec succès. D'après notre expérience, environ 80 % des rapports requis peuvent être mis en œuvre à l'aide d'ACS sans une seule ligne de code (sauf pour l'écriture de formules pour les champs calculés), principalement via des paramètres visuels.
Le développement de la première version du SDS a nécessité environ 5 années-personnes.

Deux langues

Il existe deux langages impliqués dans la création de rapports. L'un est un langage de requête utilisé pour récupérer des données. Le second est le langage d'expression de composition de données, destiné à écrire des expressions utilisées dans diverses parties du système, par exemple dans les paramètres de composition de données, pour décrire les expressions des champs utilisateur.

Langage de requête

Le langage de requête est basé sur SQL et est facile à apprendre pour ceux qui connaissent SQL. Exemple de demande :

Il est facile de voir des analogues des sections standard pour les requêtes SQL - SELECT, FROM, GROUP BY, ORDER BY.

Dans le même temps, le langage de requête contient un nombre important d'extensions visant à refléter les spécificités des problèmes financiers et économiques et à maximiser la réduction des efforts de développement de solutions applicatives :

  • Accéder aux champs à l'aide d'un point. Si les champs d'une table sont de type référence (ils stockent des liens vers des objets d'une autre table), le développeur peut y faire référence dans le texte de la requête via « . », et le système ne limite pas le nombre de niveaux d'imbrication. de ces liens (par exemple, Commande client. Contrat. Organisation. Téléphone).
  • Formation multidimensionnelle et multiniveau des résultats. Les totaux et sous-totaux sont formés en tenant compte du regroupement et de la hiérarchie, les niveaux peuvent être parcourus dans n'importe quel ordre avec sommation et la construction correcte des totaux en fonction des dimensions temporelles est assurée.
  • Prise en charge des tables virtuelles. Les tables virtuelles fournies par le système vous permettent d'obtenir des données presque prêtes à l'emploi pour la plupart des tâches applicatives sans avoir besoin de créer des requêtes complexes. Ainsi, un tableau virtuel peut fournir des données sur les soldes de produits par périodes à un moment donné. Où tables virtuelles utiliser au maximum les informations stockées, par exemple les totaux précédemment calculés, etc.
  • Tableaux temporaires. Le langage de requête vous permet d'utiliser des tables temporaires dans les requêtes. Avec leur aide, vous pouvez améliorer les performances des requêtes, dans certains cas réduire le nombre de blocages et rendre le texte de la requête plus facile à lire.
  • Requêtes par lots. Pour plus travail pratique Avec les tables temporaires, le langage de requête prend en charge le travail avec des requêtes par lots - ainsi, la création d'une table temporaire et son utilisation sont placées dans une seule requête. Une requête batch est une séquence de requêtes séparées par des points-virgules (";"). Les requêtes du lot sont exécutées les unes après les autres. Le résultat de l'exécution d'une requête batch, selon la méthode utilisée, sera soit le résultat renvoyé Dernière requete package, ou un tableau de résultats de toutes les requêtes du package dans l’ordre dans lequel les requêtes du package suivent.
  • Récupération de représentations de champs de référence. Chaque table d'objets (dans laquelle un ouvrage ou un document de référence est stocké) possède un champ virtuel - « Vue ». Ce champ contient une représentation textuelle de l'objet et facilite le travail du créateur du rapport. Ainsi, pour un document, ce champ contient toutes les informations clés - le nom du type de document, son numéro et sa date (par exemple, « Vente 000000003 du 06/07/2017 17:49:14 »), évitant ainsi au développeur de écrire un champ calculé.
  • et etc.
Le mécanisme de requête modifie automatiquement la requête en tenant compte des rôles auxquels appartient l'utilisateur au nom duquel la requête est exécutée (c'est-à-dire que l'utilisateur ne verra que les données qu'il a le droit de voir) et des options fonctionnelles (c'est-à-dire conformément avec ceux configurés dans la fonctionnalité de la solution applicative).

Il existe également des extensions de langage de requête spéciales pour les systèmes de contrôle d'accès. L'expansion est effectuée à l'aide d'instructions syntaxiques spéciales entourées d'accolades et placées directement dans le corps de la requête. À l'aide d'extensions, le développeur détermine les opérations que l'utilisateur final pourra effectuer lors de la personnalisation du rapport.

Par exemple:

  • CHOISIR. Cette phrase décrit les champs que l'utilisateur pourra sélectionner pour la sortie. Après ça mot-clé Séparés par des virgules, les alias des champs de la liste de sélection de requête principale qui seront disponibles pour la configuration sont répertoriés. Exemple : (SELECT article, entrepôt)
  • OÙ. Les champs sur lesquels l'utilisateur peut appliquer une sélection sont décrits. Cette proposition utilise des champs de table. L'utilisation d'alias de champs de liste de sélection n'est pas autorisée. Chaque partie de l'union peut contenir son propre élément WHERE. Exemples : (WHERE Article.*, Entrepôt), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
  • et etc.
Exemple d'utilisation d'extensions :

Langage d'expression de composition de données

Le Data Composition Expression Language est conçu pour écrire des expressions utilisées notamment pour décrire des expressions de champs personnalisés. SKD vous permet de définir des champs personnalisés dans un rapport en utilisant soit vos propres expressions, soit des ensembles d'options avec des conditions pour leur sélection (analogue à CASE en SQL). Les champs personnalisés sont similaires aux champs calculés. Ils peuvent être définis à la fois dans le configurateur et en mode 1C:Enterprise, mais les fonctions des modules communs ne peuvent pas être utilisées dans les expressions de champs personnalisés. Par conséquent, les champs personnalisés sont destinés à l’utilisateur plutôt qu’au développeur.

Exemple:

Le processus de création d'un rapport sur le système de contrôle d'accès

Lors de la création d'un rapport, nous devons créer une mise en page qui définit la manière dont les données seront affichées dans le rapport. Vous pouvez créer une mise en page basée sur un diagramme de mise en page des données. Un diagramme de présentation des données décrit l'essence des données fournies dans le rapport (où obtenir les données et comment contrôler leur présentation). Le schéma de composition des données constitue la base sur laquelle toutes sortes de rapports peuvent être générés. Le schéma de composition des données peut contenir :
  • demander un texte avec des instructions pour le système de composition des données ;
  • description de plusieurs ensembles de données ;
  • description détaillée des champs disponibles ;
  • décrire les relations entre plusieurs ensembles de données ;
  • description des paramètres d'acquisition des données ;
  • description de la disposition et des regroupements de champs ;
  • et etc.

Par exemple, vous pouvez ajouter une requête au schéma de composition de données en tant qu'ensemble de données et appeler le constructeur de requête, qui vous permet de créer graphiquement une requête de complexité arbitraire :

Le résultat du lancement du concepteur de requêtes sera le texte de la requête (dans le langage de requête 1C:Enterprise). Ce texte peut être ajusté manuellement si nécessaire :

Il peut y avoir plusieurs ensembles de données dans un schéma de présentation des données, les ensembles de données peuvent être liés dans la présentation de n'importe quelle manière, des champs calculés peuvent être ajoutés, des paramètres de rapport peuvent être spécifiés, etc. Il convient de mentionner une fonctionnalité intéressante du mécanisme de requête dans 1C:Enterprise. Les requêtes sont finalement traduites dans un dialecte SQL spécifique au SGBD avec lequel l'application fonctionne directement. En général, nous essayons d'utiliser au maximum les capacités des serveurs SGBD (nous sommes limités par le fait que nous utilisons uniquement les capacités disponibles simultanément dans tous les SGBD pris en charge par la plateforme 1C:Enterprise - MS SQL, Oracle, IBM DB2 , PostgreSQL). Ainsi, au niveau des requêtes dans les champs calculés, nous ne pouvons utiliser que les fonctions traduites en SQL.

Mais au niveau du schéma de composition des données, nous pouvons déjà ajouter des champs personnalisés et y utiliser des fonctions dans le langage de développement 1C intégré (y compris ceux écrits par nos soins), ce qui étend considérablement les capacités des rapports. Techniquement, cela ressemble à ceci - tout ce qui peut être traduit en SQL est traduit en SQL, la requête est exécutée au niveau du SGBD, les résultats de la requête sont placés dans la mémoire du serveur d'applications 1C et le SKD calcule les valeurs pour chaque enregistrement. ​​de champs calculés dont les formules sont écrites en langage 1C.


Ajout de champs personnalisés

Vous pouvez ajouter un nombre arbitraire de tableaux et de graphiques au rapport :


Concepteur de rapports


Rapport d'exécution

Grâce à SKD, l'utilisateur peut ajouter des sélections complexes au rapport (qui seront ajoutées à la demande aux bons endroits), une conception conditionnelle (permettant de formater différemment les champs affichés - avec police, couleur, etc., en fonction de leurs valeurs ) et beaucoup plus. .

Le processus de construction et de génération d’un rapport peut être brièvement décrit comme suit :

  • Le développeur au moment de la conception, avec l'aide d'un concepteur (ou au moment de l'exécution, à l'aide du code), détermine le schéma de présentation des données :
    • Texte de la/des demande(s)
    • Description des champs calculés
    • Relations entre les demandes (s'il y en a plusieurs)
    • Options de rapport
    • Paramètres par défaut
    • Etc.
  • Les paramètres ci-dessus sont enregistrés dans la mise en page
  • L'utilisateur ouvre le rapport
    • Effectue éventuellement des réglages supplémentaires (par exemple, modifie les valeurs des paramètres)
    • Clique sur le bouton « Générer »
  • Les paramètres utilisateur sont appliqués au schéma de composition des données défini par le développeur.
  • Une disposition de composition de données intermédiaire est formée, contenant des instructions sur l'endroit d'où recevoir les données. En particulier, les requêtes spécifiées dans la mise en page sont ajustées. Ainsi, les champs qui ne sont pas utilisés dans le rapport sont supprimés de la demande (ceci afin de minimiser la quantité de données reçues). Tous les champs qui participent aux formules de champs calculés sont ajoutés à la requête.
  • Le processeur de composition des données entre en jeu. Le processeur de mise en page exécute des requêtes, relie des ensembles de données, calcule les valeurs des champs et des ressources calculés et effectue un regroupement. En un mot, il effectue tous les calculs qui n'ont pas été effectués au niveau du SGBD.
  • Le processeur de sortie de données lance une demande d'exécution et affiche les données reçues dans un tableur, un graphique, etc.


Le processus de génération d'un rapport à l'aide du mécanisme ACS

Nous essayons de minimiser la quantité de données de rapport transférées du serveur vers l'application client. Lors de l'affichage de données dans une feuille de calcul, lors de l'ouverture d'une feuille de calcul, nous transférons depuis le serveur uniquement les lignes que l'utilisateur voit au début du document. Au fur et à mesure que l'utilisateur parcourt les lignes du document, les données manquantes sont téléchargées du serveur vers le client.

Paramètres personnalisés

Tous les outils ACS sont disponibles à la fois pour le développeur et l'utilisateur final. Mais la pratique a montré que l'utilisateur final est souvent intimidé par l'abondance des capacités des outils. De plus, dans la plupart des cas, l'utilisateur final n'a pas besoin de toute la puissance des paramétrages : il lui suffit d'avoir un accès rapide au paramétrage d'un ou deux paramètres du rapport (par exemple, période et contrepartie). À partir d'une certaine version de la plateforme, le développeur de rapports a la possibilité de marquer quels paramètres de rapport sont disponibles pour l'utilisateur. Cela se fait en cochant la case « Inclure dans les paramètres utilisateur ». De plus, les paramètres du rapport comportent désormais un indicateur « Mode d'affichage », qui prend l'une des trois valeurs suivantes :
  • Accès rapide. Le paramètre sera affiché directement en haut de la fenêtre du rapport.
  • Ordinaire. Le paramètre sera disponible via le bouton « Paramètres ».
  • Pas disponible. Le paramètre ne sera pas disponible pour l’utilisateur final.


Définition du mode d'affichage au moment de la conception


Afficher le paramètre en mode Accès rapide au moment de l'exécution (sous le bouton Générer)

Plans de développement

L'un de nos domaines prioritaires dans le développement de systèmes de contrôle d'accès est la simplification des paramètres utilisateur. Notre expérience montre que pour certains utilisateurs finaux, travailler avec les paramètres utilisateur reste une entreprise majeure. Nous en tenons compte et travaillons dans ce sens. En conséquence, il deviendra également plus facile pour les développeurs de travailler avec des systèmes de contrôle d'accès, car Comme auparavant, nous souhaitons fournir un outil unique pour configurer des rapports à la fois pour le développeur et l'utilisateur final.

Supposons que nous ayons reçu une tâche pour laquelle le client souhaite recevoir un rapport sur les documents « Ventes de biens et services » saisis dans la base de données, et pour chaque document il est nécessaire d'obtenir le prix du registre d'information « Prix des articles » à la date du document. Le rapport est rédigé pour la configuration « Manufacturing Enterprise Management » version 1.3.

L'enregistrement de la table des documents est rejoint par un enregistrement de la table virtuelle "Nomenclature Prix. SliceLast" selon les conditions correspondantes de la période, du type de prix et de l'article. Le type de prix est obtenu à partir des détails du document du même nom.

Le problème a plusieurs façons de le résoudre. Considérons-en deux : un rapport sur le système de contrôle d'accès utilisant deux ensembles de données et obtenant toutes les données nécessaires en une seule requête. Maintenant, dans l'ordre.

Utiliser ACS

Pour mettre en œuvre un tel rapport sur le système de contrôle d'accès, nous créerons deux ensembles de données dans le schéma de composition des données. Le premier recevra une liste de documents, le second recevra des prix pour les dates des documents en fonction de l'article sélectionné et du type de prix. Le rapprochement entre deux ensembles de données s'effectue par article, période (date du document) et type de prix. Du premier ensemble, il est nécessaire de transférer les paramètres « Nomenclature », « Type de prix » et « Période » au deuxième ensemble.

Le premier ensemble de données contient la requête suivante :

La requête sélectionne les champs suivants dans la table du document et dans la partie tabulaire « Produits » : « Lien », « Date », « Type de prix », « Nomenclature ». Examinons maintenant le deuxième ensemble de données :

Dans le deuxième ensemble de données, vous devez faire attention aux paramètres transmis à la requête. La liste des champs sélectionnables contient les paramètres « Période, « Article » et « Type de prix ». Les mêmes paramètres sont utilisés dans les paramètres de la table virtuelle « Nomenclature Prix Tranche des Derniers ». Il est nécessaire d'afficher ces paramètres dans le liste de champs sélectionnables afin que les valeurs de ces paramètres puissent être transférées du premier ensemble au deuxième ensemble. Cela se fait à l'aide des paramètres de connexion entre les ensembles de données dans l'onglet « Connexions des ensembles de données » du concepteur de diagramme de disposition des données :

L'établissement des connexions entre sources de données s'effectue à l'aide des champs de sélection de la requête. Dans le deuxième ensemble de données, nous avons ajouté des paramètres de requête aux champs de sélection. Lors de l'établissement de relations entre ensembles, si vous sélectionnez un champ dans la colonne "Paramètre" pour la relation, la valeur de la colonne "Expression source" sera transférée vers "Expression de destination" et remplira le paramètre sélectionné avec la valeur correspondante.

Après avoir configuré la structure du rapport et l'avoir généré, nous obtiendrons le résultat suivant :

Le rapport fonctionne. Passons maintenant à l'examen des options permettant d'obtenir le prix de la date du document en une seule demande.

En une seule demande

Créons un nouveau rapport avec des champs de sortie et des paramètres de rapport similaires. La seule différence résidera dans les sources de données. Cette fois, le rapport contiendra un seul ensemble de données dans lequel tous les produits du document et leurs prix associés sont sélectionnés en une seule requête. Le texte de la requête ressemble à ceci :

"SELECT | DocumentNomenclaturePeriod.Document, | DocumentNomenclaturePeriod.Document.Date AS Date, | DocumentNomenclaturePeriod.Document.PriceType AS TypePrice, | DocumentNomenclaturePeriod.Nomenclature, | PricesNomenclature.Price | FROM | (SELECT | Ventes de GoodsServicesProducts. Lien AS Document, | ovServicesProducts .Nomenclature AS Nomenclature, | MAXIMUM (PrixNomenclatures.Période) AS Période | Vente de BiensServices.Biens AS Ventes de BiensServicesBiens | CONNEXION GAUCHE Registre d'Information.PrixNomenclatures AS PrixNomenclatures | >= Nomenclatures de prix. Période | Et ventes de biensServicesProducts.Link.PriceType = PricesNomenclatures.TypePrices | Et DocumentNomenclaturePeriod.Document.PriceType = PricesNomenclature.PriceType | Et DocumentNomenclaturePeriod.Period = PricesNomenclature.Period"

Le principe de la requête est d'obtenir la date la plus proche de changement de prix pour chaque article utilisé dans la section tabulaire du document, puis de joindre les données du tableau physique « Prix des articles » par période, article et type de prix au résultat de la requête résultante. . À première vue, la requête peut paraître compliquée, mais en réalité sa syntaxe est assez simple.

Le résultat de l'exécution est similaire au résultat du rapport précédent (voir capture d'écran ci-dessus).

Conclure

Quelle option est la meilleure pour accomplir la tâche ? Tout dépend des conditions spécifiques. Dans certaines situations, un rapport à partir de deux ensembles de données sera plus rapide que la récupération de toutes les données d'un rapport en une seule requête. Dans le cadre de cet article, nous ne pourrons pas aborder les problèmes de performances pour les méthodes envisagées pour résoudre le problème.

Il convient également de rappeler que la création de rapports basés sur des tableaux de documents n'est pas recommandée par la méthodologie de développement de la société 1C, car on pense que les informations contenues dans les documents peuvent ne pas être fiables. Tous les rapports doivent être basés sur des registres.

SKD 1C signifie Système de composition de données. SKD 1C est une nouvelle façon de rédiger des rapports en 1C, qui permet à l'utilisateur de personnaliser entièrement lui-même le rapport.

L'inconvénient du SKD 1C est que ses paramètres sont assez complexes et que tous les utilisateurs ne les apprennent pas rapidement.

La rédaction de rapports ACS nécessite la capacité de travailler avec des requêtes dans 1C, dont nous avons discuté dans.

Quelle est la technologie pour créer un rapport SKD 1C :

  • Écrivez une requête 1C au 1C SKD, qui permet l'acquisition de données
  • Préciser le rôle des champs dans SKD 1C (champs calculés, ressources)
  • Entrez les paramètres par défaut 1C SKD.

L'utilisateur a la possibilité de modifier de nombreux paramètres à volonté.

Quelle est la technologie pour créer un rapport sur les technologies précédentes :

  • Rédiger une demande dans le programme 1C
  • Développer un formulaire de paramètres (unique pour le rapport) qui vous permettra de modifier uniquement N paramètres sélectionnés par le programmeur
  • Écrivez le code (programme) pour exécuter la demande et construire une forme imprimée du rapport.

Comme vous pouvez le constater, SKD 1C présente un avantage significatif tant pour l'utilisateur que pour le programmeur :

  • Programmeur – élimine le besoin d'écrire un programme pour exécuter le rapport et les paramètres
  • Utilisateur – obtient un accès significatif aux paramètres du rapport.

Dans toutes les nouvelles configurations 1C, tous les rapports seront utilisés uniquement sur le 1C SKD.

Voyons comment créer vous-même un rapport sur SKD 1C à partir de zéro.

Création d'un rapport SKD 1C

Dans le configurateur, cliquez sur le bouton nouveau fichier (menu Fichier/Nouveau).

Sélectionnez le type de fichier Nouveau rapport.

Un nouveau rapport sera créé. Entrons un nom - sans espaces pour la configuration, synonyme de l'utilisateur.

Créons le principal Diagramme ACS 1C.

Créer une demande pour le rapport SKD 1C

Il peut y avoir de nombreuses sources de données pour SKD 1C. Pour utiliser, par exemple, deux requêtes distinctes, ajoutez d'abord « Ensemble de données - union », puis plusieurs requêtes.

Dans notre exemple, nous utiliserons une requête simple.

Esquissons une demande d'obtention de données.

Travailler avec le constructeur de requêtes n'est pas différent de ce dont nous avons discuté dans .

À la suite de la génération de la demande, SKD 1C créera une liste de champs disponibles et les remplira avec des noms par défaut.

Si le nom ne vous convient pas, vous pouvez le modifier ici.

Veuillez noter que nous avons utilisé le paramètre &StartDate dans la requête. Dans SKD 1C, il existe un paramètre par défaut (date) appelé &Period et vous pouvez l'utiliser.

De plus, vous n'avez pas besoin de le préciser directement dans la demande : il sera utilisé automatiquement. Cependant, il existe une subtilité : elle s'applique à toutes les tables, y compris les jointures gauches, etc., qui peuvent donner lieu à des erreurs.

Par exemple, vous obtenez les soldes au début du mois et en utilisant la jointure de gauche, vous obtenez les données du jour. Si vous utilisez Période, elle sera appliquée de la même manière à toutes les tables et la requête ne fonctionnera pas correctement.

Paramètres SKD 1C

Dans l'onglet Ressources, nous indiquons les champs qui seront résumés pour les totaux (c'est-à-dire les nombres). Vous pouvez spécifier une fonction de sommation pour les champs. Par défaut, il s'agit de Somme (c'est-à-dire additionner les nombres de toutes les lignes et obtenir le total), mais vous pouvez utiliser Moyenne, Quantité, Maximum, etc.

Dans l’onglet Paramètres, nous désactiverons ceux dont nous n’avons pas besoin et activerons ceux dont nous avons besoin. Ici, vous pouvez également définir un nom humain pour le paramètre.

Les paramètres de base sont définis dans l'onglet Paramètres :


Ouvrons-le en mode Entreprise. Veuillez noter que nous n'avons fait aucune programmation, dessin de formes, etc. Pour définir le paramètre, cliquez sur le bouton Paramètres.

L'utilisateur voit presque la même forme de paramètres que le programmeur.

Voilà. Le rapport fonctionne.

Paramètres SKD 1C

Tous les paramètres du rapport SKD 1C sont effectués en cliquant sur le bouton Paramètres. Au moins dans le modèle par défaut. Il est possible de créer vous-même le formulaire de rapport SKD 1C, puis les paramètres peuvent être transférés indépendamment vers d'autres formulaires dessinés par le programmeur.

Déplaçons l'entrepôt des colonnes vers les lignes.

Faisons glisser l'article vers l'entrepôt.

Cliquez sur OK et générez le rapport. Hourra ! Nous venons de modifier le fonctionnement du rapport en mode Programmation sans programmation.

Cliquez avec le bouton droit sur les lignes (ou sur l'un des champs) et sélectionnez Nouveau regroupement.

Développez le champ Entrepôt et sélectionnez l'un de ses champs, par exemple Type d'entrepôt.

Après réflexion, nous nous sommes souvenus que nous aimerions que plusieurs champs soient affichés dans une seule colonne à la fois. Cliquez deux fois sur le champ nouvellement créé avec le bouton gauche de la souris. Ici, vous pouvez ajouter des champs.

Si vous ajoutez un nouveau regroupement mais ne sélectionnez pas de champ, cela signifie « Tous les champs » (affiché sous la forme « Enregistrements détaillés »). Cela ressemble à ceci.

Cliquez avec le bouton gauche sur notre regroupement (Entrepôt/Article) et faites-le glisser vers un nouveau regroupement (Type d'entrepôt).

Le résultat de nos réglages.

En plus des paramètres dont l'effet est facile à deviner par leur nom (Sélection, Tri, etc.), il existe un onglet « Autres paramètres ». Il vous permet d'activer ou de désactiver des éléments tels que l'affichage des totaux, le placement de regroupements en colonnes, etc.

Veuillez noter que les paramètres peuvent être définis pour l'ensemble du rapport (Rapport est sélectionné) ou pour une ligne spécifique de champs (sélectionnez une ligne, par exemple Nomenclature, et sélectionnez Paramètres : Nomenclature).

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 :

  • diagramme de présentation des données - pour décrire les champs calculés, les champs totaux, les expressions de connexion, etc. ;
  • paramètres de présentation des données - pour décrire les expressions de champs personnalisés ;
  • disposition de mise en page des données - pour décrire les expressions permettant de connecter des ensembles de données, de décrire les paramètres de mise en page, etc.

Littéraux

L'expression peut contenir des littéraux. Les types de littéraux suivants sont possibles :

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

Doubler

Une chaîne littérale est écrite 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

Un littéral de date est écrit en utilisant le littéral clé DATETIME. Après ce mot-clé, l'année, le mois, le jour, les heures, les minutes, les secondes sont indiqués entre parenthèses, séparés par des virgules. La spécification du temps n’est pas requise.

Par exemple:

DATETIME(1975, 1, 06) – 6 janvier 1975 DATETIME(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 en utilisant les 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 (Type de compte. Actif)

Opérations sur les nombres

Unaire –

Cette opération a pour but de changer le signe d'un nombre en signe opposé. Par exemple:

Ventes.Quantité

Unaire +

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

Ventes.Quantité

Binaire -

Cette opération vise à calculer la différence de deux nombres. Par exemple:

Résiduels et chiffres d'affaires.InitialRemaining – Restes et chiffres d'affaires.FinalResidualsRemainingsAndTurnovers.InitialRemaining - 100 400 – 357

Binaire +

Cette opération vise à calculer la somme de deux nombres. Par exemple:

RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.Chiffre d'affaires RésidusAndTurnover.InitialRemaining + 100 400 + 357

Travail

Cette opération vise à 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 a pour but d'obtenir le reste lorsqu'un opérande est divisé 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 la chaîne correspond au modèle transmis.

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

Les personnages suivants dans<Строке_шаблона>avoir une signification différente de celle d'un simple autre caractère dans la ligne :

  • % - 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 énuméré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 ne comporte aucune charge supplémentaire. Si l'un des caractères répertoriés doit être écrit tel quel, il doit alors être précédé de<Спецсимвол>, spécifié après le mot clé SPECIAL CHARACTER (ESCAPE).

Par exemple, modèle

"%ABV[abvg]\_abv%" CARACTÈRE SPÉCIAL "\"

désigne 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 ; souligner; lettres a; lettres b; lettres v. De plus, cette séquence peut être repérée à partir d'une position arbitraire dans la ligne.

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 d’inégalité. Par exemple:

Ventes.Contrepartie<>Sales.NomenclatureMainSupplier

Moins

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

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

Plus

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

VentesCurrent.Sum > VentesPast.Sum

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:

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

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 transmise. Le résultat de l'opération sera True si la valeur est trouvée, ou False sinon. Par exemple:

Article B (&Produit1, &Produit2)

Opération de vérification de la présence d'une valeur dans un ensemble 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 contrepartie aux contreparties.

Opération de vérification d'une valeur pour NULL

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

Sales.Counterparty EST NULL

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:

Les ventes ne sont pas nulles.

Opérations logiques

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

Opération NON

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

PAS Document.Consignee = Document.Expéditeur

Opération I

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.Consignee = Document.Consignor ET Document.Consignee = &Contrepartie

Opération OU

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

Document.Consignee = Document.Consignor OU Document.Consignee = &Contrepartie

Fonctions d'agrégation

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

Somme

La fonction d'agrégation Somme calcule la somme des valeurs des expressions qui lui sont transmises comme argument pour tous les enregistrements détaillés. Par exemple:

Montant (Sales.AmountTurnover)

Quantité

La fonction Count calcule le nombre de valeurs autres que NULL. Par exemple:

Quantité (Ventes. Contrepartie)

Nombre de différents

Cette fonction calcule le nombre différentes significations. Par exemple:

Quantité (Diverses ventes. Contrepartie)

Maximum

La fonction obtient la valeur maximale. Par exemple:

Maximum (quantité restante)

Le minimum

La fonction obtient la valeur minimale. Par exemple:

Minimum (quantité restante)

Moyenne

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

Moyenne (quantité restante)

Autres opérations

Opération SELECT

L'opération Select est destinée à sélectionner l'une parmi plusieurs valeurs lorsque certaines conditions sont remplies. Par exemple:

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

Règles pour comparer deux valeurs

Si les types de valeurs comparées sont différents les uns des autres, alors les relations entre les valeurs sont déterminées en fonction de la préséance 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éterminées en fonction des numéros de référence des tables correspondant à un type particulier.

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

  • pour le type booléen la valeur TRUE est supérieure à la valeur FALSE ;
  • le type Nombre a les règles de comparaison habituelles pour les nombres ;
  • pour le type Date, les dates antérieures sont inférieures aux dates ultérieures ;
  • pour le type String - comparaison des 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 une valeur NULL

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

Il y a des exceptions :

  • L'opération AND renverra NULL uniquement si aucun des opérandes n'est False ;
  • L'opération OR ne renverra NULL que si aucun de ses opérandes n'est vrai.

Priorités opérationnelles

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 regroupement dans le contexte duquel l'expression doit être évaluée. Si une chaîne vide est utilisée comme nom de regroupement, le calcul sera effectué dans le contexte du regroupement actuel. Si la chaîne GrandTotal est utilisée comme nom de groupe, le calcul sera effectué dans le contexte du total général. Dans le cas contraire, le calcul sera effectué dans le contexte du groupe parent du même nom. Par exemple:
Somme(Sales.SumTurnover) / Calculer("Somme(Sales.SumTurnover)", "Total")

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

Niveau

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

Niveau()

NuméroDansOrdre

Obtenez le numéro de séquence suivant.

NuméroParCommande()

NuméroDansOrdreDansGroupe

Renvoie le numéro ordinal suivant dans le regroupement actuel.

NuméroParCommandeInGroup()

Format

Obtenez une chaîne formatée de la valeur transmise.

La chaîne de format est définie conformément à la chaîne de format 1C:Enterprise.

Possibilités :

  • Signification;
  • Formater la chaîne.

Format(Factures.Doc Montant, "NPV=2")

Début de période

Possibilités :

    • Minute;
    • Jour;
    • Une semaine;
    • Mois;
    • Quart;
    • Décennie;
    • Semestre.

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

Résultat:

01.10.2002 0:00:00

Fin de période

La fonction est destinée à mettre en évidence date spécifiqueà partir d'une date donnée.

Possibilités :

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

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

Résultat:

13.10.2002 23:59:59

AjouterÀDate

La fonction est conçue pour ajouter une certaine valeur à une date.

Possibilités :

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

AddToDate(DateTime(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.

Possibilités :

  • Expression. Tapez Date. Date originale ;
  • 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ÉRENCE(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "JOUR")

Résultat:

Sous-chaîne

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

Possibilités :

  • 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 duquel commence la sous-chaîne à extraire de la chaîne ;
  • Longueur. Tapez le numéro. Longueur de la sous-chaîne allouée.

SUBSTRING(Comptes.Adresse, 1, 4)

Longueur de la ligne

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

Paramètre:

  • Doubler. Tapez Chaîne. Une chaîne dont la longueur est spécifiée.

Ligne (Contreparties.Adresse)

Année

Cette fonction est conçue pour 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 (Dépense.Date)

Quart

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

Paramètre

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

Mois

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

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

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é.
ANNÉEJOUR(DépenseCompte.Date)

Jour

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

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

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 de. Tapez Date. Date à laquelle les numéros de semaine sont déterminés.
SEMAINE(Dépense.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 normal de la semaine va de 1 (lundi) à 7 (dimanche).

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

Heure

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

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

Minute

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

  • Date de. Tapez Date. La date à laquelle la minute de l'heure est déterminée.
MINUTE (Dépense.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.
DEUXIÈME(Dépense.Date)

Exprimer

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

Possibilités :

  • Expression à convertir ;
  • Indication du type. Tapez Chaîne. Contient une chaîne de type. Par exemple, "Nombre", "Chaîne", etc. Outre les types primitifs ligne donnée peut contenir le nom de la table. Dans ce cas, une tentative sera faite pour exprimer une référence au tableau spécifié.

Express(Data.Props1, "Nombre(10,3)")

EstNull

Cette fonction renvoie la valeur du deuxième paramètre si la valeur du premier paramètre est NULL.

Sinon, la valeur du premier paramètre sera renvoyée.

OuiNULL(Montant(Sales.AmountTurnover), 0)

Fonctions des modules communs

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

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

Notez que l'utilisation des fonctions communes du module n'est autorisée que si le paramètre approprié du processeur de composition de données est spécifié.

De plus, les fonctions des modules communs ne peuvent pas être utilisées dans les expressions de champs personnalisés.

Publications sur le sujet