LA CLOCHE

Il y a ceux qui lisent cette actualité avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam

La méthode est basée sur l'utilisation d'un objet Générateur de rapports est un objet qui permet, en fonction du texte de requête ou de la source de données spécifié, ainsi que des paramètres, d'obtenir le résultat et de l'afficher dans une feuille de calcul ou un diagramme.

Description de la méthode

1. Obtenez la zone de cellules de la feuille de calcul que vous souhaitez placer dans le tableau de valeurs. L'obtention d'une zone doit être définie de manière à inclure une ligne d'en-têtes de colonne (voir la figure 1), une fonctionnalité de l'objet ReportBuilder.

CellScope \u003d TabDocument.Area (1, 1, LastRow, LastColumn);


2. En vous basant sur la zone de cellule du document de feuille de calcul, créez une description de la source de données.

DataSource \u003d NewDataSourceDescription (CellScope);

3. Créez un objet ReportBuilder, spécifiez la source de données au lieu du texte de la requête et créez le rapport.



Le résultat de la lecture des données de la source après l'appel de la méthode Exécuter () est dans la propriété Résultat... Cette propriété contient un objet du type QueryResult; un objet du même type est renvoyé lorsque la requête est exécutée.

4. Déchargeons le résultat dans la table des valeurs (voir la figure 2) en appelant la méthode Unload () de l'objet QueryResult.

ValueTable \u003d ReportBuilder.Result.Upload ();

Parmi les inconvénients évidents, les valeurs des colonnes sont du type chaîne. En outre, l'objet Report Builder est disponible uniquement sur le serveur, vous devrez conduire le document de feuille de calcul du client vers le serveur.

Code de programme final

Fonction ConvertTableDocumentToTableValues \u200b\u200b(TabDocument)
LastRow \u003d TabDocument.Table Hauteur;
LastColumn \u003d TabDocument.TableWidth;
CellScope \u003d TabDocument.Area (1, 1, LastRow, LastColumn);
// Créer une description de la source de données basée sur la zone de cellule du document de feuille de calcul.
DataSource \u003d NewDataSourceDescription (CellScope);
// Créer un objet pour la construction intelligente de rapports,
// spécifiez la source de données et créez le rapport.
ReportBuilder \u003d NewReportBuilder;
Report Builder.DataSource \u003d DataSource;
Générateur de rapports.Run ();
// Téléchargez le résultat dans la table des valeurs.
ValueTable \u003d ReportBuilder.Result.Upload ();
Retour des valeurs de tabulation
FinFonction

Le traitement avec la mise en œuvre de cette méthode peut être téléchargé

Bonne journée!

Aujourd'hui, j'invite les dames et messieurs de Paris à découvrir comment gérer par programme les formulaires contrôlés. Comment créer un tableau de valeurs, comment créer des colonnes, comment le remplir, comment l'afficher sur un formulaire, comment activer ou désactiver des modifications, comment agrandir les colonnes d'un tableau existant sur le formulaire ... Eh bien,

aller!

Donc, nous avons un formulaire et une requête, dont le résultat est sauvegardé dans une table. Par exemple, comme ceci:

Request \u003d New Request ("SELECT * FROM Directory.Banks"); Table \u003d Query.Run (). Unload ();

Afficher la table sur un formulaire géré

Notre objectif principal du nombre TIME est de générer le résultat de la requête dans un formulaire géré.

Pour cela, nous avons besoin de:

  1. Créez un attribut de type "ValuesTable".
  2. Créez des attributs avec un type de valeur correspondant au type d'une colonne de table, pour chaque colonne, subordonnée à la table.
  3. Créez un élément de formulaire du type "FormTable" pour la table.
  4. Créez des éléments de formulaire pour les colonnes de type "FormField".

Ainsi, notre code sera comme ceci:

