Comment obtenir des données de la partie tabulaire des documents ? Obtenez des données de la partie tabulaire d'un document 1C

Accueil Pour les développeurs débutants Apprendre à programmer

Comment obtenir des données de la partie tabulaire des documents ?

Par exemple, considérons une situation dans laquelle vous devez obtenir tous les éléments spécifiés dans la section tabulaire. Marchandises documents Ventes de biens et services.

Pour ce faire, vous pouvez utiliser une requête avec le texte suivant :

SELECT DIVERS Ventes de biens et services Biens. Nomenclature AS Nomenclature FROM Document. Ventes de biens et services. Biens AS Ventes de biens et services Biens

Comme source nous indiquons la partie tabulaire des documents - tableau Document. Ventes de biens et de services. Biens. Nous déclarons que le champ de sortie est le champ Nomenclature, qui fait partie de la table source. De plus, étant donné qu'un même article de produit peut naturellement être présent plus d'une fois dans les documents, nous utilisons DIVERS pour obtenir uniquement les lignes distinctes de la table de sortie de la requête.

Par exemple, créons un traitement Liste de produits, où le document est sélectionné Ventes de biens et services, et en cliquant sur le bouton correspondant, une liste des éléments non répétitifs de la nomenclature contenue dans la partie tabulaire de ce document s'affiche dans la fenêtre de message.

Afin de limiter la sélection des éléments uniquement aux éléments de la partie tabulaire d'un document spécifique, nous utilisons le paramètre Lien dans l'état indiqué dans la demande ( OÙ...):

SELECT DIVERS Ventes de biens et services Biens. Nomenclature AS Nomenclature FROM Document. Ventes de biens et services. Biens COMMENT Ventes de biens et services Biens OÙ Ventes de biens et services Biens. Link = &Link

Afin de comptabiliser l'argent et les biens, divers tableaux sont largement utilisés dans les affaires. Presque tous les documents sont un tableau.

Un tableau répertorie les marchandises à expédier depuis l'entrepôt. Un autre tableau montre les obligations de payer pour ces biens.

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

Les tableaux en 1C sont également appelés « parties tabulaires ». Les répertoires, documents et autres en ont.

La requête, une fois exécutée, renvoie une table accessible de deux manières différentes.

La première sélection - plus rapide -, l'obtention de lignes à partir de celle-ci n'est possible que dans l'ordre. La seconde consiste à télé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 le tableau
Sélectionner = Query.Run().Select();
// on parcourt toutes les lignes du résultat de la requête dans l'ordre
Boucle While Select.Next()
Rapport (Sélection.Nom);
Fin du cycle ;

//Option 2 – téléchargement vers une table de valeurs
Requête = Nouvelle requête("SELECT Nom FROM Directory.Nomenclature");
//récupère le tableau
Tableau = Requête.Run().Unload().
//de plus, nous pouvons également parcourir toutes les lignes
Pour chaque ligne du cycle de table
Rapport (String.Name);
Fin du cycle ;
//ou accéder arbitrairement aux chaînes
Row = Table.Find("Pelle", "Nom");

Une caractéristique importante est que dans le tableau obtenu à partir du résultat de la requête, toutes les colonnes seront strictement typées. Cela signifie qu'en demandant le champ Nom au répertoire Nomenclature, vous recevrez une colonne de type String avec une longueur autorisée ne dépassant pas N caractères.

Tableau sur le formulaire (client gros)

L'utilisateur travaille avec le tableau lorsqu'il est placé sur le formulaire.

Nous avons discuté des principes de base du travail avec des formulaires dans la leçon sur 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 Contrôles. De même, vous pouvez sélectionner Contrôle Formulaire/Insertion dans le menu.

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

Cliquez sur le bouton "..." dans la propriété Données. Pour voir la liste parties tabulaires, vous devez développer la branche Objet.

Lorsque vous sélectionnez la partie tabulaire, 1C lui-même ajoutera des colonnes au tableau du formulaire. Les lignes saisies par l'utilisateur dans un tel tableau seront automatiquement enregistrées avec l'ouvrage/document de référence.

Dans la même propriété Data, vous pouvez saisir un nom arbitraire et sélectionner le type de table de valeurs.

Cela signifie qu'un tableau de valeurs arbitraire a été sélectionné. Il n'ajoutera pas automatiquement de colonnes ni ne sera automatiquement enregistré, mais vous pouvez en faire ce que vous voulez.

En faisant un clic droit sur le tableau, vous pouvez ajouter une colonne. Dans les propriétés d'une colonne, vous pouvez préciser son nom (pour référence dans le code 1C), l'en-tête de la colonne sur le formulaire, le lien avec l'attribut de la partie tabulaire (cette dernière - si ce n'est pas un tableau arbitraire qui est sélectionné, mais un partie tabulaire).

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

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

Dans les propriétés de la barre de commandes, cochez la case Remplissage automatique pour que les boutons du panneau apparaissent automatiquement.

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

Sur sous une forme gérable Ces étapes sont un peu différentes. Si vous devez placer une partie tabulaire sur le formulaire, développez la branche Objet et faites glisser l'une des parties tabulaires vers la gauche. C'est tout!

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

