» Comment ouvrir un formulaire de liste avec une sélection ? 1c uv ouvrez le formulaire de sélection avec sélection.

Comment ouvrir un formulaire de liste avec une sélection ? 1c uv ouvrez le formulaire de sélection avec sélection.

Ce code permet d'ouvrir une liste de documents avec une sélection spécifiée ; vous pouvez également ouvrir une liste d'éléments de répertoire avec la sélection souhaitée

Code 1C v 8.2 UP Form = OpenForm("Document. Invoice.Form.ListForm"); //Ouvre le formulaire
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); //Ajouter une sélection
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals ; //Comment allons-nous comparer
SelectOwner.Use = Vrai ; // Cochez la case pour utiliser NewDataCompositionField("Nomenclature")
SelectionOwner.LeftValue = NewDataCompositionField("Compte"); //Quels détails utiliserons-nous pour faire la sélection ?
SelectionOwner.RightValue = Objet.Compte ; // Et le sens même de la sélection

Pour ouvrir un formulaire de liste avec une sélection prédéfinie utilisez les méthodes suivantes :

Première façon est que lorsque vous ouvrez un formulaire, vous pouvez définir le paramètre Formulaire de sélection et ouvrir le formulaire de liste avec ce paramètre.

Le paramètre Selection représente la structure. Les noms des éléments correspondent aux noms des champs par lesquels la sélection est effectuée, et les valeurs contiennent les valeurs de sélection. Il s'agit d'une option d'extension de formulaire gérée par liste dynamique. Autrement dit, il existe pour les formulaires dont l'attribut principal est un attribut de type DynamicList, par exemple les formulaires de liste et les formulaires de sélection.

Par exemple, dans l'exemple suivant, une liste de factures est ouverte avec sélection par le champ Numéro, égal à 333.

Code 1C v 8.2 Valeur de sélection UE = Nouvelle structure ("Numéro", "333");
SelectionParameters = Nouvelle Structure("Sélection", SelectionValue);
OpenForm("Document. Réception de facture. Formulaire de liste", Options de sélection);

Deuxième façon

Vous pouvez ouvrir un formulaire de liste sans paramètres :

Code 1C v 8.2 UE OpenForm("Document. Reçu Invoice.List Form");

Et puis, dans le gestionnaire d'événements du formulaire pour la liste des factures When CreatedOnServer, écrivez du code qui crée une sélection dans la liste dynamique, qui est l'attribut principal du formulaire :

Code 1C v 8.2 UP et sur serveur
Procédure lors de la création sur serveur (échec, traitement standard)
Élément de sélection = List.Selection.Elements.Add(Type("Élément de sélection DataComposition"));
SelectionElement.LeftValue = NewDataCompositionField("Nombre");
SelectionElement.ComparisonView = DataCompositionComparisonView.More ;
SelectionElement.Use = True ;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible ;
SelectionElement.RightValue = "000000001";
Fin de la procédure

Les avantages de cette méthode sont que le type de comparaison pour la sélection peut être défini non seulement sur Égal, comme dans le premier cas, mais également sur Plus, Moins, etc.

Mais cette méthode présente aussi un inconvénient très important : avec cette sélection, le formulaire s'ouvrira toujours. D'où qu'elle soit appelée. Par conséquent, ce formulaire ne doit pas être désigné comme le formulaire principal. Et si, néanmoins, c'est le principal, alors avant d'installer la sélection, il est nécessaire de fournir une sorte d'analyse de l'endroit où ce formulaire s'ouvre. Par exemple, analyser les paramètres du formulaire.

Troisième voie

Enfin, la condition de sélection peut être placée dans une requête personnalisée qui sélectionne les données pour une liste dynamique.

Par exemple, nous devons ouvrir une liste de factures contenant l'article mis en surbrillance dans la liste des articles.

Pour cela, sous forme de liste d'éléments, créez une commande et le bouton correspondant Réceptionner les factures.

Remplissons le gestionnaire d'exécution de cette commande comme suit :