// ajoute une table: d'abord la table elle-même, puis la colonne. Requisites \u003d New Array; Attributes.Add (Nouvel attribut de formulaire ("TableOnForm", nouvelle description des types ("Value Table"))); Pour chaque St FROM Table.Columns Cycle Attributes.Add (Nouvel attribut de formulaire (St.Name, St.TypeValue, "TableNaForm")); Fin de cycle; // ajoute les conditions requises au formulaire ChangeAttributes (Attributes); // ajouter des éléments de formulaire Tab \u003d Elements.Add ("TableOnForm", Type ("FormTable")); Tab.PutKData \u003d "TableOnForm"; // interdire de changer la position des lignes et des lignes elles-mêmes, désactiver le panneau de commande Tab.ChangeStringComposition \u003d False; Tab.ChangeRowOrder \u003d False; CommandPanelTable \u003d CommandPanelFormElement Position.No; Pour chaque St FROM Table.Columns Cycle Records \u003d Elements.Add ("Colonne" + St.Name, Type ("Form Field"), Tab); Rec.View \u003d FormFieldKind.LabelField; Rec.PathData \u003d "TableOnForm" + "." + Nom de St.; Rec.Header \u003d Art.Name; Fin de cycle; // remplissez la table ValueBFormAttribute (Table, "TableOnForm");

Ici, nous créons des attributs contenant la table et les colonnes de table. Ensuite, nous créons les éléments et écrivons le chemin d'accès aux détails du formulaire pour eux. Ceux. nous créons toujours à la fois un accessoire de formulaire qui stocke une valeur et un élément de formulaire qui affiche cette valeur. C'est tout le point. Dans ce cas, si vous souhaitez créer un groupe de formulaires, vous n'avez pas besoin de l'attribut form - il vous suffit de créer un élément de formulaire de type "FormGroup", puis dans le champ "View" écrivez le type correspondant de l'élément (Group, Bookmark, ...).

Ce code affiche le résultat de la requête sur un formulaire géré. Mais si soudainement, à la suite de la demande, vous avez des éléments dont les types ne peuvent pas être affichés sur le formulaire, alors 1C jurera. Ces éléments incluent des magasins de valeurs, des identifiants uniques et, pour autant que je sache, d'autres tables de valeurs (c'est-à-dire que nous aurons des problèmes lors de la récupération des sections tabulaires). Cela doit être pris en compte lors de la création des détails. En même temps, si un attribut de table a le type "ValuesTable", il devra également créer des colonnes pour lui. Il convient également de garder à l'esprit que les noms des éléments du formulaire doivent être uniques et que les noms des attributs doivent être uniques au sein de leurs parents (c'est-à-dire qu'il peut y avoir deux tables différentes avec les mêmes noms de colonne, mais les noms de colonne doivent être différents dans la même table).

Ajouter une colonne à la table de documents

Voyons maintenant comment vous pouvez étendre une table de formulaire existante.

Disons que nous voulons ajouter une colonne au tableau des avances émises sur le rapport anticipé comme ceci:

Pour ce faire, écrivez simplement le code suivant dans la procédure OnCreateOnServer:

// ajoute un attribut ArrayAttributes \u003d New Array; ArrayAttributes.Add (Nouvel attribut de formulaire ("Column1", NewDescription of Types ("Line"), "Object. ModifyAttributes (ArrayAttributes); Elt \u003d Elements.Add ("Colonne1", Type ("FormField"), Elements.EssentialAvans); Elt.View \u003d FormField.EnterField; Elt.PutKDanny \u003d "Objet. IssuedAvans.Column1";

Cependant, gardez à l'esprit que vous devrez remplir cette colonne chaque fois que vous ouvrirez un document et enregistrer les données correspondantes dans un stockage séparé, par exemple, un registre d'informations avec un document et un numéro de ligne en tant que dimensions, et une valeur dans la ressource.

Afin d'enregistrer l'argent et les biens, différentes tables sont largement utilisées dans les affaires. Presque chaque document est un tableau.

