Maison / Skype / 1c 8.3 partie tabulaire du document en exemples. Remplir la partie tabulaire du document

1c 8.3 partie tabulaire du document en exemples. Remplir la partie tabulaire du document

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 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 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 une table arbitraire est sélectionnée, mais 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 un 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.

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

  • Livres de référence
  • Les documents
  • 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 tout le monde

Pour chaque ligne de la boucle TabularPart

Report(String.TablePartAttribute) ;

FinCycle ;

A chaque itération dans une variable Ligne 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 tout le monde:

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. Dégager() ;

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

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

Comment effacer la feuille de calcul

TabularPart. Dégager() ;

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 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 Mentir, 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 Mentir 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
Revenir;
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

Dans le cadre de cet article, nous allons écrire le traitement de remplissage de la partie tabulaire en 1C 8.3 pour une configuration type 1C : ERP 2.1. Supposons que l'objectif de la tâche soit de définir une remise manuelle de 5 % pour tous les articles du produit ce document. Un exemple de l'article peut être téléchargé par ou un autre traitement similaire par .

Cette instruction conçu pour les formulaires gérés (8.2 et 8.3). Pour les formulaires réguliers (8.1, 8.2), vous pouvez utiliser .

Créez et enregistrez un nouveau traitement sur votre ordinateur. Vous devez d'abord effectuer certaines étapes d'enregistrement.

Ouvrez le module objet et écrivez le code ci-dessous (il peut aussi être tiré du traitement donné ci-dessus). En général, la structure ne changera pas en fonction de la situation. Seuls certains paramètres de réglage sont édités, ainsi que, si nécessaire, les noms des variables.

Dans le cadre de cet article, nous ne nous attarderons pas sur l'inscription en détail. traitement externe et formulaires imprimés au 1C. Toutes ces informations sont dans nos autres articles.

Remplir la partie tabulaire du document

créons nouvelle forme En traitement.

Nous devons maintenant ajouter une nouvelle commande sur le formulaire créé. On suppose qu'il modifiera automatiquement les données dans la partie tabulaire d'un et de plusieurs documents (leurs formes de liste) en même temps, en les écrivant plus tard.

Dans le cadre de notre exemple, la partie tabulaire déjà existante "Produits" sera traitée. Une remise manuelle de 5% sera fixée pour chaque ligne. De plus, nous calculerons le montant de cette remise, égal à la somme des marchandises de la ligne, multipliée par 0,05.

&Sur la procédure serveur Exécuter la commande (commande, objets de destination) Pour chaque commande client à partir des objets de destination Boucle Objet de commande client = Commande client. GetObject() ; Pour chaque ligne TK de CustomerOrderObject. Chaîne de cycle de marchandises TZ. PercentManualDiscount = 5 ; Chaîne TZ. Montant de remise manuelle = Chaîne TK. Montant * 0 . 05 ; FinCycle ; OrderCustomerObject. Écrire() ; FinCycle ; FinProcédure

Enregistrement du traitement externe

Exécutez 1C en mode "Entreprise" et ouvrez le répertoire " Rapports supplémentaires et le traitement." Trouvez-le via le menu "Toutes les fonctions".

Créer nouvel élément dans le répertoire qui s'ouvre et en cliquant sur le bouton du même nom, chargez votre traitement depuis le fichier. Plaçons-le simultanément à la fois sur le formulaire de liste et sur le formulaire de la fiche de document elle-même.

Maintenant, sous la forme de la liste des documents "Commande client", le bouton "Remplir ..." apparaîtra, ce qui vous permettra de modifier les remises manuelles des marchandises pour plusieurs documents à la fois.

De plus, ce bouton sera disponible dans la fiche du document lui-même.