Pour ajouter des colonnes, utilisez le menu contextuel sur cet attribut de formulaire, sélectionnez Ajouter une colonne d'attribut.

Ensuite, faites également glisser le tableau vers la gauche.

Pour qu'un 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.

Télécharger un tableau vers Excel

N'importe quel tableau 1C situé sur le formulaire peut être imprimé ou téléchargé sur Excel.

Pour cela, faites un clic droit sur espace libre dans le tableau et sélectionnez Liste.

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

Des parties tabulaires existent pour de nombreux objets en 1C :

  • Annuaires
  • Documentation
  • Rapports et traitement
  • Plans de comptes
  • Plans de type caractéristique
  • Plans de type calcul
  • Processus et tâches métier

Les parties tabulaires vous permettent de stocker une quantité illimitée d'informations structurées appartenant à un seul objet.

Examinons quelques techniques pour travailler avec des pièces tabulaires.

Comment contourner la partie tabulaire

Pour parcourir la partie table, vous pouvez utiliser une boucle Pour chaque

Pour chaque ligne de la partie tabulaire du cycle

Rapport (attribut String. TabularPart) ;

Fin du cycle ;

A chaque itération dans la variable Doubler la ligne suivante de la section tabulaire est transmise. Les valeurs des détails de la ligne peuvent être obtenues par l'expression Ligne.AttributeName.

Comment obtenir et contourner les lignes sélectionnées de la partie tabulaire

Pour afficher les informations de la partie tabulaire de l'objet, utilisez un élément de formulaire Champ du tableau. Pour activer la possibilité de sélectionner plusieurs lignes dans un champ de table, vous devez définir la valeur Plusieurs dans sa propriété Mode de selection.

Pour obtenir une liste des lignes sélectionnées, utilisez le code suivant :

Une boucle est utilisée pour parcourir les lignes sélectionnées. Pour chaque:

SelectedRows = FormElements. Nom du champ de table. Lignes sélectionnées ;

Pour chaque ligne de la boucle des lignes sélectionnées

//contenu de la boucle

Fin du cycle ;

Comment sélectionner par programme les lignes d'une partie tabulaire (champ de table) et les désélectionner

Pour désélectionner par programme les lignes d'un champ de table :

Éléments de formulaire. Nom du champ de table. Lignes sélectionnées. Clair() ;

Pour sélectionner par programmation toutes les lignes d'un champ de table :

Pour chaque boucle CurrentRow From TabularPart
Éléments de formulaire. Nom du champ de table. Lignes sélectionnées. Ajouter(CurrentRow) ;
Fin du cycle ;

Comment vider la partie table

Partie tabulaire. Clair() ;

Comment obtenir la ligne actuelle d'une section de tableau

La ligne en cours est la période pendant laquelle l'utilisateur a ce moment le curseur est localisé. Pour l'obtenir, vous devez accéder à l'élément de contrôle du formulaire associé à la partie tabulaire.

Pour les formulaires standards, le code ressemblera à ceci :

Éléments de formulaire. Nom du champ de table. Données actuelles;

Pour les formulaires gérés :

Éléments. Nom du champ de table. Données actuelles;

Comment ajouter une nouvelle ligne à une section de tableau

Ajout d'une nouvelle ligne à la fin de la partie tableau :

NouvelleRow = TablePart. Ajouter() ;

Ajout d'une nouvelle ligne n'importe où dans la section tableau (les lignes suivantes seront décalées) :

NouvelleRow = TablePart. Insérer (Index)
//Index - numéro de la ligne ajoutée. La numérotation des lignes commence à zéro.

Nouvelle ligne. Props1 = "Valeur" ;

Comment remplir par programme les détails d'une ligne de tableau

Si vous devez remplir par programme les détails d'une ligne de section de tableau ajoutée par l'utilisateur, vous devez utiliser le gestionnaire d'événements de section de tableau Au démarrage de l'édition.

La procédure créée par le gestionnaire a trois paramètres :

  • Élément- contient un élément de contrôle Champ tabulaire.
  • Nouvelle ligne- booléen. Contient de la valeur Vrai, si une nouvelle ligne de tableau est ajoutée, et Mensonge, si l'utilisateur a commencé à modifier une ligne déjà existante.
  • Copie- booléen. Contient de la valeur Vrai, si l'utilisateur copie la ligne, et Mensonge dans d'autres cas.

Regardons un exemple. Disons que nous devons remplir les détails de la section tabulaire CompteCompte, au cas où une nouvelle ligne serait ajoutée. Lors de l'édition d'une ligne existante, vous n'avez pas besoin de modifier le compte comptable.

Procédure TabularPartAtStartEditing(Element, NewRow, Copy)

//Si l'utilisateur modifie une ligne existante, alors nous ne faisons rien
Si PAS NewRow Alors
Retour;
Fin si ;

//Si la ligne est nouvelle, paramétrer le compte comptable
TechString = Article. Données actuelles; //Récupère la ligne actuelle de la partie tabulaire
TechString. Comptabilité = Plans comptables. Autonome. Compte requis ;
Fin de la procédure




Haut