Maison / Bon à savoir / Le langage intégré du 1C : Enterprise. Petites astuces pour les grandes requêtes La sous-requête peut être utilisée

Le langage intégré du 1C : Enterprise. Petites astuces pour les grandes requêtes La sous-requête peut être utilisée

    Nom: Registres d'accumulation tournants. Rapports. Sélection des données d'une table. Sélection des données de deux tables.

    Cible: Apprenez à travailler avec des registres d'information et des énumérations lorsque vous travaillez en 1C 8.

    Préparation de la leçon:

      Selon la littérature indiquée, étudiez le sujet abordé dans cette carte technologique

    Littérature:

4.1 Ignatov AS manuel pédagogique et méthodique "programmation 1C", 2014

4.2 Ignatov. COMME. notes de cours sur la discipline "programmation 1C" 2014.

    Liste d'équipement:

5.1 PC IBM personnel.

5.2 Version 1C 8.

    Exercer:

6.1 Examiner la procédure d'accès aux données.

6.2 Apprenez à travailler avec les requêtes.

6.3 Examinez les paramètres dans le configurateur et en mode 1C:Enterprise.

    Demande de service:

7.1 Créer un rapport Registre des documents.

7.3 Modifier les paramètres du rapport.

8.1 Page de titre

      Nom et but de l'œuvre

      Tâche terminée

      Réponses aux questions de sécurité

      Conclusion sur le travail effectué

    Question test:

9.1 De quelles parties le texte de la demande est-il composé, lesquelles sont obligatoires.

9.2 Quelles sont les constructions syntaxiques de base du langage de requête.

9.3 Quelle est la source des données de la requête.

9.4 Que sont les alias dans le langage de requête.

9.5 Que sont les paramètres de requête.

9.6 Quel est le but de l'objet langage intégré Request.

9.7 Quel est le but du système de composition des données.

9.8 À quoi sert un schéma de composition de données.

9.9 À quoi servent les paramètres de composition des données ?

9.10 Quelle est la différence entre les tables réelles et virtuelles.

Application:

PARTIE THÉORIQUE

Modes d'accès aux données

Le système 1C:Enterprise 8 prend en charge deux manières d'accéder aux données stockées dans la base de données :

    objet (pour lire et écrire),

    tabulaire (pour la lecture).

La manière objet d'accéder aux données est mise en œuvre par l'utilisation d'objets du langage intégré. Une caractéristique importante de la méthode objet d'accès aux données est que, lorsque nous nous référons à n'importe quel objet du langage intégré, nous nous référons à un certain ensemble de données dans la base de données comme un tout unique. La technique objet assure la préservation de l'intégrité des objets, la mise en cache des objets, l'appel des gestionnaires d'événements appropriés, etc. L'accès tabulaire aux données dans 1C: Enterprise 8 est implémenté à l'aide de requêtes de base de données compilées dans le langage de requête. Dans cette technique, le développeur a la possibilité de travailler avec des champs individuels de tables de base de données qui stockent certaines données. La technique tabulaire vise à obtenir des informations de la base de données sur certaines conditions (sélection, regroupement, tri, combinaison de plusieurs échantillons, calcul de totaux, etc.). La technique tabulaire est optimisée pour traiter de grandes quantités d'informations situées dans la base de données et obtenir des données qui répondent aux critères spécifiés.

PARTIE PRATIQUE

Sélection de données dans une table

Créons un rapport Registre des documents pour la prestation de services à l'aide du système de composition des données. Ce rapport listera les documents de prestation de services existants dans la base de données par ordre de date et de numéro.

    En mode Configurateur

Ajoutons un objet de configuration de rapport dans le configurateur.

Dans l'onglet Général: nom du rapport - RegistryDocumentsProvidingServices ; vue avancée - Liste des services rendus pour les rapports dans l'interface du programme. Créons un schéma de composition de données pour le rapport, cliquez sur le bouton Ouvrir le schéma de composition de données. Dans la boîte de dialogue du concepteur de mise en page qui s'ouvre, cliquez sur Terminer. Dans le constructeur du schéma de composition de données, nous allons créer un Dataset - une requête.

Riz. 13.1. Enregistrement d'une facture entrante dans deux registres

Après cela, nous appuierons sur le bouton Query Designer, en tant que source de données pour la requête, nous sélectionnerons la table d'objets du document de fourniture de service. Sélectionnez les champs suivants dans ce tableau :

Signet Syndicats/Alias indiquer que le champ Lien aura un pseudonyme Document. Signet Ordre spécifier que le résultat de la requête doit être trié par valeur de champ Document.

Signet Réglages Créons des paramètres standard qui déterminent comment les informations seront affichées dans le rapport.

La structure hiérarchique d'un rapport peut contenir trois éléments principaux dans diverses combinaisons :

    Regroupement - pour afficher les informations sous la forme d'un rapport linéaire régulier.

    Tableau - pour afficher les informations sous forme de tableau.

    Graphique - pour afficher des informations sous forme de graphique.

Pour ajouter un nouvel élément, dans notre cas, le groupement, sélectionnez l'élément racine du rapport dans l'arborescence de la structure du rapport et appelez-le menu contextuel. Dans la fenêtre de sélection des champs de regroupement, cliquez simplement sur OK. Le regroupement apparaîtra dans la structure du rapport Fiches détaillées. Dans l'onglet Champs sélectionnés, faites glisser les champs qui seront affichés dans le rapport depuis la liste des champs disponibles avec la souris :

    Document,

Par conséquent, la fenêtre des paramètres du rapport devrait ressembler à ceci. Ceci termine la création du rapport.

Riz. 13.2. Créer un rapport

    Dans la fenêtre d'édition de l'objet de configuration Report Registry of Documents Rendering Services, accédez à l'onglet Subsystems.

Notez dans la liste le sous-système Services de rendu.

    En 1C : mode entreprise

Exécutez 1C : Entreprise en mode débogage.

Dans la fenêtre 1C: Entreprises qui s'ouvre, vous pouvez observer que dans le volet d'action de la section Services, dans le groupe de commandes d'exécution de rapports, une commande est apparue pour générer un rapport Registre des documents pour la fourniture de services. De plus, si vous y amenez la souris, un indice contextuel Liste des services rendus apparaîtra, qui est déterminé par la propriété Vue étendue.

    Exécutons la commande Registre des documents pour la prestation de services.

Nous verrons un formulaire de rapport généré automatiquement par le système.

    Cliquez sur le bouton Générer.

Riz. 13.3. Formulaire de rapport généré automatiquement par le système

Vous verrez un rapport contenant un registre de documents Prestation de services.

En double-cliquant sur le champ Document, vous pouvez ouvrir le document d'origine, ainsi qu'effectuer d'autres actions de "déchiffrement" fournies par le système de composition de données.

PARTIE THÉORIQUE

Dans le système 1C:Enterprise ?

1. Les textes de configuration et de base de données sont stockés au formatUNICODE

3. Il n'y a pas de bonne réponse

6.75 À quoi servent les textes de configuration et de base de données au formatUNICODE?

1. Le format UNICODE assure l'immuabilité (indépendance de la plate-forme logicielle système opérateur) présentation des informations

2. FormatUNICODE vous permet de prendre en charge différentes langues dans le système 1C:Enterprise

3. Il n'y a pas de bonne réponse

6.76 Mécanismes d'internationalisation prévus. ..

1. plateforme technologique 1C:Entreprise

2. solutions d'application

3. Les réponses 1 et 2 sont correctes

4. il n'y a pas de bonne réponse

6.77 Qu'est-ce qu'un code de localisation ?

1. Une chaîne composée d'un code de langue et d'un code de pays qui identifie une région du monde