Code 1C v 8.2 UP &SurClient
Procédure RéceptionsFactures (Commande)
SelectionParameters = Nouvelle Structure("FilterByProduct", Elements.List.CurrentRow);
OpenForm("Document. Réception de facture. Formulaire de liste", Options de sélection);
Fin de la procédure

Dans ce gestionnaire, nous ouvrons le formulaire pour la liste des factures, en passant un lien vers l'élément actuel dans la liste d'articles au paramètre de formulaire FilterByProduct.

Ensuite, nous allons créer un formulaire pour la liste des documents : Reçu Invoice et créer un paramètre de formulaire FilterBy Product, que nous utiliserons pour ouvrir un formulaire avec la sélection requise.

Ouvrons maintenant la palette des propriétés de l'attribut principal du formulaire Liste. Définissez l'indicateur de requête personnalisée et, dans la ligne Paramètres de liste, cliquez sur Ouvrir.

Dans le champ Demande, saisissez le texte de demande suivant :

Code 1C v 8.2 SÉLECTION HAUT
Document Réception Facture. Numéro,
Document Réception Facture.Date
DEPUIS
Document.ReceiptInvoice AS DocumentReceiptInvoice

Réception du document Invoice.Products.Product = &Product

Dans la requête, nous utilisons le paramètre Item, qui recevra un lien vers la ligne actuelle de la liste d'articles, contenue dans le paramètre du formulaire de liste de factures FilterBy Item.

Pour ce faire, dans le gestionnaire d'événements du formulaire de liste Lorsque CreatedOnServer, nous écrirons du code pour définir la valeur du paramètre de requête Product :

Code 1C v 8.2 UP &SurClient
Procédure d'ouverture (échec)
List.Parameters.SetParameterValue("Produit", Parameters.FilterByProduct);
Fin de la procédure

Ici, List.Parameters est une liste de paramètres de demande de liste dynamique pour l'attribut List. La valeur du paramètre Product est définie de manière égale à la valeur du paramètre de formulaire FilterByProduct.

Par conséquent, en cliquant sur le bouton Réception des factures dans le formulaire de liste d'articles, nous recevrons une liste uniquement des factures contenant l'article actuellement sélectionné dans la liste d'articles.

Pour ouvrir le formulaire de sélection avec sélection en 1s 8.2(formes régulières), nous devons effectuer certaines actions. Nous l'obtiendrons en premier. Après cela, nous définirons la sélection et l'ouvrirons par programme, voici un exemple de code :

Sélection sur le formulaire dans le champ de saisie 1C 8.2 avec plusieurs valeurs

Dans l'exemple ci-dessus, nous avons regardé comment définir la sélection sur le formulaire de sélection par valeur spécifique. Examinons maintenant une situation dans laquelle vous devez remplacer plusieurs valeurs, cela peut être, par exemple, un tableau ou déchargé à partir d'un résultat de requête. Ceci est une sélection dans le champ de saisie 1c avec de multiples significations.

Tout d'abord, nous obtenons le formulaire de sélection, passons « Élément » (propriétaire) dans les paramètres, définissons l'indicateur du mode de sélection. Ensuite on crée une liste de valeurs et un tableau, on note qu'en sélection lors du paramétrage du type de comparaison dans la liste, un objet ne peut être présent qu'avec le type ListeValeurs. Nous ajoutons des éléments au tableau, puis chargeons ce tableau dans la liste de valeurs, que nous définissons ensuite dans la sélection. N'oubliez pas non plus d'activer l'indicateur pour utiliser cette sélection et de définir le type de comparaison.

Définition de la sélection dans le champ de saisie du formulaire dans 1C 8.3, événement Début de sélection

Considérons maintenant sélection dans le champ de saisie sur un formulaire géré dans 1C 8.3. Retrouvons sur le formulaire l'élément qui nous intéresse, dans lequel nous allons paramétrer la sélection, dans notre cas il s'agit du champ « Organisation ». On retrouve l'événement « Début de sélection », on clique sur la loupe et on se retrouve dans la procédure. On voit le paramètre Selection Data ; ce paramètre est de type ValueList. Afin de limiter la sélection aux éléments nécessaires, nous devons remplir la liste de valeurs. Nous ne pouvons sélectionner des éléments que sur le serveur, nous créons donc une procédure avec la directive de compilation &OnServer. Dans cette procédure, remplissez les données de sélection.

