Installation programmatique de la requête

La configuration de la sélection 1C dans une liste dynamique n'est pas aussi difficile que de nombreux utilisateurs le pensent au départ. De tels configurateurs sont également utilisés pour les tableaux de valeurs. Dans le logiciel 1C, il est souvent nécessaire de trier les données dans des graphiques et des cellules selon certains critères.

Comment définir la sélection sur une liste ?

Vous pouvez créer une sélection de deux manières : sous la forme de la liste elle-même ou l'enregistrer par programme. Dans le premier cas, vous devez ajouter une liste dynamique 1C 8 au formulaire, définir une table principale pour celle-ci, puis accéder à ses propriétés. Le formulaire géré vous permet de travailler avec une grande variété de valeurs. Là, vous devez trouver l'élément « Paramètres de la liste » et accéder à ce menu. Dans la fenêtre qui s'ouvre après la transition, vous pouvez définir manuellement n'importe quel trieur pour la liste que vous utilisez, puis gérer la sélection générée par programme.

Pour installer un trieur dynamique par programme, sachez que la sélection dans 1C est considérée comme une propriété d'une liste dynamique. Pour ajouter une sélection en utilisant cette qualité, vous devez ajouter un nouvel élément à la propriété selection. Pour que tout fonctionne, vous devez définir le paramètre dans les champs de sélection de valeur de droite et de gauche, ainsi que dans le champ « Type de comparaison ». Il est important de saisir la valeur « true » dans le champ d'utilisation. De cette façon, vous pouvez créer la sélection la plus simple. En ajoutant des conditions dans d'autres champs, vous pouvez le rendre plus complexe et le personnaliser selon vos besoins.

Sélections dans le tableau des valeurs 1C

Pour définir une sélection dans un tableau, vous pouvez utiliser l'une des nombreuses options suivantes. Vous pouvez effectuer une sélection manuelle : parcourez le tableau et masquez toutes les lignes dont vous n'avez pas besoin. Mais il s’agit d’un processus très laborieux que tout le monde ne veut pas entreprendre. Cette méthode ne convient qu'à ceux qui commencent tout juste à travailler avec 1C et ne peuvent pas encore maîtriser des techniques plus complexes mais productives.

La deuxième option de sélection de tableau fonctionne via une méthode de tableau appelée « rechercher des lignes ». Un inconvénient important de cette méthode est que le seul type de comparaison sera « égal », ce qui réduit considérablement la possibilité d'utiliser la sélection.

La méthode la plus rationnelle de sélection d'une table peut être effectuée via le générateur de requêtes.

Autres fonctionnalités d'une liste dynamique en 1C

Les listes dynamiques offrent de nombreuses possibilités de travailler avec des données qui n'étaient pas disponibles dans 1C 7. L'un des plus pratiques consiste à créer des formulaires de sélection. Par exemple, dans 1C : Comptabilité, il faut aller dans le menu « Nomenclature » et ajouter un nouveau formulaire de sélection, en le désignant comme le principal.

Pour définir des paramètres dans une liste dynamique :

  • Vous pouvez utiliser des formulaires de sélection ;
  • Lorsque vous créez ce formulaire, une liste de sélection dynamique apparaîtra automatiquement dans le champ ;
  • En allant dans ses propriétés, vous pouvez voir l'élément « Demande personnalisée ». C'est cette requête qui permet de profiter de tous les avantages d'une liste dynamique ;
  • Vous pouvez saisir vos paramètres dans cette requête ;
  • En cochant la case et en ouvrant cette fenêtre, vous pourrez voir une nouvelle demande, avec tous les champs du référentiel d'articles ;
  • En cliquant sur le bouton du générateur de requêtes, vous pouvez modifier le contenu de cette liste.

Pour ajouter votre propre demande à la liste déroulante, vous devez accéder à l'onglet Paramètres. Dans le premier onglet, vous verrez la possibilité de faire n'importe quelle sélection en fonction de vos besoins.

Installation programmatique de la requête

Vous pouvez également définir la demande par programme. Pour cela, il vous suffit de saisir quelques lignes dans le module formulaire. Après cela, il vous suffit de double-cliquer sur la ligne actuelle pour transférer les lignes avec les valeurs sélectionnées vers le document.

Dans 1C, une liste de valeurs sur un formulaire est un excellent moyen de rendre le travail avec le logiciel 1C plus rationnel et productif. Cela vous permet d'optimiser tout le travail dans l'entreprise.

Imprimer (Ctrl+P)

Liste dynamique

1. Informations générales

Une liste dynamique est un type de données spécial qui vous permet d'afficher des informations arbitraires provenant de tables de base de données sur un formulaire. Pour ce faire, vous devez spécifier la table à partir de laquelle vous souhaitez afficher les données ou décrire la sélection obtenue dans un langage de requête.
Le mécanisme est basé sur un système de composition de données et offre des capacités de tri, de sélection, de recherche, de regroupement et de formatage conditionnel des données reçues. Dans ce cas, la source de données est une requête qui est soit générée automatiquement par le système (sur la base des données spécifiées), soit écrite manuellement par le développeur.

Riz. 1. Options pour créer une liste dynamique

