Maison / Réseaux sociaux / Accès à la partie tabulaire 1s 8. Comment récupérer les données de la partie tabulaire des documents ? Comment obtenir et contourner les lignes sélectionnées de la section tabulaire

Accès à la partie tabulaire 1s 8. Comment récupérer les données de la partie tabulaire des documents ? Comment obtenir et contourner les lignes sélectionnées de la section tabulaire

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

  • Livres de référence
  • Documentation
  • Rapports et traitement
  • Plans de comptes
  • Plans de types de caractéristiques
  • Plans de type de calcul
  • Processus et tâches d'entreprise

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

Examinons quelques méthodes de travail avec des parties tabulaires.

Comment contourner la partie tabulaire

Vous pouvez utiliser une boucle pour parcourir la partie tabulaire Pour chaque

Pour chaque ligne de la boucle TabularPart

Report(String.TablePartAttribute) ;

FinCycle ;

A chaque itération dans une variable Doubler la ligne suivante de la partie tabulaire est transférée. Les valeurs d'attribut de chaîne peuvent être obtenues par l'expression String.AttributeName.

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

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

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

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

SelectedLines = FormElements. TableFieldName. Lignes sélectionnées ;

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

//contenu de la boucle

FinCycle ;

Comment sélectionner par programme les lignes de la partie tabulaire (champ de table) et supprimer la sélection

Pour désélectionner par programmation des lignes dans un champ de table :

ElementsForm. TableFieldName. Chaînes sélectionnées. Clair() ;

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

Pour chaque boucle CurrentRow From TabularPart
ElementsForm. TableFieldName. Lignes sélectionnées. Add(CurrentRow) ;
FinCycle ;

Comment effacer la feuille de calcul

TabularPart. Clair() ;

Comment obtenir la ligne actuelle d'une section tabulaire

La ligne actuelle est la période pendant laquelle l'utilisateur a ce moment le curseur se trouve. Pour l'obtenir, vous devez vous référer au contrôle du formulaire, qui est associé à la partie tabulaire.

Pour les formulaires normaux, le code ressemblerait à ceci :

ElementsForm. TableFieldName. Données actuelles;

Pour les formulaires gérés :

Éléments. TableFieldName. Données actuelles;

Comment ajouter une nouvelle ligne à une feuille de calcul

Ajout d'une nouvelle ligne à la fin de la section tabulaire :

NouvelleLigne = TablePart. Ajouter() ;

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

NouvelleLigne = TablePart. Coller (Index)
//Index - le numéro de la ligne ajoutée. La numérotation des lignes commence à zéro.

Nouvelle ligne. Attribut1 = "Valeur" ;

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

Si vous devez remplir par programme les détails de la ligne de la section tabulaire que l'utilisateur ajoute, vous devez utiliser le gestionnaire d'événements de la section tabulaire AtStartEditing.

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

  • Élément- contient un contrôle TableField.
  • Nouvelle ligne- booléen. Contient une valeur Vrai si ajouté nouvelle ligne section tabulaire, et Mensonge, si l'utilisateur a commencé à modifier une ligne déjà existante.
  • copier- booléen. Contient une valeur Vrai si l'utilisateur copie la chaîne, et Mensonge dans d'autres cas.

Prenons un exemple. Disons que nous devons remplir les détails de la section tabulaire CompteCompte, dans le cas où une nouvelle ligne est ajoutée. Lors de la modification d'une ligne existante, vous n'avez pas besoin de modifier le compte général.

Procédure TabularPartAt EditingStart(Element, NewRow, Copy)

//Si l'utilisateur modifie une ligne existante, alors ne rien faire
Si PAS NewString alors
Retour;
Fin si ;

//Si la chaîne est nouvelle, définissez le compte
TextString = élément. Données actuelles; //Reçu la ligne actuelle de la section tabulaire
TekString. AccountAccount = Plans de comptes. Autoportant. Compte souhaité ;
FinProcédure

