Contacts

1c charger le tableau des valeurs dans la section tabulaire

Le magasinier doit décharger une liste de tous les éléments qui ne sont pas marqués pour suppression. Champs de téléchargement :

  1. Nom.
  2. Code de fournisseur.
  3. Type de nomenclature.
  4. Type d'élément.

Voici à quoi ressemblera la feuille de calcul Excel après le téléchargement :

Considérons deux façons de résoudre : sans programmation et avec la participation d'un programmeur.

Nous programmons

Pour télécharger un article dans un fichier XLS, nous allons former une requête de base de données pour obtenir l'article et placer le résultat dans partie tabulaire décharger le traitement. Voici le formulaire de traitement :

En cliquant sur le bouton "Remplir", la section tabulaire "Télécharger les données" du traitement est renseignée, pour laquelle les détails correspondants sont ajoutés. Le gestionnaire de ce bouton a les éléments suivants code de programme:

Procédure Exécuter Appuyez sur le bouton (Bouton) Demande = Nouvelle demande ; Demande. Texte = "SELECT | Nomenclature. Référence AS Nomenclature. | Nomenclature. Code de fournisseur, | Nomenclature. Type de nomenclature, | Nomenclature. Vue de la nomenclature. Type de nomenclature Type de nomenclature AS |DE| Annuaire ... Nomenclature AS Nomenclature| O | PAS la nomenclature. Marque de suppression | ET NON la nomenclature. Ce groupe"; DataTable = Query. Execute (). Unload (); UnloadData. Load (DataTable); EndProcedure

Tout doit être clair ici. Le plaisir commence en cliquant sur le bouton "Enregistrer". Tout d'abord, la boîte de dialogue de sélection de chemin est appelée pour enregistrer la table XLS. Ensuite, en utilisant les données de la section tabulaire de traitement, il est rempli feuille de calcul selon la mise en page créée précédemment. La disposition ajoutée au traitement est la suivante :

Procédure Actions du formulaire de base Action (bouton) // Appel de la boîte de dialogue de sélection de fichier pour enregistrer la table XLS Mode = FileSelectDialogueMode. Préservation; Dialogue FileOpen = Nouveau dialogue FileOpen (Mode); Boîte de dialogue d'ouverture de fichier. NomFichierComplet = ""; Boîte de dialogue d'ouverture de fichier. Choix Multiple = Faux ; Texte = "ru = "" Tableau XLS "" ; fr ="" Table XLS "" "; Filtre = НСтр (Texte) +" (*.xls) | *. xls"; FileOpen Dialogue. Filter = Filter; FileOpen Dialogue. Title =" Choisissez un chemin à enregistrer"; Si FileOpen Dialogue. Select () Then FilePath = FileOpenDialog. FullFileName; Sinon Text =" Aucun chemin de sauvegarde sélectionné !"; Avertissement (Texte); Retour; FinSi; // Création d'un tableur SaveTable = New TabularDocument; // Récupère la disposition des zones de remplissage et de disposition Disposition = CetObjet. GetLayout (" Tableau de décharge"); AreaHeat = Layout. GetArea (" En-tête "); AreaRow = Layout. GetArea (" Ligne" ) ; // Exporter les données dans un tableur Tableau de sauvegarde. Affichage (AreaHap); Pour chaque ligne du cycle de téléchargement des données FillPropertyValues ​​(AreaString. Parameters, Rows); Tableau de sauvegarde. Sortie (AreaString); Fin de cycle ; // Enregistrer la feuille de calcul sur le disque Tableau de sauvegarde. Écrire (FilePath, TabularDocumentFileType. XLS); Fin de la procédure

Après l'enregistrement, il y aura un fichier de feuille de calcul Excel sur le disque avec une liste de la nomenclature déchargée. Vous pouvez voir un exemple de fichier au début de l'article.

L'utilisateur peut lui-même

En fait, le sort d'un programmeur n'est pas nécessaire pour une telle tâche. L'utilisateur peut tout faire lui-même sans aucune astuce.

Par exemple, en allant dans la liste des éléments et en exécutant la commande "Toutes les actions" -> "Liste" à partir de la liste d'éléments, l'utilisateur recevra une liste d'éléments dans la feuille de calcul générée.

Une fois le tableur généré en cliquant sur le bouton "Enregistrer" ou via le menu "Fichier-> Enregistrer", l'utilisateur peut écrire le tableur dans un fichier XLS en précisant son nom et son répertoire de destination.

C'est tout! Aucun traitement n'est requis pour le déchargement. Bien sûr, si vous avez un cas assez simple de déchargement de données.

Est-ce si simple ?

