La cloche.

Il y a ceux qui ont lu cette nouvelle devant vous.
Abonnez-vous pour recevoir des articles frais.
E-mail
Nom
Nom de famille
Comment voulez-vous lire la cloche
Sans spam

Salutations Tous les lecteurs Infostart'A. Cet article sera consacré à la question de la création d'une table de valeurs arbitraires sur la forme d'une application gérée. logiciel.

Caractéristiques de la tâche.

Tous ceux qui programmés dans l'annexe habituelle sont souvent confrontés à la tâche d'obtenir une table de valeurs arbitraires sur la forme. Sous une table de valeurs arbitraires est comprise comme la table, le nombre et le type de colonnes dont on ne sait pas. C'est-à-dire que les colonnes peuvent être 3, et peut-être 6, ou peut-être 8. Dans l'application habituelle, tout est simple: il était possible de placer l'élément "Appoint de table" sur le formulaire de formation, puis transférer la table de valeur à la valeurs à cet élément à cet élément. Puis une simple équipe:

Elementforms. Ticket.

recevoir table finie Valeurs sur le formulaire. Il semblerait que cela soit plus facile.

Tout était dans l'application habituelle. Dans la demande gérée, tout a changé. Donc, simplement une table arbitraire à ne pas créer. Vous devez maintenant définir de manière rigide la table des valeurs sur le formulaire ou la créer de manière programmatique (décrire, bien, en cela, l'essence de l'application autorisée elle-même). Nous allons essayer de faire: logiciel Créez une table de valeurs arbitraires sur une forme gérée.

La solution du problème.

La première chose à faire est de déterminer comment le tableau apparaît sur le formulaire. L'essentiel est qu'aucun élément de la forme dans le traitement n'est nécessaire. Nous allons le créer par programme, comme la table entière. C'est-à-dire que la table sera décrite et créer au moment de l'ouverture du formulaire ou de l'utilisation du bouton - voici comment il est nécessaire.