Afin de prendre en compte l'argent et les biens, différents tableaux sont largement utilisés dans les affaires. Presque chaque document est un tableau.

Un tableau répertorie les marchandises à expédier depuis l'entrepôt. Dans un autre tableau - l'obligation de payer pour ces marchandises.

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

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

La requête renvoie une table à la suite de son exécution, 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 à 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 le tableau
Sélection = Query.Execute().Select();
// contourne toutes les lignes du résultat de la requête dans l'ordre
Pendant que la boucle Selection.Next()
Report(Selection.Name);
FinCycle ;

//Option 2 - chargement dans le tableau des valeurs
Query = New Query("SELECT Name FROM Directory.Nomenclature");
// récupère le tableau
Table = Query.Execute().Upload().
// alors nous pouvons aussi contourner toutes les lignes
Pour chaque ligne de la boucle de table
Report(String.Name);
FinCycle ;
//ou accéder arbitrairement aux chaînes
String = Table.Find("Pelle", "Nom");

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 de la recherche Nomenclature, vous recevrez une colonne de type Chaîne avec une longueur autorisée ne dépassant pas N caractères.

Tableau sur le formulaire (client lourd)

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

Nous avons discuté des principes de base du travail avec les 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 de configuration. De même, vous pouvez sélectionner le contrôle Form/Insert dans le menu.

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

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

Lors du choix d'une partie tabulaire, 1C lui-même ajoutera des colonnes au tableau sur le formulaire. Les chaînes saisies par l'utilisateur dans une telle table seront automatiquement enregistrées avec le répertoire/document.

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

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

En faisant un clic droit sur le tableau, vous pouvez ajouter une colonne. Dans les propriétés de la colonne, vous pouvez spécifier son nom (pour référence dans le code 1C), l'en-tête de colonne sur le formulaire, la connexion avec l'attribut de la partie tabulaire (cette dernière - sinon un tableau arbitraire est sélectionné, mais une 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 ViewOnly. Ces propriétés sont utiles pour organiser des tables destinées à afficher des informations, mais pas à éditer.

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

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

Tableau sur formulaire (client léger/managé)

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

Si vous devez placer un tableau de valeurs, ajoutez nouveaux accessoires formulaire et dans ses propriétés spécifier le type - une table de valeurs.

Pour ajouter des colonnes, utilisez le menu du bouton droit de la souris sur cet attribut de formulaire, élément Ajouter une colonne d'attribut.

Ensuite, faites é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 cela, faites un clic droit sur espace libre dans le tableau et sélectionnez Afficher la 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.

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

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

Par exemple, considérez une situation où vous souhaitez obtenir tous les articles en stock spécifiés dans la section tabulaire Marchandises documents Réalisation de Biens et Services.

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

CHOOSE DIFFERENT Realisation of Goods of Services Goods.Nomenclature AS Nomenclature FROM Document. Realisation of Goods of Services. Goods AS Realisation of Goods of Services Goods

En tant que source, nous indiquons la partie tabulaire des documents - le tableau Document.Vente de biensServices.Biens. Déclarer un champ comme champ de sortie Nomenclature A qui fait partie de la table source. De plus, étant donné que le même article de base, bien sûr, pourrait être présent plus d'une fois dans les documents, nous appliquons DIVERS pour obtenir uniquement des lignes distinctes dans la table de sortie de la requête.

Par exemple, créons un traitement Liste de produits où le document est sélectionné Réalisation 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 de la nomenclature uniquement à la nomenclature de la section tabulaire d'un document spécifique, nous utilisons le paramètre Lien dans l'état de la demande ( OÙ...):

SELECT DIFFERENT Réalisation de Biens de Services Biens. Nomenclature AS Nomenclature FROM Document. Réalisation de Biens de Services. Biens AS Réalisation de Biens de Services Biens WHERE Réalisation de Biens de Services Biens. Link = & Link