Comment ouvrir un formulaire de liste avec une sélection ?

Il existe plusieurs façons d'ouvrir un formulaire de liste avec une sélection prédéfinie. Regardons-les dans l'ordre :

1. La première méthode est que lors de l'ouverture du formulaire, vous pouvez définir le paramètre Formulaire de sélection et ouvrir le formulaire de liste avec ce paramètre. Le paramètre Selection représente la structure. Les noms des éléments correspondent aux noms des champs par lesquels la sélection est effectuée, et les valeurs contiennent les valeurs de sélection. Il s'agit d'une option d'extension de formulaire gérée par liste dynamique. Autrement dit, il existe pour les formulaires dont l'attribut principal est l'attribut type Liste dynamique, tels que les formulaires de liste et les formulaires de sélection.

A l'ouverture du formulaire, la sélection sera effectuée en fonction du champ spécifié. Par exemple, dans l'exemple suivant, une liste de factures est ouverte avec sélection par le champ Numéro, égal à 333.

Valeur de sélection = Nouvelle structure("Nombre", "333");

SelectionParameters = Nouvelle Structure("Sélection", SelectionValue);

OpenForm("Document. Réception de facture. Formulaire de liste", Options de sélection);

2. Vous pouvez ouvrir un formulaire de liste sans paramètres :

OpenForm("Document.Invoice.ListForm");

Et puis, dans le gestionnaire d'événements du formulaire liste de factures Lors de la création sur le serveurécrire du code qui crée une sélection dans une liste dynamique, qui est l'attribut principal du formulaire :

&Sur le serveur

Procédure lors de la création sur serveur (échec, traitement standard)

Élément de sélection = List.Selection.Elements.Add(Type("Élément de sélection DataComposition"));

SelectionElement.LeftValue = NewDataCompositionField("Nombre");

SelectionElement.ComparisonView = DataCompositionComparisonView.More ;

SelectionElement.Use = True ;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible ;

SelectionElement.RightValue = "000000001";

Fin de la procédure

Les avantages de cette méthode sont que le type de comparaison pour la sélection peut être défini non seulement Égal, comme dans le premier cas, mais également Plus, Moins, etc.

Mais cette méthode présente aussi un inconvénient très important : avec cette sélection, le formulaire s'ouvrira toujours. D'où qu'elle soit appelée. Par conséquent, ce formulaire ne doit pas être désigné comme le formulaire principal. Et si, néanmoins, c'est le principal, alors avant d'installer la sélection, il est nécessaire de fournir une sorte d'analyse de l'endroit où ce formulaire s'ouvre. Par exemple, analyser les paramètres du formulaire.

3. Enfin, la condition de sélection peut être placée dans une requête personnalisée qui sélectionne les données pour une liste dynamique. Par exemple, nous devons ouvrir une liste de factures contenant l'article mis en surbrillance dans la liste des articles.

Pour cela, sous forme de liste d'éléments, créez une commande et un bouton correspondant Factures de réception.

Remplissons le gestionnaire d'exécution de cette commande comme suit :

&SurClient

Procédure RéceptionsFactures (Commande)

ListForm = GetForm("Document.Invoice.ListForm");

ListForm.FilterByProduct = Elements.List.CurrentRow ;

ListForm.Open();

Fin de la procédure

Dans ce gestionnaire, nous recevons le formulaire pour la liste des factures et transmettons le lien vers l'élément actuel dans la liste d'articles au paramètre de formulaire FilterByProduct et ouvrons le formulaire avec ce paramètre.

Ensuite, nous créerons un formulaire de liste de documents Facture d'achat et créez l'attribut de formulaire FilterByProduct, que nous utiliserons comme paramètre de formulaire lors de son ouverture. Ouvrons maintenant la palette des propriétés de l'attribut principal du formulaire Liste. Mettons le drapeau Demande personnalisée et dans la ligne Configuration de la liste cliquez sur Ouvrir.