Un tableau répertorie les articles à expédier depuis l'entrepôt. Dans un autre tableau, il y a des obligations de payer pour ces marchandises.

Par conséquent, en 1C, le travail avec des tables occupe une place prépondérante.

Les tableaux en 1C sont également appelés "sections tabulaires". Les livres de référence, les documents et autres en ont.

À la suite de son exécution, la requête renvoie une table, accessible de deux manières différentes.

La première sélection - plus rapide -, la récupération des lignes à partir de celle-ci n'est possible que dans l'ordre. La seconde consiste à décharger le résultat de la requête dans une table de valeurs, puis à y accéder de manière aléatoire.

// Option 1 - accès séquentiel aux résultats de la requête

// récupère la table
Selection \u003d Query.Run (). Select ();
// parcourt toutes les lignes du résultat de la requête dans l'ordre
Pendant l'échantillonnage.Next () Loop
Rapport (Exemple. Nom);
Fin de cycle;

// Option 2 - déchargement dans une table de valeurs
Request \u003d New Request ("SELECT Name FROM Directory.Nomenclature");
// récupère la table
Table \u003d Query.Run (). Unload ().
// plus loin, nous pouvons également contourner toutes les lignes
Pour chaque ligne de la boucle de table
Rapport (String.Name);
Fin de cycle;
// ou accède arbitrairement aux chaînes
Line \u003d Table. Find ("Shovel", "Name");

Une caractéristique importante est que dans la table obtenue à partir du résultat de la requête, toutes les colonnes seront fortement typées. Cela signifie qu'en demandant le champ Nom à partir du livre de référence de la nomenclature, vous recevrez une colonne du type Chaîne avec une longueur autorisée ne dépassant pas N caractères.

Tableau sur formulaire (gros client)

L'utilisateur travaille avec la table lorsqu'elle est placée sur le formulaire.

Nous avons discuté des principes de base du travail avec les formulaires dans la leçon et dans la leçon sur

Alors, plaçons le tableau sur le formulaire. Pour ce faire, vous pouvez faire glisser le tableau depuis le panneau de configuration. De même, vous pouvez sélectionner dans le menu Formulaire / Insérer un contrôle.

Les données peuvent être stockées dans la configuration - vous devez ensuite sélectionner la section tabulaire existante (précédemment ajoutée) de l'objet de configuration dont vous éditez le formulaire.

Cliquez sur le bouton "..." dans la propriété Data. Pour voir la liste des sections tabulaires, vous devez développer la branche Objet.

Lors du choix d'une section tabulaire, 1C lui-même ajoutera des colonnes au tableau du formulaire. Les lignes saisies par l'utilisateur dans un tel tableau seront enregistrées automatiquement avec la référence / le document.

Dans la même propriété Data, vous pouvez entrer un nom arbitraire et sélectionner le type ValuesTable.

Cela signifie qu'une table arbitraire de valeurs est sélectionnée. Il n'ajoutera pas automatiquement de colonnes, il ne sera pas automatiquement enregistré, mais vous pouvez en faire ce que vous voulez.

En cliquant avec le bouton droit sur le tableau, vous pouvez ajouter une colonne. Dans les propriétés d'une colonne, vous pouvez spécifier son nom (pour référence dans le code 1C), l'en-tête de colonne sur le formulaire, le lien avec l'attribut de section tabulaire (ce dernier - si ce n'est pas un tableau arbitraire, mais la section tabulaire est sélectionnée).

Dans les propriétés du tableau du formulaire, vous pouvez spécifier si l'utilisateur peut ajouter / supprimer des lignes. Formulaire plus avancé - case à cocher Afficher uniquement. Ces propriétés sont utiles pour organiser les tableaux pour afficher des informations, mais pas pour les éditer.

Pour gérer le tableau, vous devez afficher la barre de commandes sur le formulaire. Sélectionnez l'élément de menu Formulaire / Insérer un contrôle / Panneau de commande.