Lors de la création d'attributs de formulaire du type Liste dynamique un développeur peut choisir deux manières de former une requête de données :
● En spécifiant la table principale - dans ce cas, il vous suffit de spécifier la table (propriété Table principale) à partir de laquelle vous souhaitez recevoir des données, et le système générera automatiquement une requête pour les données (voir la partie droite de la Fig. 1).
● Générer manuellement une requête - pour cela, vous devez définir la propriété de requête personnalisée (voir le côté gauche de la Fig. 1). Après cela, la génération manuelle d'une demande pour obtenir des données de l'infobase sera disponible.
Une requête peut récupérer des données de plusieurs tables, vous pouvez donc spécifier une table principale. Cela permet à la liste dynamique de déterminer quelles données sont principales et lesquelles sont secondaires, et de sélectionner et d'afficher correctement les informations, ainsi que de fournir des commandes standard. Cependant, s'il est impossible de déterminer la table principale dans la requête, elle ne peut pas être spécifiée, mais alors
la liste dynamique ne fournira pas de commandes liées à la table principale. De plus, dans ce cas (sans préciser la table principale), l'efficacité d'obtention des données par une liste dynamique sera considérablement réduite.
Pour améliorer les performances, il est recommandé que toutes les jointures utilisées dans une requête personnalisée uniquement pour obtenir des données supplémentaires soient rendues facultatives à l'aide d'une extension du langage de requête du système de composition de données.
Pour une liste dynamique, qui est l'attribut principal du formulaire, il est possible de définir des valeurs de sélection à l'aide d'un paramètre de formulaire Sélection. Pour ce faire, il faut que le nom de la propriété structure située dans le paramètre Sélection,
coïncidait avec le nom du champ de sélection de liste dynamique. Dans ce cas, la valeur de la propriété structure sera définie comme la bonne valeur de l'élément de sélection. Si un tableau, un tableau fixe ou une liste de valeurs est passé comme valeur d'un élément du paramètre Sélection d'un formulaire de liste dynamique, alors une condition avec l'option Dans la liste est ajoutée à la sélection, dans la bonne valeur dont une liste de valeurs est placée (en laquelle le tableau et le tableau fixe sont convertis).
Une requête arbitraire dans une liste dynamique peut être une requête dans laquelle un paramètre est utilisé pour générer la valeur d'un champ, par exemple :

CHOISIR
CHOIX
QUAND Livraison.Coefficient = 1 ALORS &Présentation
AUTREMENT Livraison. Coefficient
FIN AS Rapport
DEPUIS

De plus, si le type de la valeur du paramètre diffère du type de l'attribut de l'objet (par exemple, Accessoires1 a du type Nombre, et la valeur du paramètre est de type Doubler), puis pour afficher correctement le champ, vous devez explicitement convertir la valeur du paramètre dans le type souhaité :

CHOISIR
CHOIX
WHEN Delivery.Coefficient = 1 THEN EXPRESS(&Representation AS String(100)) ELSE Livraison. Coefficient
FIN AS Rapport
DEPUIS
Document.Livraison des produits COMMENT livrer

Si le champ par lequel la sélection est définie est désactivé à l'aide d'options fonctionnelles, alors la sélection par un tel champ n'est pas installée, même si la valeur de sélection est transmise en tant que paramètres de formulaire ou liens de paramètres de sélection.
Grâce à la propriété Lecture dynamique des données, vous indiquez à une liste dynamique la nécessité de lire les données par petites portions
(pour plus de détails sur les moyens d'obtenir des données à l'aide d'une liste dynamique et de la mise en cache des données, voir ci-dessous). Quel que soit cet attribut, les conditions suivantes s'appliquent :

● Si le mode d'affichage est défini sur liste hiérarchique, seules les données du groupe actuel et les données de tous les éléments parents (sans enfants) seront lues.
● Si le mode d'affichage arborescent est défini, seules les données des nœuds d'arborescence ouverts seront lues.
● Le chargement unique des données de liste dynamique n'est pas pris en charge si la navigation hiérarchique est définie (la propriété d'affichage est définie sur Arborescence) et l'affichage initial de l'arborescence est défini sur Développer tous les niveaux. Pour obtenir des données, autant de requêtes au serveur seront faites qu'il y a de nœuds dans la liste affichée.
Au sein d'une même récupération de données, une liste dynamique réutilise les tables temporaires précédemment créées si les conditions suivantes sont remplies :
● La requête par lots de liste n'a aucune requête après la requête par lots principale.
● La composition des tables temporaires et des champs qu'elles contiennent est inchangée par rapport à l'exécution précédente de la requête batch.

Dans son travail, la liste dynamique utilise les valeurs des propriétés suivantes des détails des objets de métadonnées :
● le format,
● format d'édition,
● indice,
● signe pour mettre en évidence les valeurs négatives,
● masque,
● signe de mode multiligne,
● signe d'édition avancée,
● mode mot de passe.
Lors de l'affichage et de l'édition de la sélection et des paramètres du système de composition des données, le format d'édition du champ correspondant est utilisé.

2. Limites et fonctionnalités

Lorsque vous définissez la sélection dans une liste dynamique, n'oubliez pas que la sélection n'affecte pas les groupes si le mode d'affichage de la liste dynamique est Liste hiérarchique ou Arborescence. Par « groupes », nous entendons un élément d'un répertoire ou d'un plan de types de caractéristiques dont la propriété ThisGroup est définie sur True.
Les qualifications appliquées automatiquement par une liste dynamique aux détails standards Propriétaire, Parent, Date, Période et CeGroupe sont appliquées
en utilisant les outils standards du système de composition de données. La sélection, appliquée automatiquement par une liste dynamique aux champs clés, peut être appliquée aussi bien par les moyens standards du système de composition des données qu'en ajoutant directement des conditions au texte de la demande. DANS aux champs de la table principale. Grâce à l'application des sélections à l'aide des outils de mise en page, elles peuvent être appliquées à la fois dans les requêtes imbriquées et dans les paramètres des tables virtuelles.

Lors du développement de listes dynamiques, il est recommandé de tester toutes les listes dynamiques avec des requêtes personnalisées. Pendant le processus de vérification, vous devez vous assurer que si une requête de liste contient des requêtes imbriquées ou des tables virtuelles, et qu'elles contiennent des champs avec des alias qui correspondent aux alias des détails standard Propriétaire, Parent, Date, Période, CeGroupe ou des champs clés sont disponibles pour sélection, alors ces champs sont valides et correspondent aux détails standards avec lesquels leur pseudo correspond. Si ce n'est pas le cas, vous devez modifier la demande pour qu'elle corresponde ou
le surnom était différent.
Si vous choisissez de générer manuellement une demande, certaines restrictions sont imposées à la demande :
● L'utilisation de l'instruction FIRST dans une requête de liste dynamique n'est pas prise en charge. Si vous devez utiliser une sélection limitée par le nombre d'enregistrements dans une liste dynamique, vous devez retravailler la requête de génération d'une liste dynamique de manière à ce que le contenu réel de la requête soit placé dans une sous-requête et limiter le nombre d'enregistrements. reçu dans cette sous-requête. Vous pouvez également utiliser une table temporaire au lieu d'une sous-requête.
● La sélection, le tri et le regroupement ne sont pas pris en charge :

  • Selon les détails des parties tabulaires.
  • Afficher les champs.
  • Champ DataVersion.
  • Champ PrédéfiniDataName.
  • Champ de type table du plan comptable.
  • Champ Type de Mouvement de la table du registre d'accumulation.
  • Champ TypeValeurs de la table du plan de type caractéristique.
  • Champ de saisie Type ;
  • Champ de type String (longueur illimitée).
  • Champ de type BinaryData.

● Le tri et le regroupement par champs Subconto ne sont pas pris en charge.<НомерСубконто>et ViewSubconto<НомерСубконто>Tableaux MouvementsSous-conto du registre comptable.
● Le regroupement par champs qui sont des expressions de langage de requête contenant des fonctions d'agrégation n'est pas pris en charge.
● Lorsque la table principale est sélectionnée, la requête de liste dynamique présente les restrictions suivantes :

  • Les jointures ne sont pas prises en charge.
  • La section ORDER BY n'est pas prise en charge. Vous devez utiliser une requête sans table principale ou définir l'ordre nécessaire via les paramètres de liste dynamique.

● Si une liste dynamique est affichée sous forme de liste hiérarchique ou d'arborescence, une entrée ne sera pas affichée sous forme de liste dynamique à moins qu'au moins un parent de cette entrée soit affiché. Autrement dit, pour afficher un élément d'une liste hiérarchique, une liste dynamique doit également afficher tous les parents de cet élément jusqu'en haut de la liste. Dans ce cas, par haut de la liste, nous entendons soit
l'élément racine de l'objet hiérarchique affiché par une liste dynamique, ou l'élément défini comme propriété ParentTopLevel d'une extension de table de formulaire pour une liste dynamique.

L'utilisation des tables suivantes comme table principale d'une liste dynamique n'est pas prise en charge :

● Une table qui ne possède pas de clé identifiant de manière unique chaque entrée de table (une référence pour les tables d'objets et une clé d'entrée pour les tables de registre). Cependant, les tables suivantes peuvent être définies comme table principale d'une liste dynamique (même si elles n'ont pas de clé) :

● Table sous-conto du registre comptable ;
● toutes les tables virtuelles du registre comptable, à l'exception de la table MovementsSubconto ;
● tableaux de valeurs constantes (y compris le tableau Constantes) ;
● tableaux de sources de données externes sans champs clés ;
● tables cubiques de sources de données externes ;
● tableaux du registre d'accumulation :

  • table de révolution;
  • tableau de bilan ;
  • tableau du chiffre d'affaires et des soldes.

● tables de registre de calcul :

  • tableau de la durée de validité réelle ;
  • données de planification ;
  • donnee de base.

● Tableaux de parties tabulaires d'objets ;
● Tableaux d'enregistrement des modifications (utilisés dans les mécanismes d'échange de données) ;
● Tableaux de séquence ;
● Tables de conversion (utilisées dans les mécanismes de règlement périodiques).
● Une table utilisée dans une requête uniquement dans une jointure externe.

En d'autres termes, une liste dynamique avec la table principale spécifiée fonctionnera correctement si, à la suite de l'exécution de la requête,
spécifié comme source de données, le nombre de lignes obtenues à partir de la table principale n'augmente pas (compte tenu de la sélection imposée). Si, à la suite de l'exécution d'une requête, le nombre de lignes obtenues par la requête à partir de la table principale augmente, cela entraînera une violation de l'unicité de la clé des enregistrements de la table affichée par la liste. Dans ce cas, vous devez désactiver l'utilisation de la table de liste dynamique principale.
Lorsque vous travaillez avec une liste dynamique, vous devez prendre en compte les droits d'accès aux détails affichés par la liste :
● Les données des colonnes de liste dynamique marquées avec la propriété Toujours utiliser, mais pour lesquelles l'utilisateur actuel ne dispose pas du droit Afficher, ne sont pas transmises côté client. Accès aux données dans ces colonnes (à l'aide de la propriété CurrentData et de la méthode RowData())
pas possible côté client.
● Si l'utilisateur actuel ne dispose pas du droit Afficher sur un champ clé d'une liste dynamique, la récupération des données de cette liste dynamique entraîne une erreur de violation d'accès.
Pour une liste dynamique qui affiche une liste d’énumération, il n’existe aucune option permettant de personnaliser la liste de manière interactive.
La composition des colonnes et les paramètres de la liste dynamique sont associés aux champs de requête à l'aide d'alias des champs de sélection. Si un alias n'est pas explicitement spécifié dans une requête pour un champ de sélection et que le champ est un champ système, alors le nom du champ pour la version anglaise de la langue intégrée est utilisé comme alias.
La relation spécifiée signifie que lors d'une modification (ou d'une spécification explicite d'un alias pour un champ pour lequel un alias automatique a été utilisé)
alias du champ de requête qui génère les données de la liste dynamique, les paramètres des attributs de la liste dynamique seront perdus, les éléments du formulaire « perdront » les détails affichés, les paramètres de la liste dynamique deviendront incorrects, etc.
Si la source de données d'une liste dynamique est un tableau (régulier ou virtuel), qui permet de paramétrer une sélection par période, alors si l'utilisateur définit la période d'affichage dans une telle liste dynamique (commande Définir l'intervalle de date...),
les limites de période spécifiées seront définies comme valeurs de sélection ou paramètres de table virtuelle. Si au moyen d'une extension de langue
requêtes pour le système de composition de données, les noms des paramètres de la table virtuelle ont été explicitement spécifiés - les paramètres avec le spécifié
des noms. Tableaux pour lesquels il est possible de contrôler la période d'affichage ou de traitement des données :
● les tables de registre (principales ou virtuelles), pour lesquelles il est possible de sélectionner par période (pour le registre de calcul - par période d'inscription) ;
● tableaux principaux des documents, processus métiers et tâches ;
● tableaux principaux des journaux de documents ;
● Tableaux de séquences principaux, tableaux de limites de séquences.
Le paramètre de requête de liste dynamique peut être un tableau ou une liste de valeurs. Toutefois, si le paramètre est une liste de valeurs, seule la première valeur de la liste sera utilisée comme valeur de sélection. Si une liste dynamique utilise une requête avec des paramètres, le réglage initial des valeurs des paramètres doit être effectué dans le gestionnaire OnCreateOnServer.
Lorsque vous affichez des données de liste dynamique, gardez les points suivants à l'esprit :
● Lorsque vous modifiez par programme les propriétés d'une liste dynamique, les panneaux de commandes associés à la liste ne sont pas automatiquement renseignés.
avec cette liste dynamique.
● Si plusieurs champs sont regroupés dans un groupe avec le mode de regroupement dans une cellule et que dans les champs regroupés il y a un champ qui est affiché sous forme de case à cocher, alors cette case à cocher sera toujours affichée en premier dans la cellule résultante (à gauche de la case à cocher). texte).
Dans une liste dynamique, lors de la détermination du type de données pour les champs dont les expressions incluent des paramètres, des champs ou des littéraux, le type résultant est déterminé par les types des champs et des littéraux. Si le type de valeur du paramètre n’est pas inclus dans le type de données résultant, sa valeur sera tronquée.
Par exemple, dans l'exemple suivant, le champ sera de type Number.

CHOIX
QUAND C'EST UN MENSONGE
PUIS 5
SINON
&Paramètre
FIN

Si vous définissez le paramètre Paramètre sur une valeur d'un autre type, la liste dynamique de ce champ recevra la valeur 0 (la valeur par défaut pour le type Nombre).
Si dans une telle situation, vous devez sélectionner un paramètre d'un type différent, il est recommandé d'utiliser la construction du langage de requête EXPRIMER. Par exemple,
si dans l'exemple ci-dessus vous devez transmettre une chaîne ne dépassant pas 100 caractères dans le paramètre, alors vous devez remplacer la simple indication du paramètre par une expression avec un transtypage de type explicite :

CHOIX
QUAND C'EST UN MENSONGE
PUIS 5
SINON
EXPRESS(&Paramètre AS String(100))
FIN

Si le texte arbitraire d'une requête de liste dynamique utilise des paramètres dans les expressions des champs de sélection, vous devez indiquer explicitement le type de paramètres à l'aide de la construction EXPRIMER. Par exemple, au lieu de &Nomenclature AS Nomenclature utiliser
EXPRESS(&Nomenclature AS Annuaire.Nomenclature) AS Nomenclature. Sinon, la recherche via la barre de recherche peut fonctionner
incorrect ou produire des erreurs.

3. Méthodes de récupération et de mise en cache des données avec une liste dynamique

Lors de l'obtention des données à afficher, une liste dynamique utilise l'une des trois méthodes suivantes :
1. La lecture de la base de données s'effectue par morceaux avec un nombre d'éléments de données légèrement supérieur au nombre de lignes affichées simultanément par la liste (mais pas inférieur à 20). Les données ne sont pas mises en cache sur le serveur.
2. La lecture de la base de données s'effectue par pages de 1 000 éléments de données. Les données sont mises en cache sur le serveur. Les données hiérarchiques sont mises en cache : pas plus de 2 pages d'éléments sont mises en cache pour chaque parent. Pas plus de 20 pages d’éléments sont mises en cache par liste dynamique. La mise en cache sera activée par une liste dynamique pour les tables suivantes :
● Critères de sélection ;
● Toutes les tables du registre comptable, à l'exception de la table principale et de la table MovementsSubconto ;
● Toutes les tables du registre d'accumulation, à l'exception de la table principale ;
● Tous les tableaux du registre d'information, à l'exception du tableau principal ;
● Toutes les tables du registre de calcul, à l'exception de la table principale ;
● Tableau virtuel des tâches par intervenant ;
● Tableaux de sources externes sans clés ;
● Cubes provenant de sources externes.