Dans le champ Demande, saisissez le texte de demande suivant :

CHOISIR

Document Réception Facture. Numéro,

Document Réception Facture.Date

DEPUIS

Document.ReceiptInvoice AS DocumentReceiptInvoice

Réception du document Invoice.Products.Product = &Product

Dans la requête, nous utilisons le paramètre Item, qui recevra un lien vers la ligne actuelle de la liste d'articles, contenue dans le paramètre du formulaire de liste de factures FilterBy Item. Pour ce faire, dans le gestionnaire d'événements du formulaire de liste OnOpen, nous écrirons du code pour définir la valeur du paramètre de requête Product :

&SurClient

Procédure d'ouverture (échec)

List.Parameters.SetParameterValue("Produit", FilterByProduct);

Fin de la procédure

Ici Liste.Options est une liste de paramètres de demande de liste dynamique pour l'attribut List. La valeur du paramètre Product est définie de manière égale à la valeur du paramètre de formulaire FilterByProduct.

En conséquence, d'un simple clic Factures de réception sous la forme d'une liste d'articles, nous recevrons une liste des seules factures contenant l'article actuellement sélectionné dans la liste d'articles.

Un exemple de démonstration pour la 3ème option se trouve dans le répertoire 1CITS/EXE/FAQ/OpenFormWithSelection.dt. L'exemple a été réalisé sur la plateforme version 8.2.9.356.

Sélection sur les formulaires gérés dans 1C 8.3

L'article discutera des options d'installation de la sélection dans les formulaires gérés 1C 8.3. La sélection d'une liste dynamique peut être définie de manière statique ou dynamique, dans l'interface utilisateur ou le configurateur. Nous examinerons toutes les options de sélection ci-dessous.

  • Sélection des paramètres dans le configurateur

Sélection des paramètres en mode utilisateur

Une liste dynamique, par opposition à un tableau ou un arbre de valeurs, est une solution plus adaptée pour implémenter des formulaires contenant des listes, car La liste dynamique offre la plus large gamme d'outils pour travailler avec la sélection, le regroupement de champs et le tri. Cette sélection peut être effectuée en travaillant en mode utilisateur ou via le configurateur, le principe est le même.

Pour paramétrer la sélection en mode entreprise, vous devez appeler la commande « Personnaliser la liste ».

Une fenêtre s'ouvrira.


L'onglet « sélection » présente une liste de champs qui se trouvent dans la liste actuelle. Sélectionnez les champs de liste par lesquels nous filtrerons. Cela peut être fait en double-cliquant ou en utilisant le glisser-déposer.


Nous définissons le type et la valeur de la comparaison, cliquez sur « Terminer l'édition », la sélection est définie.


Lorsque vous configurez la sélection en mode entreprise, des champs dits de sélection rapide sont automatiquement créés sur le formulaire de liste.


Pour que la plateforme 1C crée automatiquement des champs de sélection rapide, lors du développement d'un formulaire dans le configurateur, vous devez spécifier un groupe de paramètres utilisateur.


Cette sélection sera enregistrée uniquement pour l'utilisateur actuel, ce qui permet une personnalisation flexible de la liste dynamique. Cependant, si la tâche consiste à effectuer une sélection fixe pour une liste spécifique pour tous les utilisateurs du système, nous ne pouvons la résoudre que via le configurateur.

Sélection des paramètres dans le configurateur

En travaillant dans le configurateur, nous pouvons définir deux types de sélection de liste dynamique – fixe et dynamique. La sélection fixe peut être configurée une fois, dynamique ou programmatique peut être définie en fonction des données du système.

Le principe de définition d'une sélection fixe dans le configurateur n'est pas différent de sa définition en mode utilisateur décrit ci-dessus. Pour définir la sélection, nous devons ouvrir les paramètres de la liste dynamique.


Une fenêtre s'ouvrira.


La sélection est définie de la même manière qu'en mode utilisateur.

L'option « Inclure dans les paramètres utilisateur » détermine si la sélection définie dans le configurateur sera disponible en mode utilisateur via l'élément de menu « Personnaliser la liste ».


Sélection dynamique (logicielle)

Il est souvent nécessaire de définir la sélection par programme, par exemple lors de l'ouverture d'un formulaire de sélection, lorsque nous devons ouvrir un formulaire contrôlé avec sélection. Un paramètre est transmis au formulaire et la sélection est définie en fonction de ce paramètre. Un exemple courant est la sélection des éléments de répertoire par propriétaire.

Méthodes

Si la configuration en cours de développement contient le sous-système BSP « Basic Functionality », la sélection des logiciels dans la liste dynamique peut être installée selon la méthode standard :

GeneralPurposeClientServer.SetDynamicListSelectionElement()

Signature de cette méthode :

Liste dynamique Tapez : DynamicList – La liste dans laquelle vous souhaitez définir la sélection.

Nom de domaine Type : Chaîne – Le champ par lequel vous souhaitez définir la sélection.

Valeur correcte Type : Arbitraire – Valeur de sélection (Facultatif. Valeur par défaut : Non défini. Remarque : Si vous transmettez Non défini, la valeur ne sera pas modifiée).

VoirComparaison Type : Type de comparaison DataComposition – Condition de sélection.