En effet, tout est simple, vous n'avez pas besoin de connecter de composants externes. De plus, nous pouvons effectuer le déchargement de cette manière non seulement sur des fichiers au format feuilles de calcul Excel mais aussi d'autres formats supportés par la plateforme.

Vous pouvez gérer l'exemple de l'article télécharger à partir du lien.

Afin de comptabiliser 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 biens.

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

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

La requête, du fait de son exécution, renvoie une table dont l'accès peut être obtenu de deux manières différentes.

La première sélection - la plus rapide -, la récupération des lignes 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 = Requête.Exécuter ().Sélectionner ();
// dans l'ordre, nous parcourons toutes les lignes du résultat de la requête
Pendant l'échantillonnage.Next () Boucle
Rapport (Exemple. Nom) ;
Fin de cycle ;

// Option 2 - déchargement dans une table de valeurs
Demande = Nouvelle demande ("SELECT Name FROM Directory.Nomenclature");
// récupère le tableau
Table = Requête.Exécuter (). Décharger ().
// alors on peut aussi parcourir toutes les lignes
Pour chaque ligne de la boucle de table
Rapport (String.Name);
Fin de cycle ;
// ou accéder arbitrairement aux chaînes
Ligne = Table.Rechercher ("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 du livre de référence Nomenclature, vous recevrez une colonne de type Chaîne avec une longueur autorisée ne dépassant pas N caractères.

Tableau sur 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 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 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 modifiez le formulaire.

Cliquez sur le bouton "..." dans la propriété Données. 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 sur le 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 de valeurs arbitraire a été 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 la colonne sur le formulaire, le lien avec l'attribut section tabulaire (ce dernier - si ce n'est pas une table arbitraire, mais la section tabulaire est choisi).

Dans les propriétés du tableau sur le 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 modifier.

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 commandes.

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é)

Au formulaire géré ces actions semblent un peu 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 devez 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 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é dans Excel.

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

Dans un client (léger) géré actions similaires peut être effectuée à l'aide de l'élément de menu Toutes les actions / Liste d'affichage.

Une table de valeurs est un objet générique spécifique permettant de stocker des données dans une vue tabulaire. La principale différence entre les tables et les objets d'application est qu'ils ne sont pas liés aux tables de base de données physiques. La table de valeurs n'existe que dans mémoire vive, qui, d'une part, offre des opportunités uniques et, d'autre part, impose certaines restrictions. Cependant, la possibilité d'interagir avec une table est comparable à l'interaction avec des objets qui existent réellement dans la base de données.

Historiquement, le tableau des valeurs en 1C a un double objectif, étant un analogue virtuel tableaux existants, mais en même temps - et un contrôle. Avec le passage à une application gérée, la plupart de ces fonctionnalités ont été dépréciées, mais elles peuvent désormais également être un élément d'interface utilisateur, mais avec un certain nombre de limitations importantes.

La structure de la table des valeurs en tant qu'objet

Les propriétés d'une table de valeurs sont définies par des combinaisons de deux collections prédéfinies : ses colonnes et ses lignes.

Tableau des valeurs Colonnes

La colonne du tableau des valeurs est sa propriété déterminante. C'est l'ensemble des colonnes du tableau qui détermine sa structure. Les colonnes correspondent à des champs de tables physiques ou familiers de interface utilisateur colonnes d'une section tabulaire ou d'un journal de documents. Une colonne peut avoir un nom interne, un type de valeur et un titre qui s'affiche lorsque vous interagissez avec la table.

Étant donné que les colonnes sont une collection d'objets, vous pouvez ajouter, supprimer et modifier des colonnes.

Ligne du tableau des valeurs

Du point de vue de l'interface de programmation, les chaînes sont une collection distincte intégrée dans une table de valeurs. Ils sont analogues aux enregistrements des tables physiques, c'est-à-dire aux lignes de la section tabulaire ou du journal des documents qui sont familières à l'utilisateur. Chaque ligne prise séparément est un objet avec un ensemble de propriétés nommées, dont les noms correspondent aux noms des colonnes du tableau.

Ainsi, interagir avec une chaîne est très similaire à interagir avec d'autres objets. Vous pouvez lire et écrire ses propriétés, notamment en utilisant la fonction prédéfinie FillPropertyValues(). Les lignes étant la collection principale du tableau des valeurs, la méthode "Clear ()" est utilisée pour supprimer toutes les lignes du tableau.

Créer une table de valeurs

Il existe de nombreuses façons d'obtenir une table de valeurs prête à l'emploi. Jetons un coup d'œil à certains d'entre eux. Chaque exemple sera fourni sous forme de listes de codes avec des commentaires.