La création d'une table sur le formulaire se produit via la description de la table des valeurs comme réquisition:
MASTIFERBOABOR \u003d Nouveau tableau; Client massif. Abattement (type ("apposition de table")); DescriptionCarebar \u003d nouvelles descriptions (massifacivité); Massifs \u003d nouveau tableau; Massifs. Audlux (nouveau requis ("TableScript", descriptions, "", "TZN")); Nous devons maintenant créer une table logicielle de valeurs contenant des données. Si la table de valeur est obtenue à partir de la demande, tout est inférieur à la commande. Si la table est créée manuellement, la valeur des haut-parleurs contenant des chiffres ou des dates peut être créée via la "description". La ligne finale est que les colonnes de la table des valeurs doivent avoir une sorte de type. Si, par exemple, il est supposé que l'utilisateur remplira les données dans ces colonnes de manière interactive, vous ne pouvez pas ajouter les valeurs de la colonne Valeurs simplement avec le nom, il devrait être de type. Garder à l'esprit - c'est très important parce que Nous allons donner ces types à la table sur le formulaire.
Créez une table contenant plusieurs colonnes:
KD \u003d nouvelles dates qualificatoires (particules. Veria); MASSIGS \u003d nouveau tableau; Bras. Abattement (type ("date")); Recherche graphiques \u003d nouvelles descriptions (bras, CD); Tk \u003d nouvelles tables;
Tk.colonki. Suite ("c", descriptions.
Tk.colonks. Suite ("à", descriptions.
Tk.colonki. Suite ("nom complet");
Tk. Solonks. Shavly ("Note"); // Note complète - Ensuite, nous remplirons notre table de logiciel TK avec les données nécessaires. Nous obtenons la table TK contenant les valeurs nécessaires et est prête pour la transmission aux accessoires créés de la forme. Pour chaque colonne de TK. Cycle de colonne

Massiverevizites. Advidité (nouvelle requise (colonne. Je veux dire, colonne. Type, "TaxeCripts"));
Endyclycle;
Changères (massivevizites);
Captivité de la table de table \u003d éléments. Audlux ("TZN", type ("Tableform"));
Capture de table de table. Paysd \u003d "TaxeCripts";
TablePolaiseBoat. Exemple \u003d affiché. Évolution;

Voici une combinaison aussi simple et notre table est prête.

Pour chaque colonne de TK. Cycle de colonne

NEWELENT \u003d ÉLÉMENTS. SUPPLY (colonne. Je veux dire, tapez ("anneform"), tableps);
Nouvel élément. Vid \u003d formulaire vidpolaire. Puissance;
Nouvel élément. Powdly \u003d "TaxeCripts". + Colonne.
Nouvel élément.shirina \u003d 10;
Endyclycle;

Conception conditionnelle, si nous avons besoin, nous écrivons également manuellement, menu de commande - manuellement. Les gestionnaires de table sont également écrits avec les mains. Par exemple, pour ajouter une "sélection" de gestionnaire d'événements:

Capture de table de table. Réglage ("choix", "tznvybor");

Pour traiter cet événement, une procédure distincte est prescrite sous la forme de la procédure:

& Svalette
Procédure TZNVSB (TK, Sélectionné, Champ, Travelage Standard)
// Commandes de processeur Commandes finales

Veuillez noter que les gestionnaires de table sont déclenchés sur le client et doivent donc avoir une commande de pointeur de compilateur.

& Svalette

Eh bien, et la dernière chose que je voulais ajouter qu'après toutes ces actions, nous n'oublions sans aucun doute de transférer la table finie dans la demande du formulaire:

RéclamerReReVisitforms (TK, "TAXCRIPTS");

Voici ce que nous avons à la suite:


Mais le traitement de l'événement "choix":



Épilogue.

J'espère que l'article aidera ces programmeurs 1c, qui commencent à créer des tables sur la forme de la méthode programmatique.

Vous pouvez télécharger le traitement que le logiciel crée une table de valeurs et affiche un formulaire géré avec des commentaires qui vous aideront à créer vos propres tables.

Publié le 21 septembre 2011

Tableau 1C Valeurs - 3 partie. Métadonnées. Chrages colonnes valeurs de table

Dans cet article, je vous dirai comment travailler avec la table des valeurs "inconnues" de la structure, comment trier les haut-parleurs des valeurs des valeurs, comment extraire les données des colonnes et des lignes sans en utilisant les noms de colonne. (Cet article fait référence aux articles 1C de zéro; programmation 1C de zéro; valeurs de table 1c)

Pour expliquer le matériel et afin que vous puissiez exécuter nos exemples du code de programme "LIVE", nous avons besoin d'une sorte valeurs de table de test 1C. Certains de nos exemples extraire des données de la table des valeurs. Nous ferons donc une table avec trois colonnes "nom de famille", "nom", "patronymique" et faire une petite quantité de données dedans - déjà 3 lignes :)

Donc, créons une table de test des valeurs 1C et remplissez-la:

Washt \u003d nouvelles tables; // Créer nouvelle table Les valeurs stockées dans la "variable de washtz" lavage. Découpes. Audlux // Créez un "nom de famille" colonne "mytz.colonks. Suite (" nom "); // Créez une colonne "Nom" de lavage. Couper. Ajouter ("patronymique"); // Créer une colonne "patronymique". Newstock.familia \u003d "chapaev"; Newstock. Je veux dire \u003d "Vasily"; Newstock. Delicat \u003d "Ivanovich"; // ajoutez la deuxième ligne du journal \u003d washt. Ajouter (); Newstock.familia \u003d "Dzerzhinsky"; Newstock. Je veux dire \u003d "felix"; Newstock. Deliciacy \u003d "Edmundovich"; // ajoutez la troisième ligne de la nouvelle rue \u003d washt. Ajouter (); Newstock.familia \u003d "kotovsky"; Newstock. Je veux dire \u003d "grigory"; Newstock. Delicat \u003d "Ivanovich";

Notre table d'essai se compose de trois colonnes: nom, nom de famille, patronymique; Et a trois lignes remplies avec les noms des héros de la guerre civile.

Le premier code exemple consiste à casser les colonnes du tableau des valeurs 1C en tant que collection.

// Dit le nom de toutes les colonnes du TK pour chaque colonne de lavage. Endyclycle;

Notre cycle affiche les messages 1C dans la fenêtre de message tous les noms des colonnes:

Nom de la colonne: Nom de famille Nom de la colonne: Nom Nom de la colonne: Patronyme

Nous voyons qu'un cycle spécial d'une collection d'une collection similaire au cycle d'arrêt des chaînes (dernier article) est utilisé pour énumérer les colonnes. Washtz. Solonki. - Ceci est une collection de colonnes de la table des valeurs 1C "Washtz". La collection contient des objets tels que "Colonckotable" Chaque objet de ce type est une colonne d'une table de valeurs et contient des propriétés et des méthodes. En passant à ces propriétés et à ces méthodes, nous obtenons les informations nécessaires sur une colonne ou produisons d'autres actions avec elle.

Par exemple, faire référence à la propriété "Nom" (Colonne) Nous recevons le nom de la colonne actuelle.

Je tiens à attirer votre attention sur l'en-tête du cycle: "Pour chaque Colonne Du lavage. Cycle de découpe "Variable nommée "Colonne" Inventé par nous. Utilisez éventuellement le même nom. Vous pouvez appeler cette variable comme vous le souhaitez, par exemple "Matheccling" Ensuite, l'exemple ci-dessus ressemblera à ceci:

// Nous dérivons les noms de toutes les colonnes de la TK pour chaque lavage Whirlpool de lavage. Colonne. Endyclycle;

Lorsque le sous-système exécutant 1C rencontre le cycle de ce type, il attribue une variable avec chaque passage de cycle nom spécifié Un élément de notre collection, dans ce cas - une collection d'un élément Valeurs de la table de colonnes Washtz. Solonki. Et puis nous appelons la variable contenant la colonne actuelle et utilisez la propriété. "Nom".

Je propose à côté du nom de la colonne pour retirer également le numéro de chaque colonne de la collection de colonnes:

// indique le numéro et les noms de toutes les colonnes de la table des valeurs pour chaque colonne de lavage. Poupées de cycle cool \u003d washtz. Solonki.index (colonne); // Obtenir la colonne Numéro Numbercionics \u003d Colonne. // Obtenir le nom de la colonne pour informer ("Numéro de l'enceinte:" + sondages + "Nom de la colonne:" + namecolonnames); Endyclycle;

Le texte suivant sera affiché dans la fenêtre de message 1C:

Numéro de colonne: 0 Nom de l'enceinte: Nom de famille Haut-parleurs: 1 Nom de la colonne: Nom Numéro de colonne: 2 Nom de la colonne: Patronyme

Nous notons que les colonnes de la table de valeurs 1C sont numérotées à partir de zéro, ainsi que les lignes de table de valeurs.

Le nombre de colonnes dans le tableau des valeurs 1C

Pour connaître le nombre de colonnes dans la table des valeurs, nous utilisons la méthode "Quantité ()" de la collection de colonnes.

Automatiqueolone \u003d lavage. Horloges fraîches. Nombre (); Rapport (sommateurs);

Le chiffre "3" sera affiché à l'écran. En effet, dans notre tableau trois colonnes: "Nom", "Nom", "Patronyme"

Obtention d'un objet - colonne à son numéro (index) et colonnes de force brute à l'aide de l'index de la colonne

Nous effectuerons un cycle de sur toutes les colonnes de la table des valeurs à l'aide des index de colonne (numéros). N'oubliez pas que la numérotation des colonnes commence par zéro. Par conséquent, le compteur de cycle SC Nous devons augmenter de zéro à un nombre égal au nombre de colonnes moins une.

Pour sch \u003d 0 pour wasytz. Solonki. Nombre () - 1 cycle de la colonne fluide \u003d washtz. Solonks [SC]; Rapport (colonne fluide. Endyclycle;

Sur l'écran, nous obtiendrons ce qui suit

Nom et prénom

Je pense que cet exemple était compréhensible. Nous avons tourné vers la méthode Nombre() Collections de colonnes " Washtz. Solonki. Nombre ()", a reçu le nombre de colonnes et a lancé un cycle avec un mètre de zéro avant que nombre de colonnes moins une. À l'intérieur du cycle, nous obtenons chaque colonne de la collection de colonnes et attribuons l'objet de colonne actuel à la variable. Col colvant Suivant, variable Col colvant Nous faisons appel à la propriété Nom et afficher la valeur de cette propriété à l'écran: Rapport (colonne fluide.

Il est important de ne jamais confondre la propriété d'objet et la méthode d'objet.

La propriété est une certaine valeur statique et un attrait à celui-ci est écrit sans crochets, par exemple Col colvank.imp. Et la méthode est essentiellement la procédure ou la fonction de l'objet, et les défis des procédures et des fonctions sont toujours écrits avec des crochets (même s'il n'y a pas de paramètres d'entrée). Par example: Washtz. Solonki. Nombre ()

Si nous passons à la méthode, oubliez d'écrire des crochets - Interprète 1c nous donnera un message d'erreur et ne démarrera pas le code d'exécution. Étant donné que l'interprète supposera que nous ne faisons pas appel à la méthode, mais à la propriété - car il n'y a pas de crochets. Et les propriétés avec ce nom ne seront pas trouvées (car il n'y a qu'une méthode avec ce nom) - comme cela sera indiqué dans un message d'erreur.

C'est ce que l'interprète écrit si j'oublie les crochets en appelant la méthode de manière aussi incorrecte Washtz. Solonki.Golisme (Sans parenthèses après "Quantité ()"):

Le champ de l'objet n'est pas détecté (numéro)

Dans ce cas, le "champ" et "propriété" doivent être compris comme synonymes ou l'inexactitude de la terminologie des développeurs 1C. Ils utilisent ces deux mots pour désigner le même concept. Bien que dans d'autres langages de programmation, ces termes peuvent signifier différents concepts.

Obtenir des données de la table de valeurs 1C à l'aide des numéros de haut-parleurs

Je vous suggère, pour un démarrage, un exemple simple d'obtenir des données de la première ligne de notre table. Veuillez noter que nous utilisons une table prédéfinie du début de l'article. Nous savons certainement que la table est la première ligne, et il y a au moins une colonne. Si nous appliquons cet exemple à une table vide, une erreur se produira. Donc:

Le lave-feu \u003d lavage; // nous obtenons la première ligne (numérotation de zéro) de la valeur de VicCountion \u003d le premier homme; // Nous obtenons la valeur de la première colonne (la numérotation des colonnes est également de zéro) à signaler (valeur-comté); // affiche la valeur de la première colonne de la première rangée de la table

L'écran sera affiché:

Chapaev

Au début, nous avons reçu l'objet de ligne d'objet des valeurs, en contactant la table des valeurs à l'aide de l'opérateur [...]. (Si vous avez oublié comment cela se fait, vous pouvez voir des articles précédents) à l'intérieur de l'opérateur, nous avons passé l'argument "0". Ceci est l'index de la première ligne de la table des valeurs. Le lave-feu \u003d lavage;

En outre, nous avons également le droit de postuler à l'objet Line avec l'aide de l'opérateur [...]. À l'intérieur de ces opérateurs, nous avons transmis le numéro de la colonne Valeurs, dans ce cas aussi, "0". Et ainsi, nous avons eu la valeur de la colonne avec le numéro "0" pour la ligne actuelle de la table au numéro "0". Cette valeur que nous avons affichée à l'écran et c'est la chaîne "Chapaev".

Un peu compliquer notre exemple:

Le lave-feu \u003d lavage; // Nous obtenons la première ligne (numérotation à partir de zéro) pour informer (premier ASTA); // affiche la valeur de la première colonne de la première ligne de la table à signaler (le premier aestrum); // affiche la valeur de la deuxième colonne de la première ligne de la table pour informer (le premier aestrum); // affiche la valeur de la troisième colonne de la première rangée de la table

Nous avons maintenant affiché des valeurs des trois colonnes de la première ligne de notre table de valeurs:

Chapaev Vasily Ivanovich

Maintenant, je modifie toujours cet exemple à faire sans variable "Première ligne"

Rapport (lavage); // affiche la valeur de la première colonne de la première ligne du tableau à signaler (lavage); // affiche la valeur de la deuxième colonne de la première ligne du tableau de la table (WASHTZ); // affiche la valeur de la troisième colonne de la première rangée de la table

À l'écran aussi

Chapaev Vasily Ivanovich

Nous avons vu dans l'exemple ci-dessus que pour faire appel à la valeur d'une ligne spécifique et une colonne de valeurs spécifique, nous pouvons utiliser l'appel séquentiel de deux opérateurs [...] dans ce formulaire: Évaluations [évaluations] [indexation]

Nous sommes donc prêts à créer un cycle d'extinction et d'obtention de données pour toutes les lignes et toutes les colonnes à l'aide des indices de lignes et de colonnes:

Pour un comptoir \u003d 0 pour le lavage. Nalité () - 1 cycle // cycle de l'étançage des cordes pour contre-colonon \u003d 0 pour les déchets. Sumps. Nalité () - 1 cycle // a investi Cycle de colonnes // Obtenir la valeur de la cellule ( de la ligne actuelle et des colonnes actuelles) Valeur Magnitude \u003d WASHTZ [CONTROM] [COMMANDSCOCKS]; // affiche le numéro de ligne, le numéro de l'enceinte et la valeur de la cellule de la cellule ("Numéro de ligne" + compteur + "N ° de colonne" + colonne + "\u003d" + valeur); Endyclycle; Endyclycle;

L'écran sera affiché comme suit:

Rangée n ° 10 N ° de colonne 0 \u003d Chapav Row # 10 Colonne n ° 1 \u003d rangée Vasily # 0 Colonne n ° 2 \u003d Ivanovich String n ° 1 Colonne n ° 0 \u003d Dzerzhinsky Row No. 1 Colonne n ° 1 \u003d Felix String No. 1 Colonne N ° 2 \u003d Edmundovich String No. 2 2 Colonne N ° 0 \u003d Kotovsky Row No. 2 Colonne N ° 1 \u003d Gregory Row # 2 Colonne N ° 2 \u003d Ivanovich

En utilisant deux cycles, dont l'une est investie dans une autre, nous avons apporté les valeurs de toutes les colonnes de toutes les lignes du tableau des valeurs 1C. Dans le même temps, nous n'avons pas utilisé les noms des colonnes et renvoyé aux colonnes et lignes de leurs index. Pour une plus grande compréhension, faites attention aux commentaires à l'intérieur de l'exemple.

Je suggère, en conclusion, un peu change notre exemple afin de prendre le nom de leur nom au lieu des numéros de haut-parleurs. Et fera en outre une conception plus présentable du contenu du contenu à l'écran.

Pour un comptoir \u003d 0 pour le lavage. Nombre de () - 1 cycle // Le cycle d'arrêt du rapport de chaînes ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Numéro de ligne" + compteur + "\u003d\u003d\u003d\u003d\u003d\u003d\u003d"); Signaler(" "); // Traduction de la chaîne (insertion d'une chaîne vide) pour les contre-colonesks \u003d 0 pour washingtz. Boucts. Nalité () - 1 cycle // cycle investi des colonnes de tri // Nous obtenons la valeur de la cellule (de la ligne actuelle et la colonne actuelle) de la valeur de la valeur \u003d washtz [compteur] [contre-colonie); // Nous obtenons le nom des colonnes de noms \u003d WASHTZ. Solonks [CounterColonchikov]. // Affiche le nom de la colonne et la valeur de la cellule pour informer (nom-collecte de nom + ":" + valeur); Endyclycle; Signaler(" "); // Traduction de la chaîne (insertion d'une chaîne vide) de l'endackel;

Maintenant, sur notre écran, les informations ont commencé à regarder plus représentatif:

Numéro de rangée 0 \u003d\u003d\u003d\u003d\u003d\u003d\u003d Nom de famille: Chapaev Nom: Vasily Patronyma: Ivanovich \u003d\u003d\u003d\u003d\u003d\u003d\u003d Line n ° 1 \u003d\u003d\u003d\u003d\u003d\u003d\u003d Nom de famille: Dzerzhinsky Nom: Felix Patronyme: Edmundovich \u003d\u003d\u003d\u003d\u003d \u003d\u003d Numéro de rangée 2 \u003d\u003d\u003d\u003d\u003d\u003d\u003d Nom de famille: Cottovsky Nom: Grigory Patronymique: Ivanovich

Oui, j'ai presque oublié. Lorsque vous utilisez dans une rangée, deux opérateurs [...] [...], nous pouvons au lieu de l'index de la colonne pour transmettre le nom de cette colonne: Évaluations [Évaluation] [Namecolonname]

Pour un comptoir \u003d 0 pour le lavage. Nombre de () - 1 cycle // Le cycle d'arrêt du rapport de chaînes ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Numéro de ligne" + compteur + "\u003d\u003d\u003d\u003d\u003d\u003d\u003d"); Signaler(" "); // Traduction de la chaîne (insertion d'une chaîne vide) pour les contre-cololons \u003d 0 pour Washingtz. Solonki. NALLY () - 1 cycle // cycle investi de l'interdiction des colonnes de collecte de noms \u003d washtz. Coolclocks [contrecalonok]. // Nous obtenons le nom du modèle de la valeur de la magnitude \u003d WASHTZ [CONTROM] [NAMECOLON NAME]; //

Remarque sur la chaîne marquée par la flèche. "Dans cette ligne, nous transmettons le nom de la colonne en cours dans l'argument de cette ligne. crochets [...] Le résultat sera le même.

Et maintenant, le dernier dans cet article.

Réception correcte de toutes les valeurs de table de données 1C, à l'aide des cycles de la collecte de la collection de lignes et de colonnes

Pour chaque courant hors du cycle de lavage // le cycle de buse de la collection de chaînes à signaler ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Verrouiller numéro" + "Cindex (circuit) +" \u003d\u003d\u003d\u003d\u003d\u003d\u003d "); Signaler(" "); Pour chaque colonne fluide de wooat. Cool Cycle // Cycle d'investissement de la collecte de buse de colonne NamessCionics \u003d colonne fluide. // Nous obtenons le nom de la colonne Valeur \u003d actuel [Namecolonname]; // obtenir la valeur de la cellule par le nom de la colonne pour informer (Namecolionics + ":" + validation); // affiche le nom de la colonne et la valeur de la cellule de pont; Signaler(" "); Endyclycle;

Dans l'exemple, deux cycles ont été utilisés. Le cycle animé de la collection de colonnes est inséré à l'intérieur du cycle animé des rangées. Si vous êtes désassemblé avec des exemples ci-dessus et lisez les articles précédents, vous n'avez pas de difficulté à comprendre le travail de cet exemple.

Enfin, je minimiserai le nombre de lignes du code de notre dernier exemple en éliminant l'utilisation de variables intermédiaires. Nous obtiendrons un échantillon de «code industriel», qui est utilisé dans de vraies tâches.

Cela ne devrait être fait que lorsque vous comprenez ce que vous faites. Si le code est très compliqué, il est permis de laisser des variables intermédiaires pour faciliter la compréhension de votre propre code par la suite. En outre, tout code doit être au moins quelque chose de commentaire de manière à ce que, après un certain temps, il était plus facile de gérer les textes du programme.

Pour chaque courant du cycle de lavage // Rapport de commutation Strings ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Numéro de verrouillage" + "Hytz.index (courant) +" \u003d\u003d\u003d\u003d\u003d\u003d\u003d "+ symboles. PS); Pour chaque colonne fluide de WASYTZ. COYAL COOL // Bustiez les colonnes pour informer (colonne fluide. Ince + ":" + circuit [colonne de courant. Endyclycle; Signaler(" "); Endyclycle;

La sortie à l'écran n'a pas changé, est restée la même que dans le dernier exemple:

Cours de 2 semaines

"Programmation en 1C pour les débutants"

Le cours viendra e-mail. Devenir programmeur, effectuant des tâches étape par étape.

Pour participer uniquement à l'ordinateur et à Internet

Accès gratuit de parcours:

SP-Force-Masquer (Affichage: Bloc; Fond: # Eff2F4; Rembourrage: 5px; Largeur: 270px; max-largeur: 100%; Rayon de frontière: 0PX; -Moz-Bordure -radius: 0px; Rayon: 0px; Font-face: Arial, "Helvetica Neue", Sans Serif; Contexte-répéter: Non-Repeat; Coly-position: Centre; Taille de l'arrière-plan: Auto;) Entrée de formulaire (Affichage: Inline- bloc; opacité: 1; visibilité: visible;). Formulaire SP -SP-FORM-FORM-champ-champ-emballage (marge: 0 auto; largeur: 260px;). SP -FFFFFF; Couleur de la bordure: #cccccc; Style frontière: solide; frontière-largeur: 1px; taille de la police: 15px; rembourrage-gauche: 8.75px; rembourrage-droit: 8.75px; frontière -radius: 4px; -Moz-frontière-rayon: 4px; -WebKit- Rayon frontalier: 4px; Hauteur: 35px; largeur: 100%;). Formulaire SP-Formulaire .sp-champ étiquette (Couleur: # 444444; Taille de police: 13px; Style de police: Normal; Poids: Bold;) . Bouton SP-FORMULAIRE (rayon de bordure: 4PX; -MOZ-BORD-BORD-RADIUS: 4PX; -WebKit-Border-Frontière-rayon: 4PX; Couleur de fond: # F4394C; Couleur: #FFFFF; Largeur: 100%; Font -weig HT: 700; Style de police: normal; Font-famille: Arial, "Helvetica Neue", Sans Serif; Box-Shadow: Aucun; -Moz-box-ombre: aucun; -WebKit-Box-Shadow: Aucun; Fond: gradient linéaire (en haut, # E30D22, # F77380);). Formulaire SP -SP-Bouton-Bouton-Conteneur (Texte-Align: Centre; Largeur: Auto;)

Afin de prendre en compte de l'argent et des biens, diverses tables utilisent largement dans les affaires. Presque tous les documents sont une table.

Le tableau répertorie les marchandises à l'expédition de l'entrepôt. Dans une autre table - des obligations de payer pour ces biens.

Par conséquent, 1C est important occupe travailler avec des tables.

Les tables en 1c sont également appelées "pièces tabulaires". Ils ont des livres de référence, des documents et d'autres.

La demande résultant de son exécution renvoie une table, l'accès auquel il est possible d'obtenir de deux manières différentes.

Le premier est plus rapide - échantillonnage, obtenant des lignes de celui-ci uniquement dans l'ordre. La seconde décharge le résultat de la requête dans la table des valeurs et un accès arbitraire supplémentaire à celui-ci.

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

// réception table
Échantillonnage \u003d requête. Remplir (). Sélectionnez ();
// dans l'ordre que nous passons autour de toutes les lignes du résultat de la requête
Pendant l'échantillon. Next () Cycle
Rapport (échantillon. Nom);
Endyclycle;

// Option 2 - Déchargement dans la table des valeurs
Demande \u003d nouvelle requête ("Sélectionnez le nom du répertoire. Namenclature");
// réception table
Table \u003d Query. Remplir (). Décharger ().
// alors nous pouvons aussi contourner toutes les lignes
Pour chaque ligne du cycle de table
Rapport (chaîne. Nom);
Endyclycle;
// ou un accès arbitrairement aux lignes
Ligne \u003d table. Init ("pelle", "nom");

Une caractéristique importante se trouve dans le tableau obtenu à partir du résultat de la requête, toutes les colonnes seront strictement dactylographiées. Cela signifie qu'en demandant le champ Nom de la nomenclature de l'annuaire, vous recevrez une colonne d'un type de chaîne avec une longueur autorisée de N ° de N.

Tableau sur la forme (client épais)

L'utilisateur fonctionne avec une table lorsqu'il est placé sur le formulaire.

Les principes de base de travailler avec des formulaires, nous avons discuté de la leçon dans la leçon de la leçon

Donc, placez une table sur la forme. Pour ce faire, vous pouvez faire glisser la table du panneau de commande. De même, vous pouvez sélectionner le formulaire / Insérer le contrôle dans le menu.

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

Appuyez sur le bouton "..." dans la propriété de données. Afin de voir une liste de pièces tabulaires, vous devez révéler l'objet de la succursale.

Lorsque vous choisissez une partie tabulaire 1C elle-même ajoute des colonnes à la table sur le formulaire. Les lignes entrées par l'utilisateur dans une telle table seront enregistrées automatiquement avec la référence / document.

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

Cela signifie qu'un tableau des valeurs arbitraire est sélectionné. Il n'ajoutera pas des colonnes automatiquement, il ne sera pas automatiquement enregistré, mais il est possible de faire quoi que ce soit avec elle.

presse clic-droit Sur la table, vous pouvez ajouter une colonne. Dans les propriétés de la colonne, vous pouvez spécifier son nom (pour faire référence à un code 1C), l'en-tête de colonne du formulaire, la connexion avec les détails de la partie tabulaire (dernière - sinon une table arbitraire et la partie de table est sélectionnée) .

Dans les propriétés du tableau sous la forme, vous pouvez spécifier si vous souhaitez ajouter / supprimer des lignes à l'utilisateur. Une forme plus avancée - une coche seulement. Ces propriétés sont pratiques à utiliser pour organiser des tableaux destinés à afficher des informations, mais pas d'édition.

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

Dans les propriétés du panneau de commande, sélectionnez une tickette automatique que les boutons du panneau apparaissent automatiquement.

Tableau sur la forme (client mince / géré)

Sur la forme gérée, les actions spécifiées ont une apparence un peu différemment. Si vous devez placer sur la forme de la partie tabulaire - ouvrez la branche de l'objet et faites glisser l'une des pièces de table à gauche. Et tout!

Si vous devez placer la table des valeurs, ajoutez un nouveau formulaire accessoires et dans ses propriétés. Spécifiez le type - la table des valeurs.

Pour ajouter des haut-parleurs, utilisez le menu situé sur le bouton droit de la souris sur ces détails du formulaire, l'option ajoutez une colonne Propulsations.

Après cela, faites également glisser la table à gauche.

Pour que la table apparaisse dans les propriétés de la table, sélectionnez les valeurs de la section Utilisation - la position du panneau de commande.

Déslanler la table dans Excel

Toute table 1c, située sur la forme, peut être imprimée ou déchargée dans Excel.

Pour ce faire, cliquez avec le bouton droit sur la table et sélectionnez Liste d'affichage.

Dans le client contrôlé (fin), des actions similaires peuvent être effectuées à l'aide de l'élément de menu Tous actions / liste.

Pour rechercher dans la table des valeurs, il existe deux méthodes spéciales:

1. Trouver

TVGorizont \u003d Books de référence. Nomelaclature. Inppontation ("Horizon TV");
Résultats \u003d tznenenclature. Inite (TV, TV);
// aussi nous pouvons spécifier dans quels intervenants à rechercher pour accélérer la recherche
Fondation \u003d tznomenclature. Inite (TV, "Nomenclature");

Cette méthode renvoie la première ligne trouvée avec la valeur souhaitée ou non définie si elle ne trouve pas. Donc, il est pratique d'utiliser pour rechercher valeurs uniquescar Sinon, vous devrez le supprimer de la table lors de la recherche de ce qui suit.

Pour ne pas souffrir, il y a la méthode suivante qui vous permet de trouver un tableau de lignes appropriées:

2.


Structuralboration. Tenir ("nomenclature", TVGorizont); // Tout d'abord, spécifiez la colonne où recherchez, puis à rechercher.

Cette méthode renvoie toujours un tableau, mais il peut être vide si rien n'est trouvé. Et cette méthode également, ainsi que la précédente renvoie les lignes des valeurs des valeurs, et non les valeurs elles-mêmes dans un tableau séparé. Par conséquent, modifier les valeurs de la ligne de réseau ou dans la méthode précédente à la ligne trouvée, vous modifierez la valeur dans le tableau des valeurs traitées.

Plus cette méthode est bonne pour laquelle il peut rechercher une fois dans plusieurs colonnes de la table des valeurs en même temps:


Structures \u003d nouvelle structure;
Structuralboration. Tenir ("nomenclature", TVGorizont);
StructuralBoat. Tenir ("Quantité", 10);
FondationMassivests \u003d TznnenencLature. Entrées (structures);

Le seul minus, comme on peut le voir, ne peut pas être utilisé d'autres comparaisons sauf "égale"

Voici une petite usine pour un démarrage - des exemples simples de travail avec une table de valeurs:

1. Créer une table de valeurs

Tables \u003d nouvelles tables;


2. Créer des valeurs de table de colonnes:

Tables. Colonges. Advide ("Nom");
Signes de table. Coolclocks. Audly ("Nom");


3. Ajoutez de nouvelles lignes à l'aide des noms de colonne:


Newstock. Je veux dire \u003d "Vasily";
Newstock.familia \u003d "PUMPKIN";


4. Comment rechercher une valeur dans le tableau des valeurs:
Il est nécessaire de trouver une chaîne de table contenant la valeur souhaitée.

Fondation \u003d Tivraison. Les soirs. Quarteté (sophistication);


5. Trouvez la première entrée de certaines colonnes de la table des valeurs

Fondation \u003d Tuyaux. Interties (Sophons, "Fournisseur, acheteur");


6. Si vous avez besoin de trouver toute l'entrée dans le tableau des valeurs:
Utilisez la structure de recherche.

Structuralité \u003d structure ("employé", entrant);
MasswordsNews \u003d signes de table. Entrées (structures);


Créez une structure de recherche, chaque élément contiendra le nom de la colonne sous forme de clé et de la valeur souhaitée dans cette colonne - en tant que valeur. Nous transmettons la structure structurelle à l'aide de la méthode de la course lointaine () que le paramètre. En conséquence, nous obtenons les rangées de la table.
Si vous accédez à la recherche de la valeur souhaitée dans la structure de recherche, par exemple, dans la colonne de partition, alors à la suite de l'utilisation de la méthode de vol (), nous obtenons toutes les lignes, où l'employé et les responsables sont égaux. à la valeur souhaitée.

7. Comment trier la table des valeurs dans un ordre aléatoire

Pour chaque courant hors de la table du cycle
Rapport (courant);
Endyclycle;

Les mêmes utilisations d'index:

OUVERDEX \u003d Nombre de pommes () - 1;
Pour Sch \u003d 0 sur le cycle de plus vieuxdex
Rapport (Tuyaux [SC].
Endyclycle;


8. Suppression de la ligne existante de la table des valeurs

Tables. Supprimer (supprimé);

par index

Tables. Supprimer (0);


9. Supprimer la colonne existante de la table des valeurs

Tables. Solonks. Supprimer (enlever-la seule colonne);


par index

Tables. Solonks. Supprimer (0);

Il faut garder à l'esprit que l'élimination d'une chaîne (ou d'une colonne) "du milieu" de la table de valeurs entraînera une diminution des indices d'unité des lignes qui se sont restées "après"

10. Comment remplir la table des valeurs si les noms des colonnes sont contenus dans des variables?

Nouvelle course \u003d tables de table. Audly ();
NewsTraille [Namecolonname] \u003d valeur;


11. Comment remplir la colonne entière de valeurs de tableau dans la valeur souhaitée?
La colonne Flagflage dans la table des valeurs de tableau doit être remplie d'une fausse valeur.

Panneaux de table. Remplir (mensonges, "drapeau surfocké");


Demander les valeurs de la méthode de remplissage (). Le premier paramètre que nous transmettons une valeur de remplissage. Le deuxième paramètre est le nom de la colonne remplie.

12. Comment le tableau des valeurs de "tableprigner" remplit-il la table de données des valeurs "code source"?

Si l'auteur de la table au moment de l'opération n'existe pas encore ou que ses intervenants précédents n'ont pas besoin d'être conservés, vous pouvez le créer comme une copie complète de la source.

Étable collecteur \u003d table précieux .copie ();


Option Deuxièmement: le collecteur de table de table existe et désolé de perdre ses colonnes et ses restrictions sur les types de colonnes. Mais vous devez remplir les données sur les colonnes dont les noms coïncident avec les noms de la table source.

Transfert de données partielles pour colonnes avec noms correspondants:

Pour chaque string Vaettlable du code source du cycle
Remplir (Newstroke, valorisation de cordes);
Endoncelier


Pour chaque ligne de la table source, une nouvelle ligne est ajoutée à la table des destinataires et les valeurs se remplissent dans ces colonnes de la nouvelle table, dont les noms coïncident avec les noms des colonnes de la table source

Si les tables ne disposent pas de colonnes avec les mêmes noms, la table des destinataires résulte de contenant autant de lignes avec des valeurs vides, combien de lignes étaient dans la source de la table.
Si certains internaires de nom ont le type de valeur de données de la table source, il ne tombera pas dans la matrice du type autorisé de la colonne de table du destinataire, dans de tels champs, nous obtenons des valeurs vides.
Considérez le troisième cas. Dans le cas des mêmes colonnes de noms, la colonne Table de destinataire doit être effectuée en toute correspondance de la colonne de la table source.

Données de copie complètes pour les colonnes avec noms correspondants

Une seule bague \u003d nouveau tableau ();

Pour chaque colonne du code source. Cycle de coupe
Sobatovativonka \u003d Tablesprigner. Coolclocks. Init (colonne.

Si la coïncidité'ovykolonka<> Indéfini alors

// Obtenez les propriétés de la colonne.
Nom \u003d colonne.
Type type \u003d colonne. Types;
Titre \u003d colonne. Mains;
Largeur \u003d colonne. Willina;

// Remplacez les colonnes dans la table du récepteur.
Index \u003d capteur de table. Solonki.index (coïncidcation);

Collecteur de table. Coolclocks. Libération (index);
Tablier collecteur. Solonks. Hold (index, nom, titre, titre, largeur);

// Ajoutez le nom suivant des colonnes coïncidentes dans un tableau.
Single-bague. Audlux (colonne.

Terminé;

Endyclycle;

// cycle de surplombant les rangées de la table source.
Pour chaque string Vaettlable du code source du cycle

// Ajouter nouvelle chaîne dans la table des destinataires.
Nouveau Course \u003d Tableprigner. Audly ();

// remplit les valeurs dans les cellules coïncidantes.
Pour chaque nom de nom de nom du même cycle de nom
Nouveau trait [Namecolonka] \u003d Tabels Stress [Namecolonname];

Endyclycle;

Endyclycle;


Nous devrons remplacer la colonne de la table des destinataires pour une nouvelle personne dont les propriétés correspondront parfaitement à la colonne de la table source.
Par conséquent, dans le cas de la détection dans la table-destinataire du même nom, nous collectons toutes les propriétés des variables pour une nouvelle colonne. Ensuite, nous supprimons l'ancien et créons une nouvelle colonne. Ensuite, effectuez un cycle de l'enfoncement de la rangée de la table source.
Dans le cycle, ajoutez une nouvelle ligne à la table des destinataires et ouvrez le cycle des érudits dans le tableau des colonnes de coïncidence.
À l'intérieur de ce cycle investi, nous remplissons les cellules des données de la table de destinataires des cellules de la table source.

13. Comment ajouter des colonnes à la table de "table de table" avec les limitations de type?

Lorsque vous ajoutez un haut-parleur, vous pouvez simplement spécifier son nom et le deuxième paramètre de la méthode Add () () ne peut pas être touché. Dans ce cas, le type de colonne de données est arbitraire.

Ajout d'une colonne sans spécifier de type de données

// Ajouter une colonne sans limitations par type.
Tables appositionnelles. Audly ("objet");


Vous pouvez remplir la valeur du deuxième paramètre. Il doit être transféré dans la description du type autorisé pour la colonne Type. La description elle-même peut être obtenue à l'aide d'un concepteur en faisant passer le type de ce dernier comme paramètre (si de nombreux types, puis à travers la virgule) ou un tableau de types valides.

Ajout d'une colonne avec indication de type de données

// restrictions sur la colonne Type de données:
// seuls éléments du livre de référence "Contreparties".
Signes de table. Coolclocks. Audlux ("contrepartie", nouvelles descriptions ("Directoryds. PRTTLENTS"));


Si parmi les types autorisés à remplir les données de la colonne, vous pouvez limiter son bit (longueur), spécifier l'utilisation de la variable ou de la longueur fixe. Tout cela est assuré en créant un objet à l'aide d'un qualificatif de concepteur. Ensuite, cet objet sera utilisé comme l'un des paramètres de la description des concepteurs.

Utilisation de qualificateurs pour clarifier le type de colonnes de données

// Préparation et installation de limitations pour les données de type de données.
Textes de qualification \u003d nouvelles qualifications (20, admissibles, perméant);
Admissibles \u003d nouvelles descriptions ("chaîne", qualifications);
Tables. Solonki. SUBVLY ("NOTMERITY-LOCK", admissible);


Des actions similaires peuvent être effectuées en ce qui concerne les qualificatifs du nombre et de la date.
Remarque: la description des types peut être construite par le concepteur comme "à partir de zéro" et utiliser comme base déjà une description existante des types.

Utilisation des types de types existants pour indiquer les valeurs de colonne de données de type de données

// Expansion des descriptions précédemment utilisées des types.
Qualifications \u003d nouvelles qualifications (10, 2, jeton admissible. Pas négatif);
Dates qualificatoires \u003d nouveau qualificatoire) (pièces. Données);
Prolongé FULLIES \u003d nouvelles descriptions (autorisations, "numéro, date", qualifications, qualificatoire);

Signes de table. Coolclocks. Audlux ("Note", Additifs élargis);

La cloche.

Il y a ceux qui ont lu cette nouvelle devant vous.
Abonnez-vous pour recevoir des articles frais.
E-mail
Nom
Nom de famille
Comment voulez-vous lire la cloche
Sans spam