2. Code du produit logiciel (indiqué sur le formulaire d'inscription, documentation du kit de livraison)

3. Option de format de chaîne à convertir

4. Sa bonne réponse

6.78 Est-il vrai que dans 1C : Enterprise 8 informations textuelles peut inclure des symboles de différentes langues en même temps ?

1. Oui, car tous les textes de configuration et de base de données sont enregistrés au formatUNICODE

2. En fonction des paramètres spécifiés lors de la création base d'informations

3. Uniquement si configuré

6.79 A quoi sert l'objet de configuration Langue ?

1. Pour créer une interface de programme dans différentes langues

2. Pour créer document texte différentes langues

3. Il n'y a pas un tel objet dans 1C : Enterprise 8

6.80 Comment puis-je changer la langue pour visualiser (modifier) ​​la configuration ?

1. A l'aide du bouton de sélection de la langue situé sur la barre d'état à droite du bouton "NUM"

2. Via l'élément de menu "Configuration - Langue d'édition de la configuration"

3. Dans 1 C:Enterprise, cette possibilité n'existe pas

4. Verpa répond 1 et 2

6.81 Quelle est l'orthographe des opérateurs de langage 1C:Enterprise ?

1. Seulement l'orthographe russe

3.

6.82 Est-il possible d'utiliser des opérateurs linguistiques intégrés en russe et en anglais dans un texte source ?

1. Uniquement avec des paramètres spéciaux du configurateur

2. Oui, il ne nécessite aucune modification des paramètres du configurateur

3. Non, car l'option de langue intégrée est définie dans les propriétés de configuration

6.83 Quel est le but du langage intégré ?

1. Pour définir l'interface du programme par défaut

2. Décrire (au stade du développement de la configuration) les algorithmes de fonctionnement de la tâche appliquée

3. Il n'y a pas de bonne réponse

6.84 Quelle est l'orthographe des fonctions de langage intégrées ?

1. Seulement l'orthographe russe

2. Seulement l'orthographe anglaise

3. Orthographe russe et anglaise

4. En fonction des paramètres du configurateur

6.85 À quoi correspond le paramètre L(L) dans formater la chaîne fonctions de formatage NumberWriting()?

1. Caractéristique " partie fractionnaire sortie en chiffres/mots"

2. Nombre de décimales

3. Code de localisation

7. Modèle tabulaire de la solution appliquée

7.1 Lors de la configuration des restrictions d'accès aux données, il est permis de définir plusieurs restrictions (par le nombre de champs) :

1. Pour l'autorisation "Lire"

2. Pour le droit "Modifier"

3. Pour le droit "Ajouter"

4. Pour le droit "Supprimer"

5. Pour tous les droits ci-dessus

6. Pour tous les droits possibles

7.2 Lors de la configuration des restrictions d'accès aux données, les valeurs suivantes peuvent être utilisées comme restrictions d'accès aux données :

1. Valeurs des paramètres de session uniquement

2. Uniquement les données des tables (requêtes)

3. Valeurs des paramètres de session et données des tables (requêtes)

4. Uniquement des valeurs avec des types : Nombre, Chaîne, Booléen, Date

7.3 Laquelle des méthodes ci-dessus peut être utilisée pour que le code et le nom de la recherche apparaissent dans la section "Champs" du générateur de requête ?

1. Tout d'abord, remplissez la section "Tables", puis, en sélectionnant les objets nécessaires dans cette section, transférez-les dans la section "Champs" en double-cliquant avec le bouton gauche de la souris

2. Sans remplir la section "Tables", sélectionnez immédiatement les objets nécessaires dans les tables - sources de données de la section "Base de données", en les transférant dans la section "Champs" à l'aide de Technologie de traînée& Goutte. La section "Tables" se remplit automatiquement

3. Tout d'abord, remplissez la section "Tables", puis, en sélectionnant les objets nécessaires dans cette section, transférez-les dans la section "Champs" à l'aide des boutons du formulaire ">" """

4. Les réponses I et 3 sont correctes

5. Les réponses I, 2 et 3 sont correctes

7.4 Pour augmenter la vitesse d'exécution des requêtes, il faut :

1. Définir les paramètres pour la plupart des tables réelles

2. Définir des options pour la plupart des tables virtuelles

3. Au lieu de définir des paramètres pour un réel ou table virtuelle utiliser la sélection spécifiée par la construction du langage de requête "WHERE"

4. Les réponses I et 2 sont correctes

7.5 Lors de la sélection d'une table source dans la section "Tables" du concepteur de requêtes, puis-je spécifier un nouveau nom (alias) pour celle-ci ?

1. Oui, vous pouvez

2. Oui, vous pouvez, mais uniquement si la source de données est une sous-requête

3. Oui, vous pouvez, mais uniquement si la source de données est une table virtuelle

4. Les réponses 1 et 2 sont correctes

5. Les réponses 1 et 3 sont correctes

7.6 Une sous-requête peut être utilisée :

1. En tant que table de source de données

2. En tant qu'opérande des opérations de comparaison "IN" ou "NOT IN" lors de la définition des paramètres de la table virtuelle

3. En tant qu'opérande des opérations de comparaison "IN" ou "NOT IN" lors de la spécification de la construction de langage de requête "WHERE"

4. Verpa répond 1, 2 et 3

7.7 Puis-je utiliser le générateur de requêtes pour obtenir les totaux d'une hiérarchie ?

1. Vous pouvez, si vous spécifiez le type de totaux "Eléments et Hiérarchie" pour le champ de regroupement

2. Vous pouvez, si vous spécifiez le type de totaux "Hiérarchie uniquement" pour le champ de regroupement

3. Verpa répond 1 et 2

7.8 Dans l'onglet "Conditions" du générateur de requêtes, une ligne distincte de la liste des conditions peut être formée :

1. En double-cliquant avec le bouton gauche de la souris sur le champ souhaité dans la liste des champs disponibles

2. Par virement champ souhaitéà la liste en utilisant la technologie Drag & Drop

3. Appuyez sur le bouton "Ajouter". Si la condition est arbitraire, le texte de la condition peut être saisi "manuellement"

4. Après avoir appelé le menu contextuel, sélectionnez l'élément "Ajouter" dedans. Il est possible d'utiliser une expression arbitraire

5. Toutes les réponses ci-dessus sont correctes

7.9 Dans l'onglet "Liens" du générateur de requêtes, vous pouvez définir :

1. Connexion des tables de source de données et des relations entre elles

2. Combiner les tables de sources de données et les relations entre elles

3. Liens entre les champs de la table obtenus à la suite de la requête

4. Liens entre les champs de la table source de données et la table obtenue suite à la requête

7.10 Lorsque vous joignez des tables de source de données dans le concepteur de requêtes, vous pouvez :

1. Affecter une connexion sans spécifier de condition de connexion

2. Attribuez une connexion en spécifiant la condition de connexion, et cette condition ne peut être qu'une

3. Attribuez une connexion avec une indication de la condition de connexion, et cette condition ne peut être que simple

4. Attribuez le nombre requis de connexions en indiquant quantité requise conditions de communication, et ces conditions peuvent être à la fois simples et arbitraires

7.11 La création d'une connexion de tables de sources de données dans le concepteur de requêtes permet :

1. Joindre seulement deux tables de source de données

2. Connexion du nombre requis de tables de source de données

3. Connexion de seulement deux tables de source de données, et la case "Tous" doit être cochée au moins pour l'une des tables

Le développement d'une solution appliquée dans le système 1C:Enterprise comprend deux étapes principales : la construction visuelle des objets de configuration et la description du comportement spécifique du système à l'aide du langage intégré et du langage de requête.

Le langage intégré du système 1C:Enterprise a de nombreuses fonctionnalités en commun avec d'autres langages de programmation, mais n'est un analogue direct d'aucun d'entre eux. Ses caractéristiques les plus significatives :

soft typing (le type d'une variable est déterminé par le type de la valeur qu'elle contient et peut changer pendant l'opération) ;

Absence de description programmatique des types d'applications (elles sont créées lors de l'ajout d'objets de configuration) ;

orientation événementielle du langage intégré ;

· tous les opérateurs ont une orthographe russe et anglaise, qui peuvent être utilisées simultanément.

Modules de configuration

Les modules de la solution appliquée sont destinés à placer le texte du programme dans la langue intégrée. Ces modules sont situés à différents endroits de la configuration et ont des objectifs différents. La plupart des modules sont « liés » à certains objets de configuration ou à la solution applicative elle-même.

Il existe les types suivants modules logiciels:

· Modules généraux. La configuration peut être montant arbitraire modules, y compris aucun. Les modules partagés ne sont pas appelés par eux-mêmes pendant le processus de configuration. Ils ne servent qu'à y placer les textes des procédures et des fonctions qui peuvent être appelées depuis d'autres modules de la solution appliquée. Par conséquent, il leur manque une section de déclaration de variable et une section de programme principal. Ce. les modules communs ne contiennent que des procédures et des fonctions.

· Module d'application. Il y a toujours un seul module applicatif dans une configuration. Il est exécuté lorsque le système est démarré en mode 1C:Enterprise et est conçu pour élaborer des actions liées à la session de l'utilisateur final. Les principaux événements pouvant être gérés dans le module applicatif sont les événements de début et de fin de l'application. La séquence de l'appel s'affiche dans riz. une. Événement Avant de démarrer le système se produit lorsque le système démarre avant l'ouverture de la fenêtre principale. En gérant cet événement, le développeur a par exemple la possibilité de refuser le lancement si certaines conditions ne sont pas remplies. Événement Lors du démarrage du système se produit après l'ouverture de la fenêtre principale. Dans le gestionnaire de cet événement, vous pouvez par exemple afficher des informations sur les anniversaires, etc.

· Module connexion externe . Il y a toujours un seul module de connexion externe dans une configuration. Il est exécuté lors de l'accès à l'application en tant que serveur COM (en mode connexion externe). En mode de connexion externe, ce n'est pas une application 1C: Enterprise à part entière qui est lancée, mais une «version allégée», dans laquelle toutes les fonctions liées d'une manière ou d'une autre à l'organisation de l'interface utilisateur ne sont pas disponibles.

· Modules d'objets applicatifs. Chaque objet de configuration d'application (par exemple, un document PKO ou un répertoire), dont les données peuvent être modifiées dans le mode 1C : Enterprise, possède son propre module. En plus de décrire les variables et le programme principal, un module objet peut contenir une description des procédures - gestionnaires d'événements associés à un objet de configuration donné. Il y a deux événements qui sont appelés pour tous les objets - Avant l'enregistrement et Lors de l'enregistrement.

· Modules de formulaire. Chaque formulaire a son propre module, qui définit le comportement du formulaire et les actions effectuées à partir de celui-ci, comme l'ouverture d'autres formulaires. Les événements sont déclenchés pour tous les formulaires Avant d'ouvrir, avant d'ouvrir, avant de fermer et À la clôture.

Le contexte

Dans le système 1C:Enterprise, le contexte désigne l'environnement du module, c'est-à-dire variables, objets, propriétés, méthodes et événements à sa disposition. On peut distinguer les types de contextes suivants, et, en conséquence, les règles de visibilité des variables, procédures et fonctions exportées :

· Contexte mondial, disponible dans tous les autres contextes, se compose des parties suivantes :

§ propriétés, méthodes et événements du contexte global (par exemple, une propriété Date de travail);

§ les énumérations système et les ensembles de valeurs système (par exemple, ReturnCodeDialogue et Symboles).

· Contexte de module commun formé par le contexte global et le contexte local du module le plus courant (c'est-à-dire les procédures et les fonctions définies à l'intérieur du module commun). Dans le cadre d'un module partagé, les procédures et fonctions exportées d'autres modules communs. Les variables, procédures et fonctions exportées du module d'application ne sont pas disponibles.

· Dans le cadre d'un module applicatif ou d'un module externe de connexion les procédures exportées et les fonctions des modules communs sont disponibles.

· Dans le cadre d'un module objet applicatif avoir accès aux détails et parties tabulaires objet, ainsi que ses méthodes et événements. Les variables, procédures et fonctions exportées du module d'application (module de connexion externe) et des modules communs sont disponibles ici.

· Dans le cadre d'un module de formulaire les attributs de formulaire, ainsi que les propriétés, les méthodes et les événements du formulaire sont disponibles. Si l'attribut principal est affecté au formulaire, les propriétés et les méthodes de l'objet d'application utilisé comme attribut principal deviennent disponibles dans le module de formulaire.

Schématiquement, la relation des contextes est montrée dans riz. 2. Sur le riz. 3 l'interaction possible entre le module de formulaire de journal et le module de document est illustrée.


Procédures et fonctions

Les procédures et les fonctions sont des blocs de programme qui peuvent être appelés par leur nom à partir d'un autre emplacement, comme une autre procédure. Les fonctions ne diffèrent des procédures que par le fait qu'elles ont une valeur de retour. En version 8, l'ordre des procédures et des fonctions n'a pas d'importance. Cela signifie que la procédure peut être située en dessous du lieu de son appel.

Les procédures et les fonctions peuvent avoir des paramètres qui spécifient quelles actions elles doivent entreprendre sur quels objets. Les paramètres de procédure ou de fonction par défaut sont passés par référence. Cela signifie que la modification d'un paramètre formel dans une procédure ou une fonction modifiera le paramètre réel à l'endroit où il est appelé. Pour vous assurer que le paramètre est passé par valeur, vous devez insérer avant le nom du paramètre mot-clé Évaluer.

Exemple 1:

Calcul de procédure()

Montant=Prix*Quantité ;

FinProcédure

Calcul(); // Appel de procédure

Exemple 2 :

Perm Glob ;

// Description de la procédure

Calcul de la procédure (Par1, Pair2, P3) Exportation

Glob \u003d Glob + Par1 + Par2 + Par3;

FinProcédure

Calcul(5, 6, 7); // Appel de procédure

Exemple 3 :

Perm Glob ;

// Description de la fonction

Calcul de fonction (Par1, Par2, Par3) Exportation

Lok = Glob + Par1 + Par2 + Par3 ;

Revenir en arrière ;

EndFunctions

Res = Calcul(5, 6, 7); // Appel de fonction

Types de données

Nombre, Chaîne, Date, Booléen, Valeur indéfinie, Valeur nulle (pour les valeurs non spécifiées dans les tables de base de données)

Type de. Les valeurs du type spécial "Type" sont nécessaires pour représenter et comparer les types de données, par exemple :

Déclaration de variables

Les variables apparaissent dans le programme dans les cas suivants :

· après leur déclaration à l'aide de l'opérateur Variable.

Rém<Имя_переменной>[Exporter];

variables A, B ;

après le premier placement du nom de la variable sur le côté gauche de l'instruction d'affectation.

Exemple:

· lors de la définition des noms des identificateurs des éléments de dialogue édités ;

· lors de la définition des paramètres formels des procédures.

Moulage

Le transtypage de type peut être explicite ou implicite.

Pour une réduction explicite, il existe Fonctionnalités suivantes: Nombre, Chaîne, Date, Booléen. La conversion de type implicite est effectuée automatiquement par le système lors de l'évaluation des expressions.

Exemple : la valeur de la variable numérique MonthNumber est implicitement convertie en chaîne et ajoutée à une autre chaîne :

A \u003d "Mois" + NuméroMois ;

Livres de référence

Le travail avec les répertoires est effectué à l'aide des objets suivants :

· Gestionnaire de références. Donne accès à tous les répertoires de configuration. Les propriétés de cet objet correspondent aux noms des répertoires et contiennent des objets de type DirectoryManager.

· DirectoryManager. Fournit l'accès aux opérations sur le dictionnaire sous la forme d'un ensemble d'éléments. Grâce aux méthodes de cet objet, vous pouvez rechercher, obtenir une sélection, créer de nouveaux éléments, accéder aux formulaires et mises en page du répertoire.

· DirectoryLink. Identifie de manière unique un élément (groupe) du répertoire et permet d'y accéder en mode "lecture seule". À travers les propriétés et les méthodes de cet objet, vous pouvez lire les détails de l'élément (groupe), vous référer à ses parties tabulaires. La valeur de ce type est stockée dans les attributs faisant référence aux éléments ce manuel, par exemple, dans les accessoires Employé document Recrutement un lien vers un élément de répertoire spécifique est stocké Des employés.

· DirectoryObject. Permet d'accéder à un élément inscriptible. Cet objet contient des méthodes qui affectent l'élément dans la base de données, telles que les méthodes brûler et Effacer.

· RépertoireSélection. Fournit la possibilité d'itérer sur les éléments du répertoire. La sélection peut être directe ou hiérarchique.

· DirectoryList. Un objet pour gérer la liste des éléments dans un champ de table. Permet de gérer les colonnes, la sélection et le tri dans la liste.

Enfin une grosse activité avec des tonnes de texte !

Quel est l'objet de la requête du langage intégré ?

La requête permet d'obtenir des informations stockées dans les champs de la base de données sous la forme d'une sélection formée selon des règles spécifiées. Une précision importante : dans la requête, on travaille avec des liens. Autrement dit, c'est comme s'ils l'avaient pris, pris une photo d'une vitrine de magasin et vous avaient donné la photo entre vos mains. À partir de cette photo, vous pouvez découvrir quel assortiment de marchandises, calculer combien, par exemple, d'oranges sont dans le coin, etc. Mais, si vous prenez un marqueur et dessinez un pénis en caoutchouc posé sur le comptoir sur la photo, vous devez vous rappeler que cette action ne fera pas apparaître le pénis en caoutchouc en vente, par conséquent, vous devez tamponner vos pieds dans le magasin et mettre ceci article ménager important sur le comptoir. Dans le cas des requêtes, il faut récupérer l'objet par référence.

A quoi sert un système de composition de données ?

Pour créer des rapports arbitraires dans le système 1C : Enterprise et se compose de plusieurs parties ; En fait - à mon avis, une chose très gênante. Maby, c'est une question d'habitude.

A quoi sert un schéma de composition de données ?

Obtenir les données initiales pour la mise en page du rapport ;

Schéma de composition des données - une chose qui décrit le texte de la demande, les ensembles de données, les relations entre eux, les champs disponibles, les options de récupération des données, réglages initiaux mises en page ;

À quoi servent les paramètres de composition des données ?

Les paramètres de composition des données fonctionnent avec le schéma de composition des données pour former la mise en page ;

Quelle est la différence entre les tables réelles et virtuelles ?

Les tables réelles contiennent des données de table qui sont (soudain) réellement stockées dans la base de données ;

Virtuel - sont formés à partir des données de plusieurs tables de base de données ; Pour les tables virtuelles, vous pouvez définir un certain nombre d'options qui déterminent quelles données seront incluses dans ces tables virtuelles. L'ensemble de ces paramètres peut être différent pour différentes tables virtuelles ;

De quelles parties le texte de la demande est-il composé, lesquelles sont obligatoires ?

Description de la demande (obligatoire) – définit les sources de données, les champs de sélection, les regroupements ;

Combinaison de requêtes - comment les résultats de l'exécution de plusieurs requêtes seront combinés ;

Ordre des résultats – une condition pour ordonner les lignes des résultats de la requête ;

Auto-arrangement - le mode de classement automatique des lignes dans le résultat d'une requête ;

Description des totaux - quels totaux doivent être calculés dans la requête et comment regrouper le résultat ;

Quelles sont les constructions syntaxiques de base du langage de requête ?

Choisir<что>DE<откуда>

ORDRE<признак>

Quelle est la source des données de la requête ?

La source de données de la requête est une table (réelle ou virtuelle) ;

Que sont les alias dans la source de la requête ?

La possibilité d'attribuer un nom arbitraire au champ de sélection. Par exemple, si nous ne nous contentons pas de sélectionner, mais d'utiliser isnull, ou de multiplier ce champ directement dans la requête, alors au final il sera appelé par le type « champ1 ». Et donc nous l'appellerons immédiatement, car cela conviendra;

Que sont les paramètres de requête ?

Le paramètre est désigné par le signe &, il est utilisé pour transférer certaines données à la requête (par exemple, des dates pour certains registres) ;

Quelles sont les options de table virtuelle ?

Selon le type de table virtuelle, vous pouvez filtrer les données à l'aide des options de table virtuelle. Par exemple, dans les registres d'accumulation, les paramètres de la table virtuelle seront StartPeriod et EndPeriod ;

Quoi joint gauche?

Deux tables. Condition. Jointure gauche - inclura TOUTES les données de la première table et uniquement celles qui satisfont la condition de la deuxième table ;

Comment utiliser le constructeur de requête ?

Facilement. Nous ouvrons soit dans le schéma de composition des données, soit cliquez avec le bouton droit de la souris - le constructeur de requête dans n'importe quelle procédure ;

Comment sélectionner les données d'une certaine période pour un rapport ?

Dans le schéma de composition des données - paramètres - dans la fenêtre inférieure du tableau - paramètres.

Comment organiser les données dans un rapport ?

Dans le concepteur de requêtes, l'onglet "Ordre", sélectionnez le champ et la méthode de tri souhaités ;

Comment utiliser les données de plusieurs tables dans un rapport ?

Combinez-les avec une requête ;

Comment utiliser le regroupement dans la structure du rapport ?

Dans le schéma de composition des données, l'onglet Paramètres, cliquez avec le bouton droit sur "Rapport" - vous sélectionnez un regroupement pour afficher les informations sous la forme d'un rapport linéaire

Comment obtenir la dernière valeur du registre d'informations ?

Dans les paramètres de la table virtuelle, définissez la période, et sélectionnez la table virtuelle "InformationRegisterName.LastSlice" ;

Comment afficher des données hiérarchiques dans un rapport ?

Schéma de composition des données - paramètres - nouveau regroupement - type - "hiérarchie"

Comment gérer la sortie des totaux par regroupements et totaux ?

Système de composition de données - paramètres - dans la fenêtre inférieure "Autres paramètres" - "Emplacement des totaux" ; "Localisation des champs de regroupement", "Localisation des totaux verticalement"

Comment créer un rapport contenant un graphique ?

Schéma de composition des données - paramètres - rapport - clic droit - nouveau graphique

Comment utiliser les paramètres dans Data Composition Schema ?

Pour travailler avec des requêtes, un objet du langage intégré est utilisé Demande. Il vous permet de recevoir des informations stockées dans les champs de la base de données sous la forme d'une sélection formée selon des règles spécifiées..

La requête reçoit les informations initiales d'un ensemble de tables. Ces tables représentent les données de tables de bases de données réelles sous une forme pratique pour l'analyse. Ils peuvent être divisés en deux grands groupes : réel et virtuel.

Les tables réelles, à leur tour, peuvent être objet (référence) ou non objet (non référence), fig. 97.

Riz. 97. Tables de requête

Particularité tables réelles est qu'elles contiennent les données de n'importe quelle table réelle stockée dans la base de données. Par exemple, la table Directory.Customers, correspondant au répertoire Customers, ou la table Accumulation Register.Remainders of Materials, correspondant au registre d'accumulation de Restes of Materials, est réelle.

Les tables virtuelles sont formées principalement à partir de données provenant de plusieurs tables de base de données. Par exemple, la table Accumulation Register.Remains of Materials.Remains and Turnovers, formée de plusieurs tables du registre d'accumulation Restes de matériaux, est virtuelle.

Parfois, des tables virtuelles peuvent également être formées à partir d'une table réelle (par exemple, la table virtuelle Prix. Tranche du dernier est formée sur la base de la table du registre d'informations sur les prix). Cependant, ce que toutes les tables virtuelles ont en commun, c'est qu'elles peuvent recevoir un certain nombre de paramètres qui déterminent quelles données seront incluses dans ces tables virtuelles. L'ensemble de ces paramètres peut être différent pour différentes tables virtuelles et est déterminé par les données stockées dans les tables de la base de données source.

Les tables réelles sont divisées en objet (référence) et non-objet (non-référence).

À tables d'objets (de référence) des informations de types de données de référence (répertoires, documents, plans de types de caractéristiques, etc.) sont présentées. Et en non objectif (non référentiel)– tous les autres types de données (constantes, registres, etc.).

Particularité tables d'objets (de référence) est qu'ils incluent un champ Lien contenant un lien vers entrée actuelle . De plus, pour de telles tables, il est possible obtenir une représentation personnalisée d'un objet. Ces tables peuvent être hiérarchiques et les champs de ces tables peuvent contenir des tables imbriquées (sections de table).

L'algorithme par lequel les données seront sélectionnées à partir des tables source de la requête est décrit dans le texte de la requête dans un langage spécial - langage de requête . Le texte de la requête se compose de plusieurs parties :

une description de la demande;

Consolidation des demandes

classement des résultats ;

· COMMANDE AUTOMATIQUE ;

une description des résultats.

La partie obligatoire de la demande n'est que la première - la description de la demande. Tous les autres sont présents au besoin.

La description de la requête définit les sources de données, les champs de sélection, les regroupements, etc.

L'agrégation des requêtes détermine comment les résultats de plusieurs requêtes seront fusionnés.

L'ordre des résultats définit les conditions d'ordre des lignes de résultats de la requête.

AUTOORDER vous permet d'activer le tri automatique des lignes de résultats de requête.

La description des totaux détermine quels totaux doivent être calculés dans la requête et comment le résultat est regroupé.

Il convient de noter que lorsqu'un langage de requête est utilisé pour décrire des sources de données dans un système de composition de données, la section récapitulative du langage de requête n'est pas utilisée. Cela est dû au fait que le système de composition des données calcule indépendamment les totaux en fonction des paramètres définis par le développeur ou l'utilisateur.

Système de composition des données conçu pour créer des rapports personnalisés dans le système 1C:Enterprise 8.1 et se compose de plusieurs parties principales.

Les données initiales pour la mise en page du rapport contiennent schéma de composition des données sont des ensembles de données et des méthodes de travail avec eux(Fig. 98).

Le développeur crée un schéma de composition de données dans lequel il décrit le texte de la demande, les ensembles de données, les relations entre eux, les champs disponibles, les paramètres d'obtention des données et définit les paramètres de configuration initiaux - structure du rapport, présentation de la conception des données, etc.

Par exemple, un diagramme de mise en page peut contenir l'ensemble de données suivant (Figure 99).

Riz. 98. Régime général travailler avec le système de composition des données

Riz. 99. Un exemple de schéma de mise en page (un jeu de données et une requête l'utilisant)

Sur la fig. La figure 99 illustre la fenêtre du concepteur de schéma de composition de données, qui contient la source de données, le texte de la requête et les champs sélectionnés par la requête.

Le rapport du système de composition des données que l'utilisateur reçoit n'est pas simplement un tableau d'enregistrements correspondant à la requête. Il a une structure hiérarchique complexe et peut être composé de divers éléments tels que des regroupements, des tableaux et des graphiques. Dans le même temps, l'utilisateur peut modifier la structure de rapport existante ou même créer une toute nouvelle structure de rapport, configurer la sélection dont il a besoin, concevoir les éléments de la structure de rapport, obtenir une ventilation pour chaque élément, etc.

Par exemple, la structure de rapport suivante peut être définie (Fig. 100) :

Riz. 100. Structure d'un éventuel rapport

Le rapport généré peut ressembler à ceci (Fig. 101).

Dans le rapport présenté, le tableau consistera en des entrées de registre d'accumulation Chiffre d'affaires des ventes sur les clients et les services qui leur sont fournis. Ces enregistrements sont regroupés par les maîtres qui ont exécuté les commandes. Et dans le regroupement, une liste de maîtres sera affichée.

En général, le système de composition de données est une collection de plusieurs objets. Lors de la génération et de l'exécution d'un rapport, les données sont transférées séquentiellement d'un objet du système de composition de données à un autre, jusqu'à ce que le résultat final soit obtenu - un document présenté à l'utilisateur.

L'algorithme d'interaction de ces objets est le suivant : le développeur crée un schéma de composition de données et des paramètres par défaut. Dans le cas général, sur la base d'un schéma de composition de données, on peut créer un grand nombre de divers rapports. Les paramètres de composition des données - créés par le développeur ou modifiés par l'utilisateur - déterminent quel rapport sera reçu dans un cas particulier.

Riz. 101. Exemple de rapport

En fonction du schéma de mise en page et des paramètres disponibles, le générateur de mise en page crée une mise en page de données. C'est l'étape de préparation de l'exécution du rapport. Un modèle de composition de données est un travail déjà préparé pour être exécuté par le processeur de composition. La mise en page contient les requêtes nécessaires, les mises en page de la zone de rapport, etc.

Le processeur de composition des données sélectionne les données de l'infobase en fonction de la disposition de la composition, agrège et formate ces données.

Le résultat de la mise en page est traité par le processeur de sortie et, par conséquent, l'utilisateur reçoit le document de feuille de calcul résultant.

La séquence du système de mise en page peut être représentée par le schéma suivant (Fig. 102):

Riz. 102. Schéma du système de mise en page

3.12.1. Création du rapport "Registre des documents Prestation de services"

Signaler Registre des documents Prestation de services affichera une liste des documents Services existants dans la base de données dans l'ordre de leurs dates et numéros.

Signaler. Donne lui un nom RegisterDocumentsProvisionServices. Signet Principal Cliquez sur " Prêt". Dans le constructeur du schéma de composition des données, ajoutez Ensemble de données - Requête Requête constructeur".

Sélectionnez la table de document d'objet (référence) comme source de données pour la requête Services de rendu. Dans ce tableau, sélectionnez les champs suivants (Fig. 103) :

La date; Numéro; Stocker; Maître; Client.

Riz. 103. Champs sélectionnés

Après cela, allez au signet Ordre et spécifiez que le résultat de la requête doit d'abord être trié par valeur de champ la date, puis par valeur de champ RenderingServices.Link(Fig. 104).

Riz. 104. Ordre de sortie des résultats de la requête

Cliquez sur " D'ACCORD" et voyez quelle requête le constructeur de requête a générée.

Aller au signet Réglages et ajouter un nouveau regroupement à la structure du rapport (Fig. 105).

Riz. 105. Panneau de commandes de l'onglet Paramètres

Dans la fenêtre de sélection des champs de regroupement, cliquez sur le " D'ACCORD" et sur l'onglet Champs sélectionnés définissez les champs qui seront affichés dans le rapport :

La date; Numéro; Stocker; Maître; Cliente (Fig. 106).

Riz. 106. Personnalisation de la structure du rapport

Registre des documents prestation de services. Cliquez sur " Formulaire" et regardez le résultat du rapport (Fig. 107).

Riz. 107. Rapport Registre des documents de prestation de services

Signaler. nomme le Évaluation des services. Signet Principal Cliquez sur " Diagramme de composition des données ouvertes". Dans la boîte de dialogue Layout Designer qui s'ouvre, cliquez sur le " Prêt".

Dans le constructeur de schéma de composition de données, créez Ensemble de données - Requête(DataSet1) et cliquez sur le " Requête constructeur".

Nomenclature et une table virtuelle du registre d'accumulation Ventes.. Pour éviter toute ambiguïté de nom dans la requête, renommez la table Nomenclature en Nomenclature Spr(menu contextuel clic droit - Renommer table).

Ensuite, sélectionnez parmi les champs des tableaux Nomenclature Spr. Lien et Chiffre d'affaires des ventes. Chiffre d'affaires des revenus(Fig. 108).

Riz. 108. Champs sélectionnés

Aller au signet Connexions et notez que le constructeur a déjà créé une relation entre les deux tables sélectionnées - la valeur du changement dans le registre Nomenclature doit être égale à la référence à l'article dans le livre de référence Nomenclature.

La seule chose à faire est de réinitialiser le drapeau Toutà la table de registre et le mettre à la table de référence Nomenclature Spr(Fig. 109).

Pose du drapeau Tout pour la table répertoire signifiera que tous les éléments seront sélectionnés dans le répertoire et ces éléments se verront attribuer la valeur du chiffre d'affaires des recettes du registre. Ainsi, suite à la demande, tous les services seront présents, et pour certains d'entre eux le chiffre d'affaires sera indiqué. Pour les services qui n'ont pas été fournis dans la période sélectionnée, rien ne sera indiqué.

Riz. 109. Définition des liens de table

Aller au signet Conditions et fixer les conditions de sélection des éléments du référentiel Nomenclature (Fig. 110). Lors de la définition des conditions de sélection, vous devrez utiliser des paramètres de requête. La première condition doit être que l'élément sélectionné ne soit pas un groupe (pour cela, passez au Condition arbitraire- définir le drapeau Arbitraire). Puis sur le terrain condition saisissez le texte suivant :

SprNomenclature.ThisGroup = FALSE

La deuxième condition doit être que l'élément sélectionné soit un service (il s'agit condition simple) (fig. 110).

Riz. 110. Conditions de sélection des éléments

A l'avenir, avant d'exécuter la requête, dans le paramètre Nomenclature des types vous devez passer la valeur enum correspondante.

Aller au signet Syndicats/Alias et spécifiez que la vue de l'élément de référence aura un alias Service, et le champ de registre aura un alias Revenu(Fig. 111).

Riz. 111. Syndicats/alias

Aller au signet Ordre et spécifiez que le résultat de la requête doit être trié dans l'ordre décroissant de la valeur du champ Revenu. La création de la demande est terminée, cliquez sur le bouton " D'ACCORD". Regardez le texte de la requête généré par le constructeur.

Aller au signet Ressources et cliquez sur " >> " afin que le constructeur sélectionne toutes les ressources disponibles sur lesquelles calculer les totaux. Dans votre cas, il s'agit de la seule ressource Revenu(Fig. 112).

Riz. 112. Ressources du schéma de composition des données

Aller au signet Choix(Fig. 113).

Riz. 113. Options de composition des données

Sur cet onglet, vous verrez trois options : Début de période, FinPériode et Nomenclature des types. Le premier paramètre est le début de la période de calcul des totaux, le second est la fin de la période. Par conséquent, la table source ne contiendra que les chiffres d'affaires calculés dans la période transférée.

Pour le paramètre Début de période définir le titre qui sera affiché à l'utilisateur − la date du début.

Ici, vous devez toujours vous rappeler que si vous passez une date comme paramètre, la date contient également l'heure à la seconde la plus proche.

Supposons qu'il soit connu à l'avance que l'utilisateur ne sera pas intéressé par les résultats du rapport dans les périodes spécifiées avec une précision allant jusqu'à une seconde. Dans ce cas, deux caractéristiques doivent être prises en compte.

Tout d'abord, l'utilisateur doit être soulagé de la nécessité de spécifier l'heure lors de la saisie d'une date. Pour ce faire, modifiez la déclaration de type existante pour le paramètre Début de période. Double cliquer dans une cellule Modèles disponibles , correspondant au paramètre Début de période, appuyez sur le bouton de sélection " " et en bas de la fenêtre d'édition du type de données, définissez Composition des dates dans le sens la date(Fig. 114).

Cliquez sur " D'ACCORD".

La deuxième caractéristique est que l'heure par défaut dans la date est 00:00:00. Par conséquent, si l'utilisateur définit la période de rapport du 01/10/2009 au 31/10/2009, les totaux du registre seront calculés du début de la journée 01/10/2009 00:00:00 au début de la journée 31/10/2009 00:00:00. Ainsi, les données du 31e jour, autres que le début de la journée, ne seront pas incluses dans le calcul, ce qui surprendra grandement l'utilisateur. Pour éliminer cette situation, ajoutez un autre paramètre dans lequel l'utilisateur saisira la date de fin. Valeur du paramètre FinPériode sera calculé automatiquement afin qu'il indique la fin de journée de la date saisie par l'utilisateur. Ainsi, pour le paramètre FinPériode mettre le drapeau Restriction de disponibilité.

Riz. 114. Modification de la composition de la date

À l'aide du bouton de la barre de commandes, ajoutez un nouveau paramètre nommé EndDate (Fig. 115).

Riz. 115. Ajout du paramètre EndDate

Pour ce paramètre, la plateforme générera automatiquement un en-tête − date d'expiration. Laissez-le inchangé. Définissez le type de valeur du paramètre - la date. Dans ce cas, comme pour le paramètre Début de période, précisez la composition de la date - la date.

Veuillez noter que par défaut, le paramètre que vous avez ajouté est disponible pour l'utilisateur (la restriction d'accessibilité dans la dernière colonne est supprimée).

Aller au paramètre FinPériode. Pour cela, le système a activé l'indicateur de restriction de disponibilité. Ne la décochez pas, car la valeur de ce paramètre sera calculée en fonction de la valeur définie par l'utilisateur pour le paramètre Date d'expiration.

Pour définir la formule par laquelle la valeur du paramètre sera calculée FinPériode, utilisez le langage d'expression du système de composition de données. Il contient la fonction FinPériode(), qui vous permet d'obtenir la date correspondant à la fin d'une certaine période, par exemple, le jour spécifié.

Dans une cellule Expression définir le paramètre FinPériode l'expression suivante :

À la suite des actions ci-dessus, les paramètres de mise en page ressembleront à ceci (Fig. 116):

Riz. 116. Options du système de mise en page

Enfin, définissez le paramètre Nomenclature des types. Étant donné que le rapport ne doit afficher que les revenus provenant de la vente de services, la valeur du paramètre Nomenclature des types l'utilisateur ne doit pas changer. Il doit être défini directement dans la mise en page comme . Indicateur de restriction de paramètre Nomenclature des types la plate-forme l'a défini par défaut, il vous suffit donc de spécifier la valeur d'énumération souhaitée Nomenclature des espèces dans une cellule Sens, correspondant au paramètre Nomenclature des types(Fig. 117).

Riz. 117. Réglage de la valeur du paramètre Nomenclature Type

Passez à la formation de la structure du rapport. Signet Réglages ajoutez un regroupement et encore une fois ne spécifiez pas le champ de regroupement. Signet Champs sélectionnés préciser les champs Service et Revenu(Fig. 118).

Ensuite, allez au signet Autres réglages et définir le titre du rapport - Évaluation des services(Fig. 119).

Riz. 119. Définition du titre du rapport

Exécutez 1C:Enterprise en mode débogage.

Sélectionnez le rapport Note de service, mais avant de cliquer sur " Formulaire", ouvert Réglages et sur le signet Options de données définir la période de rapport du 01/03/2004 au 30/04/2004 (Fig. 120). Si les dates de création de vos documents diffèrent de celles données dans l'exemple, la période du rapport doit être définie différemment.

Riz. 120. Paramètres de rapport

Cliquez sur " D'ACCORD" et générer un rapport. Le résultat ressemblera à ceci (Fig. 121):

Riz. 121. Résultat de l'exécution du rapport

Modifiez maintenant la date de fin au 31/03/2004. Les données au 31 mars sont incluses dans le rapport (Fig. 122).

Riz. 122. Le résultat de l'exécution du rapport

3.12.3. Création du rapport "Revenus des masters"

Signaler Revenus des maîtres contiendra des informations sur les revenus perçus par Master LLC en raison du travail de chacun des maîtres, avec des détails pour tous les jours de la période sélectionnée et une ventilation des clients servis chaque jour. En utilisant ce rapport comme exemple, vous apprendrez à créer des regroupements à plusieurs niveaux dans une requête et à ignorer toutes les dates d'une période sélectionnée.

Créer un nouvel objet de configuration Signaler. nomme le RevenueMasters et exécutez le constructeur de schéma de composition de données principal.

Ajouter Ensemble de données - Requête(DataSet1) et cliquez sur le " Requête constructeur". Sélectionner la table virtuelle du registre d'accumulation Ventes..

Définissez l'une des options de cette table virtuelle − Périodicité. Pour cela, rendez-vous sur le terrain les tables et appuyez sur la touche "" (Fig. 123).

Riz. 123. Modification des paramètres d'une table virtuelle

Dans la fenêtre des paramètres qui s'ouvre, définissez la valeur du paramètre Périodicité - Jour(Fig. 124). Appuie sur le bouton " D'ACCORD".

Riz. 124. Options de table virtuelle

Sélectionnez ensuite les champs suivants dans le tableau :

· Chiffres d'affaires.

· Chiffre d'affaires.Période ;

· Chiffre d'affaires Client ;

· Chiffre d'affaires Chiffre d'affaires Chiffre d'affaires (Fig. 125).

Riz. 125. Champs sélectionnés

Allez maintenant au signet Syndicats/Alias et définir un alias Revenu pour le terrain Chiffre d'affaires des ventes. Chiffre d'affaires des revenus(Fig. 126).

Riz. 126. Syndicats/alias

Signet regroupement définir que le regroupement se fera par champs Maître, Période et Client, et valeurs de champ Chiffre d'affaires sera résumé (Fig. 127).

Riz. 127. Champs de regroupement

Signet Ordre spécifier que le résultat de la requête sera trié dans l'ordre croissant de la valeur du champ Période. Cliquez sur " D'ACCORD". Considérez le texte de requête généré par le constructeur.

Passez maintenant à la modification du schéma de composition des données. Signet Ressources Cliquez sur " >> " et assurez-vous que le constructeur a sélectionné la seule ressource disponible - Revenu.

Signet Choix suivez les mêmes étapes que lors de la création du rapport précédent.

Pour le paramètre Début de période définir un titre la date du début. Dans le champ Modèles disponibles définir la composition de la date - la date.

Pour le paramètre FinPériode définir une expression :

FinPériode(&DateFin, "Jour")

Dans le champ Limitation disponibilité définir l'indicateur de restriction de disponibilité.

Enfin, ajoutez un autre paramètre - Date d'expiration, définissez son type sur la date, la composition de la date est la date.

À la suite des actions ci-dessus, les paramètres de composition des données ressembleront à ceci (Fig. 128):

Riz. 128. Options de composition des données

Nous devons maintenant créer la structure du rapport. Signet Réglages créer séquentiellement deux regroupements imbriqués : niveau supérieur - par champ Maître, imbriqué dedans - par champ Période. Ajoutez ensuite un autre regroupement imbriqué dans le champ de regroupement par Période, – Fiches détaillées(sans préciser le champ de regroupement) (Fig. 129).

Riz. 129. Structure du rapport

Maintenant, étant au niveau du rapport global, allez dans l'onglet Champs sélectionnés et ajouter des champs à la liste Client et Revenu.

Enfin, depuis le niveau de rapport global, rendez-vous dans l'onglet Autres réglages et modifiez les paramètres suivants. Pour le paramètre valeur de consigne Séparément et uniquement dans les résultats; pour le paramètre définir la valeur Commencer et pour le paramètre entête définir la valeur Revenus des maîtres(Fig. 130).

Riz. 130. Réglage de la sortie des totaux généraux au début

Exécutez 1C:Enterprise en mode débogage et examinez le résultat du rapport Masters Revenue pour la période du 01/03/2004 au 30/04/2004 (Fig. 131).

Riz. 131. Résultat de l'exécution du rapport

Si vous vous en souvenez, ce rapport devrait afficher des données avec des détails pour tous les jours de la période sélectionnée. Désormais, seuls les jours pour lesquels il existe des entrées non nulles dans la table du registre d'accumulation sont affichés. Par conséquent, il est maintenant nécessaire de modifier les paramètres du rapport de manière à ce que chaque date de la période pour laquelle le rapport a été généré tombe dans le rapport.

Pour cela, revenez en mode configurateur et affinez la structure du rapport. Jusqu'à présent, tous les paramètres de structure que vous avez définis s'appliquent à l'ensemble du rapport. Mais le système de composition des données vous permet également de personnaliser individuellement chaque élément de la structure.

Vous devrez modifier le paramètre de regroupement Période. Pour aller dans les paramètres de ce regroupement particulier, dans le champ structure, placez le curseur sur ce regroupement, puis cliquez sur le " Période" dans le panneau de commande (Fig. 132).

Riz. 132. Paramètres de regroupement Période

Les paramètres disponibles pour ce regroupement seront affichés au bas du formulaire.

Aller au signet Champs de regroupement. Pour le terrain Période installer Type d'extension - Jour(Fig. 133).

Riz. 133. Réglage du type de complément de période

Ce faisant, vous avez indiqué que pour ce regroupement, les enregistrements existants avec une valeur de ressource non nulle seront complétés par des enregistrements pour chacun des jours.

Après cela, vous devez spécifier dans quelle période un tel ajout sera effectué. Dans les champs ci-dessous, vous pouvez saisir les dates de début et de fin de cette période. Mais spécifier explicitement des dates n'est pas approprié, car l'utilisateur peut générer un rapport pour une période arbitraire. Il est nécessaire que l'ajout de dates ne soit pas effectué dans une période fixe, mais dans la période que l'utilisateur a choisie pour l'ensemble du rapport.

Afin d'assurer exactement ce travail du rapport, entrez dans le mode d'édition du premier champ (par exemple, en double-cliquant dessus) et cliquez sur le bouton "effacer" X". Ensuite, en cliquant sur le bouton " J", vous pourrez sélectionner le type de données affichées dans ce champ. Sélectionnez Champ de composition des données(Fig. 134).

Riz. 134. Choisir un type de données

Cliquez sur " D'ACCORD". Cliquez maintenant dans le champ de saisie sur le bouton de sélection " " et dans la fenêtre de sélection des champs qui s'ouvre, cochez l'option Début de période(Fig. 135). Cliquez sur " D'ACCORD".

Riz. 135. Sélection du champ

Pour le deuxième champ de saisie, précisez de la même manière que la date de fin de période sera obtenue à partir du paramètre Date d'expiration(Fig. 136).

Riz. 136. Paramètres de regroupement Période

Exécutez 1C:Enterprise en mode débogage et exécutez le rapport Revenus des maîtres pour la période du 20 mars 2004 au 20 avril 2004 (Fig. 137).

Riz. 137. Résultat de l'exécution du rapport

3.12.4. Création d'un rapport d'inventaire des services

Signaler Liste des services contiendra des informations sur les services et à quel prix LLC "Master" fournit. Sur son exemple, vous vous familiariserez avec la possibilité d'obtenir les dernières valeurs du registre périodique d'informations et d'afficher des répertoires hiérarchiques.

Créer un nouvel objet de configuration Signaler. nomme le Liste des services et exécutez le Concepteur de schéma de composition de données. Créer un nouveau Ensemble de données - Requête(DataSet1) et appelez le constructeur de requête.

Sélectionnez la table de recherche d'objet (référence) Nomenclature et une table virtuelle de registre d'informations Prix.SliceLast. Afin d'éliminer l'ambiguïté des noms dans la requête, renommez la table Nomenclature en Nomenclature Spr.

Appeler la boîte de dialogue de saisie des paramètres de la table virtuelle PrixSliceDernier et indiquez que le point sera passé dans le paramètre Date du compte rendu(Fig. 138).

Riz. 138. Options de table virtuelle

Sélectionnez ensuite les champs suivants dans les tables :

· SprNomenclature.Parent ;

· PrixSliceDernier.Prix (Fig. 139).

Riz. 139. Champs sélectionnés

Aller au signet Connexions, baissez le drapeau Toutà la table de registre et définissez-le à la table de référence.

Signet Conditions définir la condition de sélection des éléments du dictionnaire Nomenclature– les éléments à sélectionner doivent correspondre au type d'élément passé dans le paramètre de requête Nomenclature des types(Fig. 140).

Riz. 140. Conditions de sélection des éléments

Signet Syndicats/Alias indiquer que le champ Parent aura un pseudonyme Groupe de services, et le champ Lien - Service(Fig. 141).

Riz. 141. Syndicats/alias

Aller au signet regroupement et indiquer que le regroupement se fera par champ SprNomenclature.Parent. Il n'est pas nécessaire de définir les valeurs des champs résumés (Fig. 142).

Fig.142. Champs de regroupement

Cliquez sur " D'ACCORD". Regardez le texte de la demande.

Passez à la modification du schéma de composition des données. Signet Ressources appuyant sur le bouton " >> " sélectionner la seule ressource disponible Prix.

Signet Choix définir la valeur du paramètre Nomenclature des types comment Enumeration.Types of Nomenclature.Service. En outre, supprimez la restriction d'accessibilité pour le paramètre Date du compte rendu et donnez-lui un titre - Date du compte rendu. Dans le champ Modèles disponibles définir la composition de la date - la date. Pour le paramètre Période, au contraire, définissez la restriction de disponibilité (Fig. 143).

Riz. 143. Options de schéma de mise en page

Passez à la formation de la structure du rapport. Aller au signet Réglages et créer un groupe par champ Groupe de services, en précisant le type de regroupement Hiérarchie. Dans ce regroupement, créez un autre regroupement sans spécifier de champ de groupe. Il contiendra des rapports détaillés (Fig. 144).

Riz. 144. Structure et champs mis en évidence du rapport

Aller au signet Champs sélectionnés et précisez que les champs Service et Prix seront affichés dans le rapport (Fig. 145).

Riz. 145. Structure du rapport

Et enfin mis en place apparence rapport de signet Autres réglages. Étant donné que le rapport ne sera qu'une liste de services fournis, dans lesquels les prix de services spécifiques présentent un intérêt, affichez les valeurs des ressources Prix pour chacun des groupes et pour l'ensemble du rapport dans son ensemble n'a pas de sens.

Pour désactiver l'affichage des totaux dans le rapport, définissez le paramètre Positionnement vertical des totaux généraux dans le sens Pas.

Accédez ensuite aux paramètres de regroupement spécifiques - Groupe de services. Pour le paramètre Emplacement des totaux ce regroupement, indiquez la valeur Pas. Revenez aux paramètres de l'ensemble du rapport dans son ensemble.

Pour le paramètre Emplacement des champs de regroupement entrer une valeur Séparément et uniquement dans les résultats(donc le rapport sera mieux "lu"). Enfin, définissez le titre du rapport - Liste des services.

Exécutez 1C:Enterprise en mode débogage et ouvrez d'abord le registre périodique Des prix.

Ajoutez-y une autre valeur pour le service Diagnostique: nouveau prix services au 1er avril 2004 - 350 (Fig. 146). Cela testera le rapport.

Riz. 146. Inscriptions au registre "Prix"

Exécutez maintenant le rapport Liste des services au 31 mars 2004 (Fig. 147).

Riz. 147. Résultat de l'exécution du rapport

Votre rapport reflète correctement le prix du service Diagnostics au 31/03/2004 - 200 roubles.

Exécutez à nouveau le rapport, mais maintenant pour une date différente - 01/04/2004 (Fig. 148).

Riz. 148. Résultat de l'exécution du rapport

Comme vous pouvez le voir, le nouveau prix du service de diagnostic est affiché - 350 roubles.

Signaler Évaluation du client montrera quel est le revenu de la prestation de services à chacun des clients pour toute la période d'exploitation de Master LLC. Sur son exemple, la possibilité d'utiliser un graphique pour afficher le résultat d'une requête sera démontrée.

Diagramme est un élément de contrôle destiné à être placé dans des tableaux et des formulaires de tableaux et de graphiques de différents types du système 1C:Enterprise.

Logiquement diagramme est la collection de points, de séries et de valeurs de série au point(Fig. 149).

En règle générale, les moments ou les objets pour lesquels vous obtenez les valeurs des caractéristiques sont utilisés comme points, et les caractéristiques pour lesquelles vous êtes intéressé par les valeurs sont utilisées comme séries.

Par exemple, un graphique des ventes de types d'articles par mois sera composé de points - mois, séries - types d'articles et valeurs - chiffre d'affaires.

Le diagramme en tant qu'objet du langage intégré comporte trois zones qui vous permettent de contrôler la conception du diagramme : la zone de construction, la zone de titre et la zone de légende (Fig. 150).

Le graphique peut être inséré dans la structure du rapport en tant qu'élément séparé. Lors de la création d'un rapport Évaluation du client le graphique sera utilisé dans la structure des paramètres du schéma de composition des données.

Riz. 149. Exemple de graphique

Riz. 150. Zones cartographiques

Créer un nouvel objet de configuration dans le configurateur Signaler. nomme le NoteClients, ouvrez son schéma de mise en page des données principal.

Créer ensemble de données - requête(DataSet1) et appelez le constructeur de requête. Sélectionner la table de registre d'accumulation virtuelle Ventes. et à partir de là un champ - Chiffre d'affaires.Client.

Ajoutez ensuite un nouveau champ (icône Ajouter dans la barre de commandes au-dessus de la liste des champs) et à l'aide du générateur d'expression, définissez-le comme la différence entre le revenu et le coût (Fig. 151).

Riz. 151. Éditeur d'expression de champ personnalisé

En conséquence, la liste des champs sélectionnés ressemblera à ceci (Fig. 152):

Riz. 152. Champs sélectionnés

Signet Syndicats/Alias spécifier que le champ calculé aura un alias Revenu(Fig. 153).

Riz. 153. Syndicats/alias

Signet Ordre indiquer que les lignes de résultat doivent être triées par ordre décroissant de la valeur du champ Revenu. Cliquez sur " D'ACCORD" et voyez quel texte le constructeur de requête a généré.

Aller au signet Ressources et ajouter un champ Revenu aux ressources de mise en page. Ensuite, allez au signet Réglages afin de créer la structure du rapport.

Contrairement à tous les rapports précédents, dont la structure contenait des groupements, ajoutez cette fois un diagramme à la structure du rapport (Fig. 154).

Riz. 154. Structure du rapport

Ajouter un regroupement par champ aux points du graphique Client. Laissez la série de graphiques inchangée.

Allez maintenant au signet Champs sélectionnés et sélectionnez le champ Revenu pour sortie dans le rapport. La structure du rapport doit prendre la forme suivante (Fig. 155) :

Riz. 155. Structure du rapport et paramètres du graphique

Signet Autres réglages définir le titre du rapport - Évaluation du client, et sélectionnez également le type de graphique − Volumétrique circulaire.

Exécutez 1C:Enterprise en mode débogage et ouvrez le rapport Évaluation du client(Fig. 156).

Riz. 156. Diagramme de volume circulaire dans le rapport

Veuillez noter que lorsque vous survolez un secteur du graphique, une info-bulle apparaît.

Ouvrez les paramètres du rapport et modifiez le type de graphique en Mesure. Générez à nouveau le rapport (Fig. 157).

Riz. 157. Tableau de mesure dans le rapport

3.12.6. Génération d'un rapport générique

En utilisant l'exemple de création d'un rapport universel, vous apprendrez comment le système de composition de données peut interagir avec un tableau croisé dynamique.

Créer un nouvel objet de configuration dans le configurateur Signaler. Donne lui un nom Universel. Ouvrez son schéma de composition de données principal et créez-en un nouveau ensemble de données - requête(EnsembleDonnées1).

Appelez le constructeur de requête et sélectionnez la table virtuelle du registre d'accumulation Ventes.. Dans ce tableau, sélectionnez tous les champs (Fig. 158).

Riz. 158. Champs sélectionnés

Dans l'onglet Regroupement en utilisant le " >> " sélectionnez tous les champs disponibles pour le regroupement et ajoutez toutes les ressources aux champs résumés (Fig. 159).

Riz. 159. Regroupement des champs et des ressources

Cliquez sur " D'ACCORD" et regardez le texte généré par le constructeur de requête.

Terminez la création du schéma de mise en page des données en procédant comme suit dans l'onglet de conception de la mise en page Ressources sélectionnez toutes les ressources disponibles (cliquez sur " >> "). Ceci termine le travail avec le schéma de composition des données, fermez-le et revenez à la fenêtre d'édition de l'objet de configuration Rapport Universel.

Aller au signet Formes et créez le formulaire principal du rapport en cliquant sur le bouton de visualisation à côté du champ du tableau Formulaire de rapport principal. Puisqu'il n'y a pas encore de formulaire principal, le système appellera le concepteur de formulaires. Acceptez ce que le système vous propose par défaut et appuyez immédiatement sur le bouton " Prêt".

Le formulaire principal du rapport s'ouvrira à l'écran. Comme vous pouvez le voir, le système a déjà inséré le champ pour vous feuille de calcul et l'a nommé Résultat(Fig. 160).

Riz. 160. Modification du formulaire de rapport

Vous devez insérer un tableau croisé dynamique dans ce champ. Mais les cellules de champ de document de feuille de calcul Résultat sont actuellement en Afficher uniquement. Pour insérer un tableau croisé dynamique, vous devez désactiver ce mode, alors cliquez sur le champ du document de feuille de calcul et faites Tableau -> Affichage -> Affichage uniquement. Vous pouvez maintenant modifier le champ de la table.

Placez le curseur dans la cellule supérieure gauche du champ du document de la feuille de calcul et exécutez Tableau -> Tableaux intégrés -> Insérer un tableau croisé dynamique. Le système ajoutera un tableau croisé dynamique au champ du tableau et ouvrira la fenêtre des champs du tableau croisé dynamique (Fig. 161).

Riz. 161. Tableau croisé dynamique

Afin d'afficher des données dans un tableau croisé dynamique, vous devrez écrire plusieurs lignes dans le module de formulaire. Ouvrez le module de formulaire de rapport et ajoutez la variable dont vous avez besoin au texte :

Source variable du tableau croisé dynamique ;

Après cela, créez le gestionnaire d'événements de formulaire de rapport Lors de l'ouverture(Dans la fenêtre des propriétés du formulaire Rapport Générique) et ajoutez-y le texte suivant :

Procédure OnOpen()

PivotTableSource = NewDataCompositionPivotTableDataSource ;

PivotTableSource.SetSchema(DataCompositionScheme);

FormElements.Result.EmbeddedTables.PivotTable1.DataSource =

Source du tableau croisé dynamique ;

Source du tableau croisé dynamique.SetSettings(SettingsComposer.Settings);

FinProcédure

Avec ce texte, vous définissez le schéma de composition des données pour le tableau croisé dynamique en tant que source de données et définissez les paramètres du générateur de paramètres pour celui-ci.

Exécutez 1C:Enterprise en mode débogage et ouvrez le rapport Universel. Un formulaire de rapport et une fenêtre de sélection des champs du tableau croisé dynamique apparaîtront à l'écran (Fig. 162).

Riz. 162. Rapport universel

Mettre la valeur de la ressource Chiffre d'affairesà Zone de données, dimension Nomenclature– à la zone Lignes, et la dimension Maître– dans la zone Haut-parleur. Le rapport prendra la forme suivante (Fig. 163) :

Riz. 163. Le résultat de l'exécution du rapport

Maintenant, dans la fenêtre PivotTable Field Selection, développez le groupe Nomenclature et ajoutez la valeur (Aucune hiérarchie) aux lignes (dans la liste déroulante de la fenêtre "Champs du tableau croisé dynamique", sélectionnez Ajuster aux lignes), et la mesure Client ajouter aux colonnes (dans la liste déroulante de la fenêtre "Champs du tableau croisé dynamique", sélectionnez Placer en colonnes). Le rapport changera d'apparence (Fig. 164).

Riz. 164. Le résultat de l'exécution du rapport

Ainsi, en utilisant les données du schéma de composition des données, vous avez fourni à l'utilisateur une possibilité alternative de générer indépendamment un rapport sur le registre Services rendus.

3.12.7. Génération d'un rapport générique 2

En utilisant l'exemple de création d'un deuxième rapport universel, vous apprendrez à contrôler directement les paramètres du système de mise en page et à générer des mises en page basées sur des options de conception standard.

Créer un nouvel objet de configuration Signaler Avec nom Universel2. Ouvrez son schéma de composition de données principal, créez-en un nouveau ensemble de données - requête(DataSet1) et exécutez le générateur de requêtes. Sélectionnez tous les champs de la table virtuelle du registre d'accumulation Ventes. et cliquez sur " D'ACCORD". Sur l'onglet Ressources concepteur de schéma de composition de données, cliquez sur " >> " et assurez-vous que le système a sélectionné trois ressources : Revenu Chiffre d'affaires, Quantité Chiffre d'affaires et CoûtChiffre d'affaires.

Signet Réglages créer un nouveau groupe Fiches détaillées(sans sélectionner le champ de regroupement).

Maintenant marqué d'un signet Formes fenêtre d'édition de rapport Universel2à l'aide du constructeur, créez le formulaire principal du rapport et modifiez-le.

Étirez la forme et placez deux étiquettes avec des noms dedans des champs et Ordre et avec des en-têtes Des champs: et Ordre: respectivement (Fig. 165).

Sous l'inscription des champs CommandPanelFields. Sous l'inscription Ordre placer une barre de commandes nommée CommandPanelOrderCommandPanelOrderCommandPanelOrder. Sous les panneaux de commande, organisez en conséquence les champs du tableau avec les noms TableFieldFields et TableFieldOrder.(Fig. 166). Dans la fenêtre des propriétés du panneau de commandes CommandPanelFields mettre le drapeau Saisie automatique et ActionSource - TableFieldField. Dans la fenêtre des propriétés du panneau de commande CommandPanelOrderCommandPanelOrderCommandPanelOrder mettre le drapeau Saisie automatique et ActionSource - TableFieldOrder.

Riz. 165. Modification du formulaire de rapport

Riz. 166. Formulaire de rapport Universel2

Maintenant pour le champ table TableFieldFields définir la source de données comme ReportObject.SettingsComposer.Settings.Selection(Fig. 167).

Riz. 167. Définir la source de données pour le champ de table

Identique au champ de table TableFieldOrder spécifier la source de données ReportObject.SettingsComposer.Settings.Order.

Après avoir effectué les actions décrites, vous avez associé les champs situés dans le formulaire aux paramètres du système de mise en page de l'état, - Choix et Ordre. Choix vous permet de gérer la liste des champs qui seront inclus dans le résultat du rapport, et Ordre définit l'ordre de sortie des lignes de résultat. Des panneaux de commande seront nécessaires à l'utilisateur pour définir les valeurs de ces champs. Utilisation des propriétés de la barre de commandes Saisie automatique et Source d'actions, une génération automatique de commandes en fonction du type de données contenues dans chacun des champs de la table a été obtenue.

Le système 1C:Enterprise 8 dispose d'un petit ensemble de mises en page de conception prêtes à l'emploi à utiliser par le système de composition de données. Ils sont contenus dans l'objet. Layout LibraryDesignsLayoutsData.

Mettez une autre inscription avec le nom Décor et titre Décor:, et à sa droite placez une boîte de sélection avec le nom ChoixChampDécoration(Fig. 168) sans signature.

Riz. 168. Modification du formulaire de rapport

Dans les propriétés du champ de sélection, ouvrez la fenêtre Lignes de liste de sélection et remplissez-le avec les noms de mise en page de la bibliothèque de mise en page de conception de mise en page de données (voir Figure 169).

Riz. 169. Remplir la liste des valeurs du champ select

Pour que la zone de sélection modifie la disposition du système de mise en page appliquée, créez un gestionnaire Quand ça change champs de sélection :

ProcedureSelectionFieldDesignOnChange(Element)

OutputParameters = LinkerSettings.Settings.OutputParameters ;

ParameterLayoutLayout = OutputParameters.FindParameterValue(Nouveau

DataCompositionParameter("DesignLayout"));

ParameterDesignLayout.Use = true ;

ParameterDesignLayout.Value = ChoiceFieldDesign ;

FinProcédure

Avec ce texte pour le paramètre de composition des données LayoutDesign vous spécifiez le nom de la mise en page avec laquelle le rapport doit être formaté et définissez l'indicateur d'utilisation de la mise en page de mise en page.

Exécutez 1C:Enterprise en mode débogage et ouvrez le rapport Universel2.

Ajoutez les champs suivants aux champs sélectionnés :

· Maître;

· Nomenclature;

· Chiffre d'affaires.

Définissez l'ordre de tri :

· Maître ascendant ;

· Nomenclature. Type de Nomenclature par ordre décroissant ;

· Nomenclature par ordre croissant.

Choisissez un design, par exemple Vert, et cliquez sur le " Formulaire". Le résultat ressemblera à ceci (Fig. 170):

Riz. 170. Résultat de l'exécution du rapport

Modifiez maintenant les conditions de génération du rapport. Sélectionnez les champs Maître d'ouvrage, Nomenclature et Chiffre d'affaires. L'ordre de tri sera dans l'ordre croissant de la valeur du champ Client, et l'option de conception - Mer. Exécutez le rapport (Fig. 171).

Riz. 171. Résultat de l'exécution du rapport


3.13. Optimisation du document "Fourniture de Services"

Supposons que la direction de OOO "Master" ait pris une décision finale sur la procédure de calcul du coût des matériaux utilisés dans le processus de prestation de services. A savoir, le coût actuel du matériel sera déterminé comme un quotient du coût total du solde de ce matériel et de sa quantité restante en stock.

De plus, les outils 1C:Enterprise 8.1 vous permettent de contrôler la vitesse de la procédure de publication des documents grâce à l'utilisation du mécanisme de requête.

Ainsi, l'optimisation des documents Services de rendu, répond à deux objectifs :

Déterminer le coût des consommables lors de la réalisation d'un document ;

Augmenter la vitesse de la procédure de traitement des documents.

Supprimer dans le document Services de rendu accessoires de partie tabulaire Prix, qui n'est plus nécessaire. Supprimez également la colonne correspondante du champ tableau situé dans la fiche du document Services de rendu.

Après cela, supprimez complètement le contenu du gestionnaire d'événements Traitement dans le module de documents Services de rendu et créez-y un blanc de la procédure. Le texte de la requête exécutée en mode d'exécution en ligne (c'est-à-dire sur date actuelle et l'heure) sera différente de la requête exécutée lors d'une publication non en temps réel (c'est-à-dire "antidatage"). Par conséquent, la formation du texte de la requête doit être incluse dans la condition If... Sinon... EndIf :

Demande = Nouvelle demande ;

Si Mode = Mode de comptabilisation des documents. Opérationnel Alors

Request.Text =

Autrement

Request.Text =

Fin si;

Commencez par créer une requête qui sera exécutée lors de la mise en ligne du document. La valeur de la variable Request.Text sera générée automatiquement. Pour ce faire, placez le curseur avant le point-virgule, appelez le menu contextuel en appuyant sur le bouton droit de la souris et sélectionnez l'élément Requête constructeur. Acceptez de créer une nouvelle demande. La boîte de dialogue Générateur de requêtes apparaîtra à l'écran. Ouvrir le tableau Nomenclature de la liste partie tabulaire du document Services de rendu et sélectionnez-en des champs :

· Nomenclature;

· Quantité;

· Nomenclature.Type de Nomenclature ;

Ces champs seront nécessaires pour définir les valeurs de dimension des registres et leurs ressources. De plus, le champ Nomenclature des types vous devrez analyser quelle est la nomenclature spécifiée dans le document: un matériau ou un service (Fig. 172).

Riz. 172. Champs sélectionnés

Pour spécifier des valeurs de ressource Prix registres Coût des matériaux et Ventes vous devrez calculer le coût actuel de l'article comme le quotient du coût restant de ce matériau et de sa quantité restante.

Par conséquent, ajoutez deux tables supplémentaires à la liste des tables sélectionnées (Fig. 173).

Registre d'accumulation. Restes de matériaux. Restes.

Riz. 173. Tableaux sélectionnés

Ces tables virtuelles doivent avoir les mêmes paramètres. Sélectionnez d'abord la table virtuelle RésidusMatériauxRésidus, appelez le menu contextuel en appuyant sur le bouton droit de la souris et sélectionnez l'élément Options de table virtuelle. Les paramètres incluront le moment auquel le reste de ces registres doit être reçu, et la condition de réception des données.

La condition d'obtention des données indique que les soldes ne doivent être reçus que pour les postes du poste contenus dans le document comptabilisé (avant d'exécuter la demande, une liste de tous les postes du poste contenu dans le document comptabilisé doit être transmise au paramètre Liste d'éléments de document) - fig. 174.

Riz. 174. Options de table virtuelle

Définir les mêmes paramètres pour la deuxième table virtuelle Coût des matériaux. Sélectionnez ensuite les champs Coût restant et Quantité restante dans ces tables virtuelles (Fig. 175).

Riz. 175. Champs sélectionnés

Sélectionnez à nouveau la table virtuelle du registre d'accumulation RésidusMatériauxRésidus et renommez-le en Matériaux restants restant dans l'entrepôt(Fig. 176).

Riz. 176. Tableaux sélectionnés

Pour cette table virtuelle, spécifiez également le paramètre Moment of Time et, dans la condition, écrivez que le matériau doit figurer dans la liste des articles et que l'entrepôt doit être égal à l'entrepôt spécifié dans le document (Fig. 177).

Riz. 177. Paramètres du tableau

Maintenant, depuis cette table virtuelle, sélectionnez le champ Quantité Restante (Fig. 178).

Riz. 178. Champs sélectionnés

Ceci termine la formation de la liste des champs sélectionnés et vous pouvez passer à la définition des conditions de liaison entre les tables sélectionnées. Pour cela, rendez-vous dans le signet Connexions. Chacune des tables virtuelles doit être liée à la table des documents de telle manière que pour tous les enregistrements de la table des documents, les enregistrements existants de la table virtuelle doivent être sélectionnés, et la nomenclature dans la table des documents doit être égale au matériel de la table virtuelle (Fig. 179, a-b).

Riz. 179a. Tableaux sélectionnés

Riz. 179b. Conditions de relation entre les tables

Allez maintenant au signet En outre et mettre le drapeau Pour changer. Drapeau Pour changer vous permet de bloquer à l'avance la lecture des données spécifiées (qui peuvent être lues par une transaction d'une autre connexion) déjà lors de la lecture, afin d'éviter les interblocages lors de l'écriture. Cette clause permet de spécifier dans la requête les tables dont les données lues sont à modifier.

Parce que vous envisagez d'écrire les registres d'accumulation RestesMatériaux et Coût des matériaux, spécifiez les tables de ces registres comme tables à modifier (Fig. 180).

Riz. 180. Spécifiez les tables à modifier

Aller au signet Conditions et définissez la condition de sélection dans la table des documents uniquement des lignes du document actuel (un lien vers celui-ci sera transmis au paramètre de requête Lien) - fig. 181. Pour cela, double-cliquez avec le bouton gauche de la souris sur le champ Lien.

Riz. 181. Condition de sélection à partir du tableau de documents

Aller au signet Syndicats/Alias et définissez les alias de champ suivants : NomenclatureNomenclatureView -> NomenclatureView ; QuantitéRemaining1 -> QuantitéEnStock.

Cliquez sur " D'ACCORD" et voyez quel texte de requête le constructeur a généré (la valeur de la variable Request.Text) :

Prestation de ServicesListe de Nomenclature.Nomenclature.Type de Nomenclature AS Type de Nomenclature,

Le coût des matériaux demeure. Le coût demeure,

Matières restantes restant en stock. Quantité restante AS Quantité en stock

LEFT JOIN Accumulation Register.MaterialsCost.Remains(&Point in Time, Material In (&Document ItemList)) AS MaterialsCostRemains

Matériau dans (&DocumentNomenclatureList)) AS ResiduesMaterialsResidues

Services de rendu de logicielsListe de la nomenclature. Nomenclature =

JOINT GAUCHE

Matériel dans (&DocumentItemList) AND Warehouse = &WarehouseInDocument)

COMMENT LES RESTES DE MATÉRIAUX

Services de rendu de logicielsListe de la nomenclature. Nomenclature =

Restes de matériaux Restes dans l'entrepôt.

POUR CHANGER

Registre d'accumulation Coût des matériaux Soldes,

Accumulation Register.RemaindersMaterials.Remains

Le texte de la demande pour le cas d'affichage non opérationnel du document sera presque le même, sauf qu'il lui manquera la troisième jointure à gauche et, par conséquent, le champ La quantité en dépôt, car Dans ce cas, il n'est pas nécessaire de vérifier les soldes. Positionnez le curseur avant le point-virgule situé dans la section Autrement(voir page 135) et collez le texte de requête suivant :

Prestation de servicesListe de la nomenclature Nomenclature,

Prestation de ServicesListe de Nomenclature Quantité,

Prestation de servicesListe de nomenclature.Nomenclature.Type de nomenclature AS

Nomenclature des types,

Prestation de ServicesListe de Nomenclature Montant,

ResiduesMaterialsResidues.QuantityRemainder,

CostMaterialsRemainder.CostRemainder

Document.Fourniture de Services.Liste de Nomenclature AS Prestation de ServicesListe de Nomenclature

JOINT GAUCHE

COMMENT COÛTER LES MATÉRIAUX

Services de rendu de logicielsListe de la nomenclature. Nomenclature =

Coût des matériaux Résidus.Material

JOINT GAUCHE

Matériel dans (&DocumentNomenclatureList))

AS ResteMatériauxRemains

Services de rendu de logicielsListe de la nomenclature. Nomenclature =

RésidusMaterialsResidues.Material

POUR CHANGER

Registre d'accumulation.Restes de matériaux.Restes,

Registre d'accumulation. Coût des matériaux. Restes ;

Ajoutez maintenant les paramètres de la requête au texte du gestionnaire (ajoutez uniquement les commandes mises en surbrillance dans les lignes correspondantes en gras):

Demande = Nouvelle demande ;

Query.SetParameter("EntrepôtDansDocument", Entrepôt);

Si Mode = Mode de comptabilisation des documents. Opérationnel Alors

Request.Text =

| Registre d'accumulation. Coût des matériaux. Soldes" ;

Fin si;

Query.SetParameter("MomentTime", MomentTime());

Query.SetParameter("DocumentNomenclatureList",

ItemList.UnloadColumn("Nomenclature"));