Maison / Travailler sur Internet / Remplissez la partie tabulaire d'un autre document. Comment obtenir et contourner les lignes sélectionnées de la section tabulaire

Remplissez la partie tabulaire d'un autre document. Comment obtenir et contourner les lignes sélectionnées de la section tabulaire

1. Énoncé du problème

Dans cet article, nous allons parcourir le processus de rédaction d'un simple traitement externe remplir la partie tabulaire dans 1C8 pour les configurations utilisant application régulière. Par exemple, prenons la tâche suivante : « Dans la configuration 1C : Comptabilité 2.0 créer un traitement externe de remplissage de la section tabulaire Marchandises document, les données à renseigner sont extraites de la section tabulaire Marchandises document Réception de biens et services". Ainsi, nous devons remplir les marchandises à vendre sur la base des marchandises à recevoir, une telle tâche est assez courante dans la pratique réelle d'un programmeur 1C.

2. Création de traitements externes

Allons à 1C8 en mode Configurateur. Utilisation du menu Fichier -> Nouveau ou des pictogrammes nouveau document créer un nouveau traitement externe.

Sur le terrain Nom on précise : « Le remplissage le plus simple de la partie tabulaire » et on sauvegarde le traitement externe sur Disque dur en utilisant le menu Fichier -> Enregistrer ou icône Sauvegarder ou raccourci clavier ctrl+s.

Sélection d'une succursale Conditions requises dans l'arborescence des métadonnées de traitement et en cliquant sur le bouton Ajouter(bouton plus vert) créer nouveaux accessoires traitement externe - DocumentReçus, choisissez le type correspondant DocumentRéférence.Réception de BiensServices, nous avons besoin de cet attribut pour sélectionner un document Réception de biens et services, sur la base duquel la mise en œuvre sera remplie.

Pour sélectionner un document de réception, nous avons besoin d'un formulaire séparé. Sélection d'une succursale Formes et en utilisant le même bouton - Ajouter Créons un formulaire de traitement externe. La fenêtre du concepteur de formulaire s'ouvrira, vous n'avez pas besoin d'apporter de modifications sur la première page du concepteur, alors cliquez simplement sur le bouton Plus loin.