Dans les propriétés de la barre de commandes, cochez la case Autocomplete pour que les boutons de la barre apparaissent automatiquement.

Tableau sur formulaire (client léger / géré)

Sur un formulaire géré, ces actions sont légèrement différentes. Si vous devez placer une section tabulaire sur le formulaire, ouvrez la branche Objet et faites glisser l'une des sections tabulaires vers la gauche. Et c'est tout!

Si vous avez besoin de placer une table de valeurs, ajoutez un nouvel attribut du formulaire et spécifiez le type - table de valeurs dans ses propriétés.

Pour ajouter des colonnes, utilisez le menu contextuel sur cet attribut de formulaire, l'élément de colonne Ajouter un attribut.

Faites ensuite également glisser le tableau vers la gauche.

Pour que le tableau ait une barre de commandes, dans les propriétés du tableau, sélectionnez les valeurs dans la section Utilisation - Position de la barre de commandes.

Exporter un tableau vers Excel

Tout tableau 1C situé sur le formulaire peut être imprimé ou téléchargé sur Excel.

Pour ce faire, cliquez avec le bouton droit sur un espace vide du tableau et sélectionnez Liste.

Dans un client géré (léger), des actions similaires peuvent être effectuées à l'aide de l'élément de menu Toutes les actions / Afficher la liste.

La méthode est basée sur l'utilisation d'un objet Générateur de rapports est un objet qui permet, en fonction du texte de requête ou de la source de données spécifié, ainsi que des paramètres, d'obtenir le résultat et de l'afficher dans une feuille de calcul ou un diagramme.

Description de la méthode

1. Obtenez la zone de cellules de la feuille de calcul que vous souhaitez placer dans le tableau de valeurs. L'obtention d'une zone doit être définie de manière à inclure une ligne d'en-têtes de colonne (voir la figure 1), une fonctionnalité de l'objet ReportBuilder.

CellScope \u003d TabDocument.Area (1, 1, LastRow, LastColumn);


2. En vous basant sur la zone de cellule du document de feuille de calcul, créez une description de la source de données.

DataSource \u003d NewDataSourceDescription (CellScope);

3. Créez un objet ReportBuilder, spécifiez la source de données au lieu du texte de la requête et créez le rapport.



Le résultat de la lecture des données de la source après l'appel de la méthode Exécuter () est dans la propriété Résultat... Cette propriété contient un objet du type QueryResult; un objet du même type est renvoyé lorsque la requête est exécutée.

4. Déchargeons le résultat dans la table des valeurs (voir la figure 2) en appelant la méthode Unload () de l'objet QueryResult.

ValueTable \u003d ReportBuilder.Result.Upload ();

Parmi les inconvénients évidents, les valeurs des colonnes sont du type chaîne. En outre, l'objet Report Builder est disponible uniquement sur le serveur, vous devrez conduire le document de feuille de calcul du client vers le serveur.

Code de programme final

Fonction ConvertTableDocumentToTableValues \u200b\u200b(TabDocument)
LastRow \u003d TabDocument.Table Hauteur;
LastColumn \u003d TabDocument.TableWidth;
CellScope \u003d TabDocument.Area (1, 1, LastRow, LastColumn);
// Créer une description de la source de données basée sur la zone de cellule du document de feuille de calcul.
DataSource \u003d NewDataSourceDescription (CellScope);
// Créer un objet pour la construction intelligente de rapports,
// spécifiez la source de données et créez le rapport.
ReportBuilder \u003d NewReportBuilder;
Report Builder.DataSource \u003d DataSource;
Générateur de rapports.Run ();
// Téléchargez le résultat dans la table des valeurs.
ValueTable \u003d ReportBuilder.Result.Upload ();
Retour des valeurs de tabulation
FinFonction

Le traitement avec la mise en œuvre de cette méthode peut être téléchargé

LA CLOCHE

Il y a ceux qui lisent cette actualité avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam