Comment ouvrir un formulaire de liste avec une sélection ? Comment ouvrir un formulaire de liste avec sélection ? Sélection ou formulaires réguliers 1c.

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éceptionFactures(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

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

  1. Première façon est-ce que lors de l'ouverture d'un formulaire, vous pouvez définir un paramètre de formulaire Sélection, et ouvrez le formulaire de liste avec ce paramètre. Paramètre Sélection représente une 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
    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 Contrepartie égal à « OJSC Horns and Hooves ».

Valeur de sélection = Nouvelle structure (« Contrepartie » , "Cornes et sabots JSC");
Options de sélection= 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. Réception de facture. Formulaire de liste » );

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 le serveur(Refus, Traitement standard)
Élément de sélection = Liste . Sélection. Éléments. Ajouter (Tapez
(« DataCompositionSelectionElement ») );
Élément de sélection .LeftValue = Nouveau Champ de présentation des données("Montant du document");
Élément de sélection. Vue comparative = Vue de comparaisonDisposition des données. Plus ;
Élément de sélection. utilisation = vrai ;
Élément de sélection. Valeur Droite = 150 000 ;
Fin de la procédure

Les avantages de cette méthode sont que VoirComparaison la sélection peut être définie non seulement Équivaut à, comme dans le premier cas, et Plus, Moins et ainsi de suite.

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. Et 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 ConsommablesFactures

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

&SurClient
Procédure ConsommablesFactures(Équipe )
ListForm = GetForm("Document.Invoice.ListForm");
Formulaire de liste. FilterByProduct = Articles . Liste . LigneActuelle ;
Formulaire de liste. Ouvrir();
Fin de la procédure

Dans ce gestionnaire, nous recevons le formulaire de la liste des factures et le transmettons au paramètre du formulaire Filtrer par produit créez un lien vers l'élément actuel dans la liste des éléments et ouvrez le formulaire avec ce paramètre.
Ensuite, nous créerons un formulaire de liste de documents Facture de vente et créez les attributs du formulaire Filtrer par produit, que nous utiliserons comme paramètre de formulaire lors de son ouverture. Ouvrons maintenant la palette des propriétés des principaux attributs du formulaire Liste. Mettons le drapeau Demande personnalisée et en
doubler Configuration de la liste appuyons Ouvrir.

Sur le terrain Demande Entrons le texte de requête 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 Produit, vers laquelle sera envoyé un lien vers la ligne courante de la liste des éléments contenus dans l'attribut du formulaire liste des factures Filtrer par produit. Pour ce faire, dans le gestionnaire d'événements du formulaire de liste QuandOuvertureÉcrivons le code pour définir la valeur du paramètre de requête Product :

&SurClient
Procédure d'ouverture (échec)
Liste . Possibilités . Définir la valeur du paramètre("Produit", FiltreParProduit);
Fin de la procédure

Ici Liste.Options— il s'agit d'une liste de paramètres de demande de liste dynamique pour l'attribut List. Valeur du paramètre Produit est égal à la valeur du paramètre de formulaire Filtrer par produit. En conséquence, d'un simple clic Factures 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.

— il s'agit d'une liste de paramètres de demande de liste dynamique pour l'attribut List.

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 ait été 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.

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 de la définition 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.