Création d'une table par le designer

La méthode principale qui vous permet de créer une telle table dont le développeur a besoin est, malheureusement, la plus longue, car elle nécessite de spécifier manuellement toutes les propriétés de table nécessaires.

DemoTable = NewValuesTable; // Tout d'abord, nous initialisons le TK // Ensuite, nous définissons paramètres requis pour les nouvelles colonnes et les ajouter à la collection // Créer la colonne "Nomenclature" Name = "Nomenclature"; ValueType = NewDescription des types ("ReferenceLink.Nomenclature"); Titre = "Nomenclature (produit)" ; DemoTable.Columns.Add (Nom, Type de valeur, Titre); // Crée une colonne "Quantité" Name = "Quantity"; ValueType = NewTypeDescription ("Numéro"); DemoTable.Columns.Add (Nom, ValueType); // A la suite de ces manipulations, nous avons créé une table vide avec des colonnes typées // Si vous devez utiliser un typage plus précis des types primitifs, alors vous devez utiliser la syntaxe étendue du constructeur "TypeDescription"

Création d'un tableau par copie

Si vous disposez d'une référence avec une structure et/ou une composition adaptée, vous pouvez copier ou télécharger le tableau des valeurs de référence. Si la référence est une autre table, alors il faut appliquer la méthode "Copier les tables de référence". Si vous avez affaire à partie tabulaire ou par un ensemble d'enregistrements de registre, vous devez utiliser la méthode "Décharger table de valeurs". Si vous n'avez besoin que d'une structure, vous pouvez utiliser la méthode "CopyColumns".

// Option avec copie de toutes les lignes de la norme technique, mais en ne gardant que les deux colonnes spécifiées.Colonnes de la norme = "Nomenclature, Quantité"; DemoTable = TableDefault.Copy (, ColumnDefault); // Option avec copie des lignes présélectionnées du modèle TZ, en conservant les deux colonnes spécifiées. ColumnsStandard = "Nomenclature, Quantité" ; DemoTable = TableDefault.Copy (RowsDefault, ColumnDefault); // Option avec copie des lignes de la norme TZ par le filtre spécifié, tout en conservant une colonne "Nomenclature" // Toutes les lignes où la valeur de la colonne Quantité est 0 seront sélectionnées, seule la colonne Nomenclature sera incluse dans le résultat tableau. , 0); ColumnsStandard = "Nomenclature"; DemoTable = TableDefault.Copy (RowsDefault, ColumnDefault); // Option avec copie complète du tableau et suppression ultérieure d'une ligne avec la valeur du champ de quantité égale à zéro et suppression de toute la colonne "Quantité" Sélection de lignes = Nouvelle structure ("Quantité", 0); ColonnesStandard = "Nomenclature"; DemoTable = TableDefault.Copy (RowsDefault, ColumnDefault); TableRow = DemoTable.Find (0, "Quantité"); DemoTable.Delete (TableRow); DemoTable.Columns.Remove ("Quantité"); // Des options similaires et leurs modifications peuvent être appliquées aux sections de table et aux jeux d'enregistrements de registre

Créer une table avec une requête

Si la base de données contient un modèle pour la table dont vous avez besoin, vous pouvez utiliser une requête pour créer rapidement une table avec la structure souhaitée.

// Exemple avec création table vide basé sur la structure du registre d'accumulation // Il est facile de deviner que de cette manière vous pouvez obtenir la table remplie Query = New Query ("SELECT THE FIRST 0 * From Accumulation Register.Products inStore"); QueryResult = Query.Run (); DemoTable = QueryResult.Upload (); // Un exemple de création d'une table vide pour les types et noms de champs explicitement spécifiés Query = New Query; Query.Text = "SELECT FIRST 0 | Value (Directory.Nomenclature.EmptyLink) AS Nomenclature, | EXPRESS (0 AS NUMBER (15, 3)) AS Quantity" ; QueryResult = Query.Run (); DemoTable = QueryResult.Upload (); // IMPORTANT! N'oubliez pas que les types de valeurs de colonnes obtenues à partir d'une requête contiennent toujours le type Null // Ainsi, le TOR créé par une requête a toujours des types de colonnes composites

Conclusion

Dans ce court article, nous avons couvert les propriétés de base et les meilleures pratiques pour créer une table de valeurs, suffisamment pour vous aider à démarrer et à comprendre. L'objet table de valeurs lui-même est si polyvalent que Description détaillée ses capacités nécessitent la rédaction d'un article séparé sur les techniques et les méthodes de travail.



Vous avez aimé l'article ? Partagez-le