3. La lecture de la base de données s'effectue par pages de 1 000 éléments. La première partie est égale à 1 page. Chaque partie suivante augmente d'une page (lorsque la fin de l'échantillon précédent est atteinte). Plus le « point de vue » se rapproche de la fin des données affichées, plus l'échantillon lu dans la base de données est grand, devenant finalement égal à toutes les données affichées. Les données sont mises en cache sur le serveur. Le nombre maximum d'entrées dans le cache et la liste dynamique est de 1 000 000.
En fonction de ce qui est sélectionné par la table principale de la liste dynamique et de la valeur prise par la propriété Lecture dynamique, l'une ou l'autre méthode de lecture des données est utilisée :

● L'une des tables suivantes est spécifiée comme valeur de la propriété Table principale : plan d'échange, répertoire, liste de documents, journal de documents, plan de types de caractéristiques, plan de comptes, plan de types de calcul, processus métier, tâche, table de points du processus métier :



● L'une des tables suivantes est spécifiée comme valeur de la propriété Table principale : la table principale du registre d'information, le registre d'accumulation, le registre comptable, le registre de calcul, la table virtuelle du registre comptable MovementsSubconto :

● Propriété de lecture dynamique :
● Installé : la méthode 1 est utilisée (la description des méthodes est donnée ci-dessus).
● Réinitialisation : la méthode 2 est utilisée (la description des méthodes est donnée ci-dessus).

● La propriété Table principale contient la table des critères de sélection ou la table des tâches par exécuteur (Tasks By Performer) :
● Clé identifiant une ligne du tableau : Lien.

● La propriété Main table spécifie la table virtuelle du registre d'informations SliceFirst ou SliceLast :
● Clé identifiant une ligne du tableau : RecordKey.
● La propriété Lecture dynamique n'est pas applicable.
● La méthode 2 est utilisée (la description des méthodes est donnée ci-dessus).

● La propriété Table principale est définie sur l'une des tables de registre virtuel, à l'exception de celles répertoriées ci-dessus :

● La propriété Lecture dynamique n'est pas applicable.

● La propriété Table principale n'est pas spécifiée, une requête arbitraire est utilisée :
● Clé identifiant une ligne du tableau : Numéro.
● La propriété Lecture dynamique n'est pas applicable.
● La méthode 3 est utilisée (la description des méthodes est donnée ci-dessus).

Pour l'affichage, les données sont transférées au client par portions dont la taille est similaire à la taille des portions de la 1ère méthode de lecture des données (décrite au début de cette section).
Lorsque vous créez un formulaire contenant une liste dynamique, 45 éléments de données pour chaque liste dynamique visible sont initialement transmis au client (si la liste contient plus de 45 éléments). Si la liste dynamique affiche plus de 45 lignes, un appel serveur supplémentaire sera effectué à l'ouverture du formulaire pour récupérer les données manquantes.

4. Paramètres de liste dynamique

Paramètres de la liste de propriétés - un clic sur le lien hypertexte Ouvrir ouvre un formulaire permettant de configurer l'affichage d'une liste dynamique. La configuration d'une liste s'effectue de la même manière que des opérations similaires dans un système de composition de données.


Riz. 2. Style conditionnel d'une liste dynamique

Lors de la mise en place d'une liste dynamique dans la configuration, le développeur de l'application a la possibilité d'effectuer les opérations suivantes :
● définissez les champs selon lesquels vous souhaitez trier ;
● décrire la sélection des données dans la liste ;
● spécifier les paramètres d'apparence conditionnelle ;
● définissez les champs selon lesquels vous souhaitez regrouper les données.
Il est logique de confier le tri au développeur si vous n'êtes pas satisfait du tri par défaut installé par le système.

CONSEIL. Il ne faut pas oublier qu'une mauvaise sélection des champs de tri (ainsi que la sélection et le regroupement des données) affecte négativement l'efficacité de l'échantillonnage dynamique.
Du point de vue d'un développeur d'applications, les paramètres de liste dynamique se composent de plusieurs parties interconnectées. La propriété principale grâce à laquelle vous pouvez gérer les paramètres d'une liste dynamique est Paramètres de l'éditeur de liens. Cet objet contient trois ensembles de paramètres qui, lors de l'exécution du système, déterminent les paramètres finaux appliqués à la liste dynamique :
● Paramètres – paramètres créés en mode Configurateur. La propriété Order de la liste dynamique fournit un accès rapide à la propriété Settings.Order du générateur de paramètres de la liste dynamique, de sorte que les constructions suivantes sont équivalentes :
List.Order et List.SettingsLinker.Settings.Order ;
● UserSettings – il s'agit de paramètres modifiés par l'utilisateur en mode 1C:Enterprise ;
● Paramètres fixes – ces paramètres sont définis à partir de la langue intégrée. Cette propriété contient également des valeurs de sélection qui sont transférées au formulaire à l'aide de ses paramètres. Les propriétés de liste dynamique Sélection, Options, Apparence conditionnelle fournissent un accès rapide aux paramètres fixes du générateur de paramètres de liste dynamique. Autrement dit, ces appels sont équivalents :
List.Settings Composer.FixedSettings.Selection et List.Selection.
Lors de la création des paramètres finaux pour une liste dynamique, diverses options de paramètres sont combinées comme suit :
● Si un type de paramètre est entièrement marqué comme personnalisé, les paramètres résultants incluent les paramètres personnalisés.
(List.ComposerSettings.UserSettings). De plus, si des éléments de paramètres sont marqués comme indisponibles, ces paramètres seront alors placés dans les paramètres résultants de la propriété List.Settings Composer. Paramètres.
● Si un type de paramètre est marqué comme personnalisé, non pas entièrement, mais élément par élément, alors :
● Les éléments marqués comme personnalisés seront inclus dans les paramètres résultants de la propriété List.SettingsComposer.CustomSettings.
● Les éléments marqués comme indisponibles seront inclus dans les paramètres résultants de la propriété List.SettingsComposer.Settings.
● Les paramètres fixes (List.SettingsComposer.FixedSettings) sont ajoutés aux paramètres résultants « tels quels ». Dans le même temps, il est inacceptable que les paramètres fixes et utilisateur contiennent des paramètres du même nom, par exemple une sélection avec la même valeur gauche dans la condition.

Si les paramètres de la liste dynamique contiennent des paramètres désactivés à l'aide d'options fonctionnelles, ces paramètres seront supprimés de la liste des paramètres disponibles lorsque les données de la liste dynamique seront récupérées.
Le contrôle des paramètres qui seront disponibles pour l'utilisateur et de ceux qui ne le seront pas se fait dans la fenêtre des paramètres de liste dynamique.


Riz. 3. Contrôler l'inclusion dans les paramètres utilisateur

La case à cocher en bas de la fenêtre (voir Fig. 3) est chargée de placer tout le type de paramètres dans les paramètres (normaux ou rapides). Cette fonctionnalité est disponible pour la sélection, le classement, le regroupement et la conditionnalisation. Si les paramètres sont spécifiés avec le mode d'édition Sélection rapide, alors dans la propriété Groupe de paramètres utilisateur du tableau du formulaire affichant la liste dynamique, vous devez spécifier un groupe vide du formulaire dans lequel les éléments associés aux paramètres utilisateur rapides de la liste dynamique sera localisée. Si le groupe n'est pas spécifié, les paramètres utilisateur rapides ne seront pas affichés sur le formulaire. Il est également possible d'invoquer explicitement la création de paramètres personnalisés à l'aide du langage intégré à l'aide de la méthode CreateCustomSettingsFormItems() de l'extension de liste dynamique.
Il est également possible de choisir de placer ou non des éléments de paramètres spécifiques dans les paramètres utilisateur. Cette fonctionnalité est disponible pour les éléments de sélection et de conception conditionnelle (voir Figure 3).

Si vous avez besoin de charger des paramètres spéciaux lors de l'ouverture d'une liste dynamique, cela peut être fait de deux manières :
● Utilisation du paramètre de formulaire de liste dynamique UserSettings. Les données contenues dans ce paramètre seront placées dans les paramètres de la liste dynamique de l'utilisateur.
● Utilisation du paramètre du formulaire de liste dynamiqueUserSettingsKey. Si vous spécifiez ce paramètre lors de l'ouverture d'un formulaire, alors les paramètres utilisateur situés dans le stockage des paramètres avec la clé spécifiée seront chargés dans la liste dynamique, qui est l'attribut principal du formulaire.

5. Rechercher dans une liste dynamique

Une liste dynamique située sur le formulaire offre la possibilité de rechercher de manière interactive les données affichées. La recherche peut être effectuée à l'aide des outils suivants : barre de recherche, boîte de dialogue de recherche, recherche de la valeur actuelle, utilisation de l'historique de recherche et réglage de la période (pour les listes dynamiques affichant des documents). Le résultat de la recherche est un ensemble limité d'enregistrements
une liste dynamique (de celles disponibles pour un utilisateur donné) qui correspondent aux critères de recherche.
Pour contrôler les fonctionnalités de recherche d'une liste dynamique, il existe trois propriétés de table sur le formulaire géré qui affiche la liste dynamique :
● Position de la chaîne de recherche – détermine la position de la chaîne de recherche. Peut prendre les valeurs suivantes : Auto, Barre de commandes, Aucun, Haut, Bas.


Riz. 4. Rechercher une chaîne dans une liste dynamique

Si la valeur de cette propriété est définie sur Panneau de commandes, alors la chaîne de recherche sera affichée dans le panneau de commandes du formulaire (si la liste dynamique est l'attribut principal du formulaire) ou dans le panneau de commandes associé à la liste dynamique. La barre de recherche placée dans la barre de commande est toujours appuyée contre le bord droit de la barre de commande (avec les boutons situés à droite de la barre de recherche).
Si la propriété est définie sur Non, la chaîne de recherche ne figurera pas sur le formulaire et lorsque vous commencerez à saisir la chaîne de recherche, une boîte de dialogue s'ouvrira.
Si la propriété est définie sur Top, la barre de recherche sera située entre la barre de commande de liste et le tableau affichant la liste dynamique. Si la propriété est définie sur Bottom, la chaîne de recherche sera placée immédiatement après le tableau affichant la liste dynamique.


● Si la propriété Mode de compatibilité est définie sur Ne pas utiliser ou antérieure à la version 8.3.4, la valeur est Panneau de commande.
Accédez à la ligne de recherche comme suit :
● En appuyant sur la combinaison de touches Ctrl+F ;
● Souris ;
● Lorsque vous commencez à saisir une liste dynamique (en tenant compte de la valeur de la propriété SearchOnTyping de la liste dynamique).
● Position de l'état d'affichage – décrit où l'état d'affichage sera affiché : quels champs ont été recherchés et quelles valeurs
recherché dans tous les domaines. Peut prendre les valeurs suivantes : Auto, Aucun, Top, Bottom


Riz. 5. Rechercher l'état dans la liste dynamique

Si la propriété est définie sur Non, l'état d'affichage ne sera pas présent sur le formulaire. En conséquence, il sera possible de déterminer si la recherche est terminée ou non uniquement grâce à la disponibilité du bouton Annuler la recherche.
Si la propriété est définie sur Top, l'état d'affichage sera situé entre la barre de commande de la liste et le tableau affichant la liste dynamique. Si la propriété est définie sur Bottom, l'état d'affichage sera placé immédiatement après le tableau affichant la liste dynamique.
Si le formulaire a été créé dans 1C:Enterprise version 8.3.4 et antérieure, la propriété est définie sur Non. Si le formulaire a été créé dans 1C:Enterprise version 8.3.5 et antérieure, la propriété est définie sur Auto. La valeur réelle du bien dans ce cas sera déterminée comme suit :
● Si la propriété Mode de compatibilité est définie sur Version 8.3.4 (et inférieure) – valeur Non ;
● Si la propriété Mode de compatibilité est définie sur Ne pas utiliser ou antérieure à la version 8.3.4 – valeur Top ;
● Position du contrôle de recherche – Détermine l'endroit où le bouton de contrôle de recherche apparaîtra. Le bouton ouvre un menu contenant les informations suivantes : commandes Rechercher par valeur actuelle, Recherche avancée, Annuler la recherche, Définir la période (pour les listes de documents et de journaux) et l'historique des requêtes de recherche (5 dernières requêtes). La propriété peut prendre les valeurs suivantes : Auto, Aucun, Panneau de commande.


Riz. 6. Gérer la recherche dans une liste dynamique

Si la propriété est définie sur Non, le bouton de contrôle de recherche ne figurera pas sur le formulaire (mais les commandes seront disponibles à l'aide du menu Plus). La valeur de la propriété Command Bar place un bouton sur la barre de commandes associée à un tableau affichant une liste dynamique.
Si le formulaire a été créé dans 1C:Enterprise version 8.3.4 et antérieure, la propriété est définie sur Non. Si le formulaire a été créé dans 1C:Enterprise version 8.3.5 et antérieure, la propriété est définie sur Auto. La valeur réelle du bien dans ce cas sera déterminée comme suit :
● Si la propriété Mode de compatibilité est définie sur Version 8.3.4 (et inférieure) – valeur Non ;
● Si la propriété Mode de compatibilité est définie sur Ne pas utiliser ou est antérieure à la version 8.3.4 – la valeur est Panneau de commande ;
S'il existe plusieurs panneaux de commande sur un formulaire, dont la source des commandes est une table du formulaire géré (affichant les données de la liste dynamique), alors la ligne de recherche et le bouton de contrôle de recherche seront situés dans un seul panneau de commande :
● Ou dans la barre de commandes de la liste dynamique elle-même (si la saisie semi-automatique est activée)
● Ou dans l'un des autres panneaux de commande.

Examinons les fonctionnalités de l'utilisation de la recherche dans une liste dynamique :
● Pour rendre la recherche pratique à utiliser (y compris en termes de performances), vous devez activer la recherche en texte intégral pour tous les objets de configuration pouvant être utilisés comme table principale de la liste dynamique. De plus, la recherche en texte intégral doit inclure tous les détails des objets de configuration qui peuvent être affichés dans une liste dynamique et pour lesquels une recherche peut être requise.
Si un objet est exclu de la recherche en texte intégral, alors le mécanisme de recherche en question fonctionnera, mais les performances d'une telle recherche seront extrêmement faibles. Il n'est pas recommandé d'utiliser la recherche sur des objets qui ne sont pas indexés par la recherche en texte intégral.
● La solution d'application doit disposer d'une tâche de routine qui met régulièrement à jour l'index de recherche en texte intégral.

● La recherche n'est pas effectuée dans toutes les colonnes de la liste dynamique (et de l'objet de configuration), mais uniquement dans les colonnes affichées dans le tableau.
● La recherche dans une liste dynamique par champs de types référence avec représentation arbitraire est effectuée par champs utilisés pour
formation de la représentation (voir ici). Les champs inclus dans la vue sont obtenus en tenant compte du gestionnaire ViewFieldGettingProcessing() de l'objet correspondant.
● Pour les listes dynamiques avec une table principale spécifiée, la recherche en texte intégral est utilisée sur la table principale. Tous les liens non indexés de la table principale seront ajoutés aux résultats de la recherche en texte intégral. Le résultat d'une recherche en texte intégral de la table principale est utilisé comme sélection basée sur des champs clés. Une recherche en texte intégral est également effectuée sur les champs affichés dans la liste à partir d'autres tables (si le champ et l'objet de configuration utilisent la recherche en texte intégral). Si la recherche en texte intégral n'est pas activée, les données peuvent être
trouvé, mais la recherche elle-même sera très lente.
Si une erreur se produit lors de la tentative d'exécution d'une recherche en texte intégral, la recherche sera effectuée sans appliquer la recherche en texte intégral.
Par exemple, cela peut se produire lors de la recherche d'une lettre et d'un grand nombre de lignes dans la base d'informations commençant par cette lettre.
● Si une sélection avec le type de comparaison Égal à est utilisée pour un champ de la table principale d'une liste dynamique, alors lors de l'exécution d'une recherche en texte intégral, une valeur de sélection sera ajoutée à la requête de recherche pour cette table.
● La chaîne de recherche est divisée en mots. Ce partitionnement s'effectue selon les règles suivantes :
● La ligne est interrompue en utilisant des espaces et des tabulations comme délimiteurs.
● Ensuite, chaque fragment résultant est traité :
● Si le fragment est une représentation de date (avec ou sans heure) basée sur les paramètres régionaux de la session en cours, alors le mot est le fragment.
● Sinon, le fragment est davantage divisé en utilisant les caractères « ,.-/\ » comme délimiteurs. Dans ce cas, chaque fragment de chaîne résultant est considéré comme un mot.

● Pour chaque mot, son propre ensemble de conditions est formé, qui sont combinées « par OU ». Cet ensemble de conditions est généré si une recherche en texte intégral pour un mot donné dans la table à partir de laquelle ce champ a été obtenu a renvoyé au moins un objet, ou si une recherche en texte intégral n'a pas été utilisée pour ce champ. Les conditions sont formées comme suit :
● Pour un champ de type String, la condition est FieldName LIKE %Word%.
● Pour un champ de type Nombre, la condition a la forme FieldName=Value, où Value est un mot converti en type Nombre. Si le casting ne peut pas être effectué, la recherche sur le terrain ne sera pas effectuée.
● Le mot est recherché comme sous-chaîne dans la représentation booléenne par défaut définie pour la session en cours. Si le mot recherché est trouvé dans une vue, il recherche alors la valeur correspondant à la vue dans laquelle le mot a été trouvé. Dans ce cas, la recherche n'utilise pas les vues spécifiées à l'aide de la propriété d'élément de formulaire Format.
● Pour un champ de type Date, la condition ressemble à FieldName>=StartofDay(Word) ANDFieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
indiquée par un ou deux chiffres, l'année sera réduite au siècle en cours et cette valeur sera ajoutée à la condition de recherche.
● Pour les champs de référence, une recherche est effectuée sur les champs utilisés pour constituer la vue de référence. Dans chacun de ces champs recherchez
effectué selon les règles décrites ci-dessus. La recherche n'utilise pas les champs utilisés pour former une représentation de données personnalisée.
L'ensemble des conditions pour chaque mot est combiné « ET ».
● Pour les valeurs avec des zéros non significatifs, vous pouvez rechercher soit la chaîne avec des zéros non significatifs, soit la chaîne spécifiée sans zéros non significatifs.
● Si une liste dynamique affiche une liste de documents ou un historique de documents, l'intervalle d'affichage de la liste que vous spécifiez est également affiché dans la zone du formulaire réservée à l'affichage de l'état d'affichage de la liste dynamique souhaitée.
● La commande de recherche par valeur courante n'est pas disponible si la table principale de la liste dynamique est le critère de sélection.
● Les fragments de chaîne trouvés sont mis en surbrillance lorsqu'ils sont affichés dans le tableau.
● Une seule chaîne de recherche est prise en charge pour une colonne. Lors de l'ajout d'une nouvelle requête de recherche pour une colonne déjà recherchée, l'expression de recherche sera remplacée plutôt que les deux requêtes de recherche étant ajoutées.
● Si le formulaire ne comporte pas d'ajout d'élément de formulaire du formulaire Affichage de la chaîne de recherche associé au tableau (propriété Source d'ajout d'élément de formulaire) affichant une liste dynamique, l'appui sur la combinaison de touches Ctrl+F ouvre la boîte de dialogue de recherche.


Riz. 7. Boîte de dialogue de recherche

Si le formulaire contient un ajout d'élément de formulaire de l'affichage de la chaîne de recherche du formulaire associé à un tableau (propriété Source d'ajout d'élément de formulaire) affichant une liste dynamique, alors pour ouvrir la boîte de dialogue de recherche, vous devez utiliser la commande Recherche avancée.
● Lorsque vous utilisez la boîte de dialogue de recherche, gardez les points suivants à l'esprit :
● L'ouverture de la boîte de dialogue de recherche à l'aide d'un raccourci clavier fait apparaître la valeur de la cellule actuelle dans la ligne Que rechercher et la valeur du commutateur Comment rechercher est définie sur Par correspondance exacte.

● L'ouverture de la boîte de dialogue de recherche en commençant directement à saisir une chaîne de recherche dans la liste dynamique conduit au fait que la valeur du commutateur Comment rechercher est définie sur la valeur Par partie de la chaîne et que le texte saisi se retrouve dans la zone Quoi. pour rechercher le champ.

6. Obtenir les données affichées par une liste dynamique

Lors de l'utilisation de listes dynamiques, vous devrez peut-être effectuer diverses actions sur les données actuellement affichées par la liste dynamique, en tenant compte des sélections et des recherches appliquées. De telles actions incluent : le traitement des informations affichées, par exemple, le renvoi de documents sélectionnés ou la définition de certains détails pour les objets sélectionnés, la génération d'une liste d'objets disponibles (avec design, etc.), par exemple, pour l'impression ou l'enregistrement dans une feuille de calcul.
Pour obtenir les données affichées par une liste dynamique, vous devez utiliser GetExecutableDataCompositionSchema() et
GetExecutableDataCompositionSettings().
Exemple de réception de données :

Schéma = Elements.List.GetExecutableDataCompositionSchema();
Paramètres = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute (Schéma, Paramètres);
CompositionProcessor = newDataCompositionProcessor ;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = Nouveau OutputProcessorDataCompositionResultInTabularDocument ;
ReturnOutputProcessor.Output(CompositionProcessor);

L'insertion de données dans une collection de valeurs (table ou liste de valeurs) se fait de la même manière.
L'obtention de données de liste dynamique de cette manière présente un certain nombre de fonctionnalités qui doivent être prises en compte lors du développement de solutions d'application :
● La conception de tableau suivante n'est pas prise en charge :
● Couleurs de lignes alternées ;
● Image d'en-tête ;
● Photo du sous-sol;
● Couleur d'arrière-plan du pied de page ;
● Couleur du texte du pied de page ;
● Police de pied de page ;
● Position horizontale au sous-sol;
● Mode mot de passe.
● L'apparence conditionnelle spécifiée pour un formulaire géré n'est pas prise en charge ;
● Lors du classement d'un tableau hiérarchique par ordre croissant par champ de type Lien, les enregistrements contenant un lien vide sont toujours placés en premier.

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, la sélection 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. Ajouter(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. Ajouter(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.