Sur la deuxième page du constructeur, nous devons sélectionner les accessoires DocumentReçus(pour qu'il apparaisse sur formulaire créé) et appuyez sur le bouton Prêt.

Après cela, le formulaire créé s'ouvrira, nous demandons à l'utilisateur de sélectionner le document de réception et de le fermer. Alors quand on appuie sur le bouton Courir le formulaire devrait simplement se fermer. Pour mettre en œuvre cela, sélectionnez le bouton Courir, faites un clic droit dessus et sélectionnez Propriétés. Dans les propriétés du bouton, dans la ligne Action sélectionner une action fermer. Ceci termine le travail avec le formulaire, fermez-le.

3. Programmation

Commençons par programmer le traitement de remplissage de la partie tabulaire. Allons à Module objet traitement externe (sur le panneau de traitement inférieur, le bouton Actions -> Ouvrir le module objet).

Dans celui-ci, nous devons créer une procédure d'exportation Initialiser.

Procédure Initialiser Exporter Fin de la procédure

noter que procédure Initialiser, ainsi que tous ses paramètres, sont obligatoires pour le traitement externe de remplissage de la section tabulaire, si vous ne le créez pas ou si vous ne fournissez pas tous les paramètres, votre traitement ne fonctionnera tout simplement pas.

Commençons maintenant à écrire le code. Tout d'abord, créons une variable pour la partie tabulaire du document Vente de biens et services que nous remplirons.

TablePart = Objet[TablePartName];

Lors de l'exécution de la procédure dans le paramètre Un objet contiendra l'objet document que nous remplissons, et dans le paramètre NomPièceTable une chaîne avec le nom de la partie tabulaire que nous remplissons. Donc cette ligne de code obtient partie tabulaire document à remplir à son nom.

Nous avons besoin que l'utilisateur sélectionne un document Réception de biens et services, écrivons donc le code pour ouvrir le formulaire de sélection de documents. Tout d'abord, nous transformons ce formulaire en variable en utilisant la méthode de traitement externe ObtenirFormulaire(<Форма>, <Владелец>, <КлючУникальности>) . Il nous suffit de renseigner uniquement le premier paramètre de cette méthode, en y passant une chaîne avec le nom de notre formulaire.

IncomingSelectionForm = GetForm("Formulaire" );

Ouvrons maintenant le formulaire résultant en utilisant l'ouverture modale (pendant que le formulaire est ouvert, toutes les autres fenêtres 1C ne sont pas disponibles), car avec cette méthode d'ouverture, notre code supplémentaire dans la procédure Initialiser ne sera pas exécuté tant que l'utilisateur n'aura pas fermé le formulaire.

AdmissionSelectionForm.OpenModally();

Une fois que l'utilisateur ferme le formulaire, nous devons vérifier si l'attribut est renseigné DocumentReçus(dans le cas où aucun document de réception n'a été sélectionné). Si après vérification DocumentReçus est vide, la poursuite du traitement n'a pas de sens et doit être interrompue.

Si NON ValueFilled(ReceiptDocument) Then Report(); Retour ; Fin si ;

Pour vérifier la plénitude de l'attribut, la fonction de contexte global est utilisée ici ValeurRemplie(<Значение>) , il vérifie si la valeur passée en paramètre est différente de la valeur par défaut du même type. Procédure Signaler affiche le texte spécifié dans la boîte de message 1C 8. Mot-clé Retour interrompt l'exécution de la procédure.

Commençons par écrire une requête qui sélectionnera les données de la partie tabulaire Marchandises document Réception de biens et services. Créons une nouvelle requête :

Demande = Nouvelle demande ;

Requête.SetParameter( "Document de réception",Document de réception);

Écrivons le texte de la demande, nous le ferons à l'aide de Constructeur de requête. Il n’est pas recommandé de rédiger manuellement le texte de la demande, cela n’est pas efficace et prend beaucoup de temps. Commençons par une ligne :

Requête.Text = "" ;

Placez le curseur entre les guillemets, appuyez sur le bouton droit de la souris et sélectionnez l'élément Demander au constructeur.... Après cela, vous serez invité à créer une nouvelle demande, cliquez sur le bouton « OK ». Une fenêtre de constructeur s'ouvrira, dans sa partie gauche se trouvent toutes les tables de base de données disponibles, nous avons besoin d'un document Services de marchandises entrantes. Trouvez-le et ouvrez-le avec le symbole «+», sélectionnez la partie tabulaire Marchandises et faites-le glisser vers la deuxième partie de l'écran du concepteur, appelée les tables(Vous pouvez également déplacer le tableau souhaité à l'aide du bouton « > »).

Nous allons maintenant étendre le tableau que nous avons choisi par « + » ( Marchandises entrantes Services Marchandises) et faites glisser les champs nécessaires au remplissage de la partie onglet vers la troisième partie de l'écran du constructeur, qui s'appelle - des champs. Nous ne sélectionnerons pas tous les champs disponibles, nous nous limiterons à l'ensemble suivant : Nomenclature, Quantité, Prix, Montant, Taux TVA, Montant TVA.

Puisque nous n'avons besoin que des données d'un seul document de réception (que nous avons sélectionné avant de commencer à remplir), alors dans l'onglet « Conditions », nous imposerons une condition sur le lien du document en utilisant le paramètre que nous avons passé.

La création du texte de requête dans le constructeur est maintenant terminée, cliquez sur le bouton « OK ». En conséquence, nous avons le texte de requête suivant :

Query.Text = "SELECT |FROM |WHERE ;

La requête créée doit seulement être exécutée et déchargée dans une variable :

Résultat = Request.Execute().Upload();

Dans une variable Résultat un tableau de valeurs est stocké avec les lignes de la partie tabulaire Marchandises document de notre choix Réception de biens et services. Vous pouvez maintenant commencer à remplir la feuille de calcul. Marchandises notre mise en œuvre. Mais avant de remplir les données, vous devez les effacer, au cas où il y aurait déjà quelques lignes.

TablePart.Clear();

Avec un vélo Pour chaque faisons le tour de la table de valeurs avec les résultats de la requête.

Pour chaque élément de résultat de la boucle de résultat, fin de boucle ;

Dans ce cycle, nous allons créer et remplir les lignes de la partie tabulaire du document Vente de biens et services. Nous pouvons créer une nouvelle ligne en utilisant une variable Partie tabulaire, grâce auquel vous pouvez effectuer n’importe quelle action avec.

NewStringPT = TabularPart.Add();

Remplissez l'onglet de ligne créé. des parties des données de la chaîne de résultat de la requête à l'aide de la procédure contexte mondialFillPropertyValues(<Приемник>, <Источник>) .

FillPropertyValues(NewStringPT,ResultElement);

Mais les données que nous avons renseignées ne suffisent pas, pour que le document soit réalisé, il faut en renseigner davantage comptes de comptabilité des stocks. Pour ce faire, nous utilisons l'export

procédure Remplir les facturesAccountingInRowTabPartsà partir du module objet de document Vente de biens et services. Appelons-le avec le paramètre Un objet(ça devrait être noté

qu'on ne peut qu'appeler exporter procédures du module objet document).

Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True);

Ceci termine la programmation du remplissage de la partie tabulaire pour 1C8 complété. le traitement peut être utilisé. Texte intégral de la procédure Initialiser, Ressemble à ça:

Procédure Initialiser (Objet, TabularPartName = Non défini, Objet TableField = Non défini) Exporter TablePart = Objet[TablePartName]; IncomingSelectionForm = GetForm("Formulaire" ); AdmissionSelectionForm.OpenModally(); Si PAS ValueFilled (Document entrant), alors rapport ( "Aucun document de réception sélectionné"); Retour ; Fin si ; Demande = Nouvelle demande ; Requête.SetParameter( "Document de réception",Document de réception); Requête.Texte = "SELECT | Réception de biens, services, marchandises. Nomenclature, | Réception de biens, services, marchandises. Quantité, | Réception de biens, services, marchandises. Taux de TVA, | Réception de biens, services, marchandises. Montant, | Réception de biens, services, marchandises. Montant de la TVA, | Réception de biens, services, marchandises.| DE | Document.Réception de marchandisesServices.Marchandises AS Réception de marchandisesServicesBiens|OÙ | GoodsReceiptServicesGoods.Reference = &ReceiptDocument"; Résultat = Request.Execute().Upload(); TablePart.Clear(); Pour chaque élément de résultat de la boucle de résultat NewRowPT = TabularPart.Add(); FillPropertyValues(NewStringPT,ResultElement); Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True); Fin du cycle ; Fin de la procédure

La partie suivante de l'article vous expliquera comment déboguer le traitement de remplissage de la partie tabulaire et comment la connecter au document.

4. Débogage

Très souvent, vous devez déboguer le code que vous écrivez. Afin de déboguer le traitement de remplissage de la partie tabulaire dans 1C8 créer ses accessoires RéférenceVersObjet taper DocumentRéférence.Réalisation de BiensServices

Nous en avons besoin pour sélectionner un document d'implémentation lors du débogage, que nous remplirons. Ensuite, vous devez créer un formulaire de débogage et y placer les accessoires créés. RéférenceVersObjet, le processus de création d'un formulaire de débogage ne diffère pas de la création d'un formulaire de sélection de document de réception, nous ne nous y attarderons donc pas en détail.

Une fois le formulaire créé, accédez à son module. Nous y trouverons une procédure créée automatiquement BoutonExécuterPousser. Cette procédure s'exécute lorsque le bouton est enfoncé. Courir. Appelons-en une procédure Initialiser, qui se trouve dans le module de traitement, nous passerons l'objet document aux paramètres Vente de biens et services(que nous obtiendrons des accessoires RéférenceVersObjet) et une ligne avec le nom de la partie tabulaire à remplir (dans notre cas Marchandises).

Procédure BoutonExécuterCliquer(Bouton) Initialiser(ReferenceToObject.GetObject(), "Goods" ); Fin de la procédure

Vous devez maintenant faire du formulaire créé le formulaire de traitement principal. Pour cela, sélectionnez-le dans le champ « Formulaire de traitement ».

Vous pouvez désormais définir un point d'arrêt au bon endroit dans la procédure Initialiser ou des procédures BoutonExécuterPousser déboguer les formulaires et commencer à traiter le remplissage de la section tabulaire en mode débogage 1C : Entreprise.

5. Connexion à un document

Une fois le traitement de remplissage écrit et débogué, il doit être connecté au document à partir duquel il sera exécuté. Pour ce faire, rendez-vous sur 1C8 en mode Entreprise, allez dans le menu Service -> Rapports supplémentaires et traitement -> Traitement externe supplémentaire des parties tabulaires et ajouter nouvel élément annuaire. Avec bouton Remplacer le fichier de traitement externe Ajoutons le fichier du traitement de remplissage de la section tabulaire créée par nos soins.

Remplissez l'affiliation au traitement en utilisant le bouton Sélection choisir un document Vente de biens et services

Et nous indiquons que le remplissage est destiné à la partie tabulaire Marchandises.

On appuie sur le bouton D'ACCORD et c'est tout, le traitement du remplissage sera disponible dans le menu Remplir partie tabulaire Marchandises document Vente de biens et services. Vous pouvez télécharger le traitement utilisé pour cet exemple par .

Dans cet article, nous examinerons le processus d'écriture du traitement externe le plus simple consistant à remplir une partie tabulaire dans 1C8 pour les configurations utilisant une application normale. Par exemple, prenons la tâche suivante : « Dans la configuration 1C : Comptabilité 2.0 créer un traitement externe de remplissage de la section tabulaire Marchandises document Vente de biens et services, les données à renseigner sont extraites de la section tabulaire Marchandises document Réception de biens et services". Ainsi, nous devons remplir les marchandises à vendre sur la base des marchandises à recevoir, une telle tâche est assez courante dans la pratique réelle d'un programmeur 1C.

2. Création de traitements externes

Allons à 1C8 en mode Configurateur. Utilisation du menu Fichier -> Nouveau ou des pictogrammes nouveau document créer un nouveau traitement externe.

Sur le terrain Nom nous indiquons : « Le remplissage le plus simple de la partie tabulaire » et sauvegardons le traitement externe sur le disque dur à l'aide du menu Fichier -> Enregistrer ou icône Sauvegarder ou raccourci clavier ctrl+s.

Sélection d'une succursale Conditions requises dans l'arborescence des métadonnées de traitement et en cliquant sur le bouton Ajouter(bouton avec un plus vert) crée un nouvel attribut de traitement externe - DocumentReçus, choisissez le type correspondant DocumentRéférence.Réception de BiensServices, nous avons besoin de cet attribut pour sélectionner un document Réception de biens et services, sur la base duquel la mise en œuvre sera remplie.

Pour sélectionner un document de réception, nous avons besoin d'un formulaire séparé. Sélection d'une succursale Formes et en utilisant le même bouton - Ajouter Créons un formulaire de traitement externe. La fenêtre du concepteur de formulaire s'ouvrira, vous n'avez pas besoin d'apporter de modifications sur la première page du concepteur, alors cliquez simplement sur le bouton Plus loin.

Sur la deuxième page du constructeur, nous devons sélectionner les accessoires DocumentReçus(pour qu'il apparaisse sur le formulaire créé) et appuyez sur le bouton Prêt.

Après cela, le formulaire créé s'ouvrira, nous demandons à l'utilisateur de sélectionner le document de réception et de le fermer. Alors quand on appuie sur le bouton Courir le formulaire devrait simplement se fermer. Pour mettre en œuvre cela, sélectionnez le bouton Courir, faites un clic droit dessus et sélectionnez Propriétés. Dans les propriétés du bouton, dans la ligne Action choisir une action fermer. Ceci termine le travail avec le formulaire, fermez-le.

3. Programmation

Commençons par programmer le traitement de remplissage de la partie tabulaire. Allons à Module objet traitement externe (sur le panneau de traitement inférieur, le bouton Actions -> Ouvrir le module objet).

Dans celui-ci, nous devons créer une procédure d'exportation Initialiser.

Procédure Initialiser Exporter Fin de la procédure

noter que procédure Initialiser, ainsi que tous ses paramètres, sont obligatoires pour le traitement externe de remplissage de la section tabulaire, si vous ne le créez pas ou si vous ne fournissez pas tous les paramètres, votre traitement ne fonctionnera tout simplement pas.

Commençons maintenant à écrire le code. Tout d'abord, créons une variable pour la partie tabulaire du document Vente de biens et services que nous remplirons.

TablePart = Objet[TablePartName];

Lors de l'exécution de la procédure dans le paramètre Un objet contiendra l'objet document que nous remplissons, et dans le paramètre NomPièceTable une chaîne avec le nom de la partie tabulaire que nous remplissons. Ainsi, cette ligne de code récupère la partie tabulaire du document rempli par son nom.

Nous avons besoin que l'utilisateur sélectionne un document Réception de biens et services, écrivons donc le code pour ouvrir le formulaire de sélection de documents. Tout d'abord, nous transformons ce formulaire en variable en utilisant la méthode de traitement externe ObtenirFormulaire(<Форма>, <Владелец>, <КлючУникальности>) . Il nous suffit de renseigner uniquement le premier paramètre de cette méthode, en y passant une chaîne avec le nom de notre formulaire.

IncomingSelectionForm = GetForm("Formulaire" );

Ouvrons maintenant le formulaire résultant en utilisant l'ouverture modale (pendant que le formulaire est ouvert, toutes les autres fenêtres 1C ne sont pas disponibles), car avec cette méthode d'ouverture, notre code supplémentaire dans la procédure Initialiser ne sera pas exécuté tant que l'utilisateur n'aura pas fermé le formulaire.

AdmissionSelectionForm.OpenModally();

Une fois que l'utilisateur ferme le formulaire, nous devons vérifier si l'attribut est renseigné DocumentReçus(dans le cas où aucun document de réception n'a été sélectionné). Si après vérification DocumentReçus est vide, la poursuite du traitement n'a pas de sens et doit être interrompue.

Si NON ValueFilled(ReceiptDocument) Then Report(); Retour ; Fin si ;

Pour vérifier la plénitude de l'attribut, la fonction de contexte global est utilisée ici ValeurRemplie(<Значение>) , il vérifie si la valeur passée en paramètre est différente de la valeur par défaut du même type. Procédure Signaler affiche le texte spécifié dans la boîte de message 1C 8. Retour interrompt l'exécution de la procédure.

Commençons par écrire une requête qui sélectionnera les données de la partie tabulaire Marchandises document Réception de biens et services. Créons une nouvelle requête :

Demande = Nouvelle demande ;

Requête.SetParameter( "Document de réception",Document de réception);

Écrivons le texte de la demande, nous le ferons à l'aide de Constructeur de requête. Il n’est pas recommandé de rédiger manuellement le texte de la demande, cela n’est pas efficace et prend beaucoup de temps. Commençons par une ligne :

Requête.Text = "" ;

Placez le curseur entre les guillemets, appuyez sur le bouton droit de la souris et sélectionnez l'élément Demander au constructeur.... Après cela, vous serez invité à créer une nouvelle demande, cliquez sur le bouton « OK ». Une fenêtre de constructeur s'ouvrira, dans sa partie gauche se trouvent toutes les tables de base de données disponibles, nous avons besoin d'un document Services de marchandises entrantes. Trouvez-le et ouvrez-le avec le symbole «+», sélectionnez la partie tabulaire Marchandises et faites-le glisser vers la deuxième partie de l'écran du concepteur, appelée les tables(Vous pouvez également déplacer le tableau souhaité à l'aide du bouton « > »).

Nous allons maintenant étendre le tableau que nous avons choisi par « + » ( Marchandises entrantes Services Marchandises) et faites glisser les champs nécessaires au remplissage de la partie onglet vers la troisième partie de l'écran du constructeur, qui s'appelle - des champs. Nous ne sélectionnerons pas tous les champs disponibles, nous nous limiterons à l'ensemble suivant : Nomenclature, Quantité, Prix, Montant, Taux TVA, Montant TVA.

Puisque nous n'avons besoin que des données d'un seul document de réception (que nous avons sélectionné avant de commencer à remplir), alors dans l'onglet « Conditions », nous imposerons une condition sur le lien du document en utilisant le paramètre que nous avons passé.

La création du texte de requête dans le constructeur est maintenant terminée, cliquez sur le bouton « OK ». En conséquence, nous avons le texte de requête suivant :

Query.Text = "SELECT |FROM |WHERE ;

La requête créée doit seulement être exécutée et déchargée dans une variable :

Résultat = Request.Execute().Upload();

Dans une variable Résultat un tableau de valeurs est stocké avec les lignes de la partie tabulaire Marchandises document de notre choix Réception de biens et services. Vous pouvez maintenant commencer à remplir la feuille de calcul. Marchandises notre mise en œuvre. Mais avant de remplir les données, vous devez les effacer, au cas où il y aurait déjà quelques lignes.

TablePart.Clear();

Avec un vélo Pour chaque faisons le tour de la table de valeurs avec les résultats de la requête.

Pour chaque élément de résultat de la boucle de résultat, fin de boucle ;

Dans ce cycle, nous allons créer et remplir les lignes de la partie tabulaire du document Vente de biens et services. Nous pouvons créer une nouvelle ligne en utilisant une variable Partie tabulaire, grâce auquel vous pouvez effectuer n’importe quelle action avec.

NewStringPT = TabularPart.Add();

Remplissez l'onglet de ligne créé. des parties des données de la chaîne de résultat de la requête à l'aide de la procédure contexte mondial - FillPropertyValues(<Приемник>, <Источник>) .

FillPropertyValues(NewStringPT,ResultElement);

Mais les données que nous avons renseignées ne suffisent pas, pour que le document soit réalisé, il faut en renseigner davantage comptes de comptabilité des stocks. Pour ce faire, nous utilisons l'export

procédure Remplir les facturesAccountingInRowTabPartsà partir du module objet de document Vente de biens et services. Appelons-le avec le paramètre Un objet(ça devrait être noté

qu'on ne peut qu'appeler exporter procédures du module objet document).

Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True);

Ceci termine la programmation du remplissage de la partie tabulaire pour 1C8 complété. le traitement peut être utilisé. Texte intégral de la procédure Initialiser, Ressemble à ça:

Procédure Initialiser (Objet, TabularPartName = Non défini, Objet TableField = Non défini) Exporter TablePart = Objet[TablePartName]; IncomingSelectionForm = GetForm("Formulaire" ); AdmissionSelectionForm.OpenModally(); Si PAS ValueFilled (Document entrant), alors rapport ( "Aucun document de réception sélectionné"); Retour ; Fin si ; Demande = Nouvelle demande ; Requête.SetParameter( "Document de réception",Document de réception); Requête.Texte = "SELECT | Réception de biens, services, marchandises. Nomenclature, | Réception de biens, services, marchandises. Quantité, | Réception de biens, services, marchandises. Taux de TVA, | Réception de biens, services, marchandises. Montant, | Réception de biens, services, marchandises. Montant de la TVA, | Réception de biens, services, marchandises.| DE | Document.Réception de marchandisesServices.Marchandises AS Réception de marchandisesServicesBiens|OÙ | GoodsReceiptServicesGoods.Reference = &ReceiptDocument"; Résultat = Request.Execute().Upload(); TablePart.Clear(); Pour chaque élément de résultat de la boucle de résultat NewRowPT = TabularPart.Add(); FillPropertyValues(NewStringPT,ResultElement); Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True); Fin du cycle ; Fin de la procédure

La partie suivante de l'article vous expliquera comment déboguer le traitement de remplissage de la partie tabulaire et comment la connecter au document.

4. Débogage

Très souvent, vous devez déboguer le code que vous écrivez. Afin de déboguer le traitement de remplissage de la partie tabulaire dans 1C8 créer ses accessoires RéférenceVersObjet taper DocumentRéférence.Réalisation de BiensServices

Nous en avons besoin pour sélectionner un document d'implémentation lors du débogage, que nous remplirons. Ensuite, vous devez créer un formulaire de débogage et y placer les accessoires créés. RéférenceVersObjet, le processus de création d'un formulaire de débogage ne diffère pas de la création d'un formulaire de sélection de document de réception, nous ne nous y attarderons donc pas en détail.

Une fois le formulaire créé, accédez à son module. Nous y trouverons une procédure créée automatiquement BoutonExécuterPousser. Cette procédure s'exécute lorsque le bouton est enfoncé. Courir. Appelons-en une procédure Initialiser, qui se trouve dans le module de traitement, nous passerons l'objet document aux paramètres Vente de biens et services(que nous obtiendrons des accessoires RéférenceVersObjet) et une ligne avec le nom de la partie tabulaire à remplir (dans notre cas Marchandises).

Procédure BoutonExécuterCliquer(Bouton) Initialiser(ReferenceToObject.GetObject(), "Goods" ); Fin de la procédure

Vous devez maintenant faire du formulaire créé le formulaire de traitement principal. Pour cela, sélectionnez-le dans le champ « Formulaire de traitement ».

Vous pouvez désormais définir un point d'arrêt au bon endroit dans la procédure Initialiser ou des procédures BoutonExécuterPousser déboguer les formulaires et commencer à traiter le remplissage de la section tabulaire en mode débogage 1C : Entreprise.

5. Connexion à un document

Une fois le traitement de remplissage écrit et débogué, il doit être connecté au document à partir duquel il sera exécuté. Pour ce faire, rendez-vous sur 1C8 en mode Entreprise, allez dans le menu Service -> Rapports et traitements supplémentaires -> Traitement externe supplémentaire des parties tabulaires et ajoutez un nouvel élément de répertoire. Avec bouton Remplacer le fichier de traitement externe Ajoutons le fichier du traitement de remplissage de la section tabulaire créée par nos soins.

Remplissez l'affiliation au traitement en utilisant le bouton Sélection choisir un document Vente de biens et services

Et nous indiquons que le remplissage est destiné à la partie tabulaire Marchandises.

On appuie sur le bouton D'ACCORD et c'est tout, le traitement du remplissage sera disponible dans le menu Remplir partie tabulaire Marchandises document Vente de biens et services. Vous pouvez télécharger le traitement utilisé pour cet exemple en bas de l'article.

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 métier

Les parties tabulaires vous permettent de stocker une quantité illimitée d'informations structurées appartenant à un seul 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

Rapport(String.TablePartAttribute) ;

Fin du cycle ;

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 form est utilisé pour afficher les informations de la partie tabulaire de l'objet. champ de table. 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 :

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

Lignes sélectionnées = 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 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 :

ÉlémentsForm. Nom du champ de table. Chaînes sélectionnées. Clair() ;

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

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

Comment effacer la feuille de calcul

Partie tabulaire. Clair() ;

Comment obtenir la ligne actuelle d'une section tabulaire

La ligne en cours est la période pendant laquelle l'utilisateur a ce moment le curseur est localisé. Pour l'obtenir, il faut se référer au contrôle du formulaire, qui est associé à la partie tabulaire.

Pour les formulaires standards, le code ressemblerait à ceci :

ÉlémentsForm. 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 feuille de calcul

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

NouvelleRow = TablePart. Ajouter() ;

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

NouvelleRow = 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 programme les détails d'une ligne de tableau

Si vous devez remplir par programme les détails de la ligne de la section tabulaire ajoutée par l'utilisateur, 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 Champ de table.
  • Nouvelle ligne- booléen. Contient de la 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 de la 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. Lorsque vous modifiez 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, ne faites rien
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 comptables. Autonome. Compte souhaité ;
Fin de la procédure