Performance Type : String – Représentation d’un élément de composition de données (Facultatif. Valeur par défaut : non défini. Si spécifié, seul l'indicateur d'utilisation avec la représentation spécifiée est imprimé (aucune valeur n'est imprimée). Une chaîne vide doit être transmise pour effacer afin que la valeur soit à nouveau imprimée.)

Usage Type : Booléen – Indicateur pour utiliser cette sélection (Facultatif. Par défaut : non défini).

Mode d'affichage Type : ItemDisplayModeDataCompositionSettings – Comment cette sélection est affichée à l'utilisateur. Valeurs possibles:

  • Mode d'affichage des éléments Paramètres de disposition des données. Accès rapide – Dans le groupe de paramètres rapides au-dessus de la liste.
  • Mode d'affichage des éléments Paramètres de disposition des données Normal – Dans les paramètres de la liste (dans le sous-menu Plus).
  • ElementDisplayModeDataCompositionSettings.Inaccessible – Empêche l’utilisateur de modifier cette sélection.

IdentifierUserSettings Type : String – Identifiant unique pour cette sélection (Utilisé pour communiquer avec les paramètres utilisateur).

Pour supprimer une valeur de sélection, vous devez utiliser la méthode standard :

Serveur client à usage général. RemoveGroupElementsSelectionDynamicList()

Signature de cette méthode :

Liste dynamique Tapez : DynamicList – attribut de formulaire pour lequel vous souhaitez définir la sélection.

Nom de domaine Type : String – nom du champ de mise en page (non utilisé pour les groupes).

Performance Type : String – Représentation d’un champ de mise en page.

S'il n'y a pas de BSP dans le système, la sélection peut être définie indépendamment à l'aide de l'objet DataComposition Field.

Élément de sélection = List.Selection.Elements.Add(Type("Élément de sélection DataComposition")); Sélection Element.LeftValue = NewDataCompositionField("Name"); Sélection Element.Comparison Type = DataComposition Comparison Type.Equal ; Sélection Element.DisplayMode = ElementDisplayModeDataCompositionSettings.QuickAccess ; // Élément de sélection facultatif. RightValue = "Ivanov";

Cette sélection sélectionnera les lignes dans lesquelles la valeur « Nom complet » = « Ivanov ».

Pour utiliser les « ET », « OU », « NON » logiques, le type de données DataCompositionSelectionElementGroup est prévu

Groupe de sélection = List.Selection.Elements.Add(Type("Groupe d'éléments de sélection DataComposition")); SelectionGroup.GroupType = DataCompositionSelectionElementGroupType.GroupOR; Élément de sélection = Groupe de sélection.Éléments.Add(Type("Élément de sélection de composition de données")); Sélection Element.LeftValue = NewDataCompositionField("Name"); Sélection Element.Comparison Type = DataComposition Comparison Type.Equal ; Sélection Element.RightValue = "Ivanov" ; Élément de sélection = Groupe de sélection.Éléments.Add(Type("Élément de sélection de composition de données")); Sélection Element.LeftValue = NewDataCompositionField("Name"); Sélection Element.Comparison Type = DataComposition Comparison Type.Equal ; SelectionElement.RightValue = "Petrov";

Cette sélection sélectionnera les lignes dans lesquelles la valeur « Nom complet » = « Ivanov » ou « Petrov ».

La sélection dans une liste dynamique peut également se faire en modifiant le texte de la demande de liste dynamique. Cette option fonctionne lorsque la liste dynamique est réalisée via une « requête personnalisée ».


Pour ce faire, ajoutez la condition « OÙ EST LE VRAI » au texte de la requête...


Comme vous pouvez le constater, cette approche est plus compacte en termes d’écriture de code. Plus les conditions de sélection dans la partie tabulaire que nous souhaitons définir sont complexes, plus l'option utilisant la sélection via l'élément de sélection de composition des données sera lourde. Cependant, l'exemple de modification du texte de la requête a ses inconvénients : cette implémentation ne résiste pas aux modifications de code. Par exemple, vous avez fait une telle implémentation et avez oublié, mais si à l'avenir vous souhaitez modifier le texte de la requête en ajoutant un opérateur après WHERE (ORDER, GROUP), vous devez vous rappeler que le code du programme contient :

List.QueryText = List.QueryText + " Et DirectoryUsers.Full Name V(""Ivanov"",""Petrov"")";

Si cela n'est pas pris en compte, il y aura une erreur, mais pour éviter cela, vous pouvez le modifier vers une implémentation différente. Nous ajoutons la condition suivante au texte de la requête :

OÙ (PAS &SelectionInstalled OU DirectoryUsers.Name IN (&PermisName))

List.Parameters.SetParameterValue("SelectionSet", Nom complet.Quantity() > 0); List.Parameters.SetParameterValue("Nom complet autorisé", Nom complet);

Ici, le nom complet est un tableau.

Comme vous pouvez le voir, 2 lignes de code contre 10. La méthode à choisir dépend de la tâche d'application spécifique.

Code 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="Accepté";
DirectoryList.Selection.Status.Set();

Pour 1C 8.2 :
Il existe plusieurs façons d'ouvrir un formulaire de liste avec une sélection prédéfinie. Regardons-les dans l'ordre :

1. La première méthode est que lors de l'ouverture du formulaire, vous pouvez définir le paramètre Formulaire de sélection et ouvrir le formulaire de liste avec ce paramètre. Le paramètre Selection représente la structure. Les noms des éléments correspondent aux noms des champs par lesquels la sélection est effectuée, et les valeurs contiennent les valeurs de sélection. Il s'agit d'une option d'extension de formulaire gérée par liste dynamique. Autrement dit, il existe pour les formulaires dont l'attribut principal est un attribut de type Liste dynamique, par exemple les formulaires de liste et les formulaires de sélection.

A l'ouverture du formulaire, la sélection sera effectuée en fonction du champ spécifié.
Code 1C v 8.2 UP // Par exemple, dans l'exemple suivant, une liste de factures est ouverte avec sélection par le champ Numéro égal à 333.
Valeur de sélection = Nouvelle structure("Nombre", "333");
SelectionParameters = Nouvelle Structure("Sélection", SelectionValue);

OpenForm("Document. Réception de facture. Formulaire de liste", Options de sélection);

// Par exemple, l'exemple suivant ouvre une liste de factures
// avec sélection par le champ Entrepreneur égal à « Cornes et sabots OJSC ».
Valeur de sélection = Nouvelle structure("Contrepartie", "Cornes et sabots OJSC");
SelectionParameters = Nouvelle Structure("Sélection", SelectionValue);
OpenForm("Document. Réception de facture. Formulaire de liste", Options de sélection);

2. Vous pouvez ouvrir un formulaire de liste sans paramètres :
Code 1C v 8.2 UE OpenForm("Document. Reçu Invoice.List Form");

Et puis, dans le gestionnaire d'événements du formulaire pour la liste des factures When CreatedOnServer, écrivez du code qui crée une sélection dans la liste dynamique, qui est l'attribut principal du formulaire :
Code 1C v 8.2 UP et sur serveur

Élément de sélection = List.Selection.Elements.Add(Type("Élément de sélection DataComposition"));
SelectionElement.LeftValue = NewDataCompositionField("Nombre");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible ;
SelectionElement.RightValue = "000000001";
Fin de la procédure

&Sur le serveur
Procédure lors de la création sur serveur (échec, traitement standard)
Élément de sélection = List.Selection.Elements.Add (Type
(« DataCompositionSelectionElement ») );
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More ;
SelectionElement.Use = True ;
SelectionElement.RightValue = 150 000 ;
Fin de la procédure

Les avantages de cette méthode sont que la vue comparative pour la sélection, vous pouvez définir non seulement Égal, comme dans le premier cas, mais aussi Plus, Moins, etc.

Mais cette méthode présente aussi un inconvénient très important : avec cette sélection, le formulaire s'ouvrira toujours. D'où qu'elle soit appelée. Par conséquent, ce formulaire ne doit pas être désigné comme le formulaire principal. Et si, néanmoins, c'est le principal, alors avant d'installer la sélection, il est nécessaire de fournir une sorte d'analyse de l'endroit où ce formulaire s'ouvre. Par exemple, analyser les paramètres du formulaire.

3. Enfin, la condition de sélection peut être placée dans une requête personnalisée qui sélectionne les données pour une liste dynamique. Par exemple, nous devons ouvrir une liste de factures contenant l'article mis en surbrillance dans la liste des articles.

Pour cela, sous forme de liste d'éléments, créez une commande et le bouton correspondant Réceptionner les factures.

Remplissons le gestionnaire d'exécution de cette commande comme suit :
Code 1C v 8.2 UP &SurClient
Procédure RéceptionsFactures (Commande)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow ;
ListForm.Open();

Fin de la procédure

Dans ce gestionnaire, nous recevons le formulaire pour la liste des factures et transmettons le lien vers l'élément actuel dans la liste d'articles au paramètre de formulaire FilterByProduct et ouvrons le formulaire avec ce paramètre.

Ensuite, nous allons créer un formulaire pour la liste des documents : Reçu Invoice et créer un attribut de formulaire FilterBy Product, que nous utiliserons comme paramètre du formulaire lors de son ouverture. Ouvrons maintenant la palette des propriétés de l'attribut principal du formulaire Liste. Définir l'indicateur ArbitraryRequest et dans la ligne Paramètres de la liste, cliquez sur Ouvrir.

Dans le champ Demande, saisissez le texte de demande suivant :
Code 1C v 8.2 SÉLECTION HAUT
Document Réception Facture. Numéro,
Document Réception Facture.Date
DEPUIS
Document.ReceiptInvoice AS DocumentReceiptInvoice

Réception du document Invoice.Products.Product = &Product

Dans la requête, nous utilisons le paramètre Item, qui recevra un lien vers la ligne actuelle de la liste d'articles, contenue dans le paramètre du formulaire de liste de factures FilterBy Item. Pour ce faire, dans le gestionnaire d'événements du formulaire de liste OnOpen, nous écrirons du code pour définir la valeur du paramètre de requête Product :
Code 1C v 8.2 UP
&SurClient
Procédure d'ouverture (échec)

List.Parameters.SetParameterValue("Produit", FilterByProduct);

Fin de la procédure

Ici Liste.Options est une liste de paramètres de demande de liste dynamique pour l'attribut List. La valeur du paramètre Product est définie de manière égale à la valeur du paramètre de formulaire FilterByProduct.

Par conséquent, en cliquant sur le bouton Réception des factures dans le formulaire de liste d'articles, nous recevrons une liste uniquement des factures contenant l'article actuellement sélectionné dans la liste d'articles.

Informations extraites du site