1c dans les paramètres de sélection, définissez le nom du groupe. Définissez les paramètres de sélection et les associations de paramètres de sélection pour les objets de métadonnées. DescriptionofTypesInventory = NouvelleDescriptionofTypes (Tableau)

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 sous une forme gérable en 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.

/
Développeurs /
Conventions de codage

Définition des options de sélection et des associations d'options de sélection pour les objets de métadonnées

1. En règle générale, les restrictions de logique métier telles que les restrictions de sélection doivent être les mêmes pour tous les formulaires dans lesquels un objet particulier est modifié. Par conséquent, il est recommandé de définir les paramètres de sélection et les connexions entre les paramètres de sélection dans les propriétés des objets de métadonnées - dans les détails des répertoires, des documents, etc.

2. Toutefois, il peut y avoir des cas où les restrictions de sélection peuvent dépendre du scénario d'exploitation spécifique. Dans de tels cas, les paramètres de sélection peuvent être précisés localement, sous une forme spécifique.

Par exemple, la configuration contient

  • annuaire Employés, qui contient des détails Organisation Et Type d'employé(énumération avec des valeurs Basique/À temps partiel);
  • document Ordre de réception, qui contient des accessoires Organisation Et Employé; tandis que pour les accessoires Employé document Ordre de réception la connexion du paramètre de sélection est spécifiée Sélection.Organisation avec des accessoires Organisation.

Il est nécessaire de mettre en œuvre la possibilité de sélectionner uniquement les employés clés en fonction de la valeur de l'option fonctionnelle SelectOnlyFromEmployeesBases. Pour cela il faut

  • sous forme de document Ordre de réception implémenter des attributs de formulaire supplémentaires Types d'employés,
  • puis pour le champ du formulaire Employé un lien de paramètre de sélection peut être établi Sélection.Type d'employé avec les détails du formulaire Types d'employés,
  • dans ce cas, les détails du formulaire Types d'employés complété sur la base de l’analyse de l’option fonctionnelle.

(En même temps, préparez les accessoires Employé document Ordre de réception lien pour le paramètre de sélection Sélection.Type d'employé il n'y a aucune possibilité, parce que accessoires Type d'employé dans le document Ordre de réception n'existe pas.)

Puis définition de la connexion pour le paramètre Sélection.Organisation dans les propriétés des accessoires Employé document Ordre de réception et connexions pour le paramètre Sélection.Type d'employé dans le champ du formulaire de document Ordre de réception conduira au fait que dans le mode 1C : Entreprises Les deux liens de paramètres de sélection fonctionneront. Ainsi, lors de la sélection d'un salarié dans le formulaire d'ordre d'embauche, la sélection dans la liste des salariés sera déterminée à la fois par l'organisation renseignée dans le document et par le type de salarié, qui sera déterminé en fonction de l'option fonctionnelle.

Bon après-midi.

Aujourd'hui, nous allons parler de la façon d'ouvrir par programme les formulaires de sélection dans la nouvelle interface gérée.

Précédemment dans " application régulière"Nous avons écrit ainsi :

form = Répertoire.nomenclature.GetSelectionForm();

resultSelection = form.openModalNO();

Entre ces opérateurs, nous pourrions modifier les propriétés du formulaire, par exemple, définir la sélection. Nous pourrions spécifier un formulaire spécifique par son nom. Pourrait le changer apparence, accédant aux propriétés des éléments de formulaire par leur nom via un point (form.Button1.Visibility = False;)

Nous avons maintenant une interface gérée et tout est différent ici. Le problème réside dans la division du code en parties serveur et client. Nous ne pouvons accéder aux objets et à leurs métadonnées que sur le serveur, et nous devons ouvrir des formulaires sur le client.

Alors, commençons.

1. Le cas le plus simple est celui où l'on n'a pas besoin de gérer la sélection (paramétrer les sélections, passer les paramètres au formulaire de sélection ouvert).

Étant donné que les formulaires ne peuvent être ouverts que sur le client, il s'agira d'un morceau de code côté client. Nous utiliserons la fonction EntrezValeur(<Значение>, <Подсказка>, <Тип>) . En fait, tout ressort clairement de sa description. Il renvoie l'indicateur indiquant si l'utilisateur a effectué une sélection ; dans le premier paramètre, nous passons le conteneur dans lequel la valeur de sélection sera renvoyée, dans le deuxième texte qui sera affiché dans le titre de la fenêtre de sélection, dans le troisième tableau de les types.

Voici un exemple d'utilisation :

Sélection variableTMC ;

ArrayTypes = Nouveau tableau ;

DescriptionofTypesTMC = NewDescriptionofTypes(Array);

Si EnterValue (Sélectionner l'inventaire, "Sélectionner l'article", Description des types d'inventaire) Alors

//Traitement de la valeur sélectionnée

fin si;

J'ajouterai que si nous attribuons une valeur à notre variable conteneur avant de la sélectionner, ce sera la valeur par défaut. Dans ce cas, vous n’avez pas besoin de former un tableau de types ; le type sera extrait de la valeur contenue dans le conteneur.

2. Parfois, avant de sélectionner une valeur, nous devons définir certaines sélections et paramètres de sélection. Par exemple, nous devons sélectionner un accord de contrepartie. La première méthode ouvrira tous les documents pour nous, mais nous devons les sélectionner par propriétaire.

Il existe deux méthodes pour ouvrir des formulaires : OuvrirFormulaire Et OuvrirFormulaireModal. Dans la première méthode, nous ouvrirons le formulaire et le morceau de code à partir duquel nous avons ouvert le formulaire continuera à s'exécuter sans recevoir le résultat de la sélection. Le résultat de la sélection, selon la méthode d'appel, sera soit placé dans le champ de saisie, soit reçu dans la procédure prédéfinie "Traitement de la sélection".

Dans notre cas, nous devons amener la valeur sélectionnée dans une certaine variable et continuer le traitement en tenant compte de la valeur sélectionnée, sans transférer le contrôle à d'autres procédures. Donc ça nous conviendra OuvrirFormulaireModal.

Je réserve tout de suite que c'est une mauvaise manière pour une interface web, car... Les fenêtres modales s'ouvrent dans une nouvelle fenêtre de navigateur généralement bloquée. Mais si vous expliquez à l'avance à l'utilisateur ce qui se passe, alors je pense qu'il résoudra ce problème))

Regardons donc la description de la procédure, elle comporte 4 paramètres. Dans le premier, nous indiquons une ligne avec le chemin complet vers le formulaire "Répertoire. Contrats d'entrepreneurs. Formulaire de sélection". Dans la seconde, nous indiquons les paramètres de sélection, plus d'informations ci-dessous. Dans le troisième - le propriétaire, il s'agit d'un formulaire ou d'un champ de sélection qui recevra le résultat de la sélection, nous ne le remplissons pas. Le quatrième paramètre n’est pas non plus utilisé dans notre cas.

Ainsi, pour une sélection simple, la ligne suivante fera l'affaire :

&SurClient

Procédure Commande1(Commande)

res = OpenFormModal("Répertoire. Contrats des entrepreneurs. SelectionForm");

Fin de la procédure

Mais il s'agit d'un analogue complet de la méthode n°1, et nous verrons un formulaire permettant de sélectionner tous les contrats, sans sélection par propriétaire. Ceux. Cela ne peut être fait que si l'on souhaite préciser le nom du formulaire de sélection.

Pour définir la sélection, le deuxième paramètre nous aidera.

Le deuxième paramètre est de type « Structure ». En tant qu'éléments de structure, vous pouvez spécifier des paramètres de formulaire ajoutés sur l'onglet « paramètres » du formulaire de sélection. Leur traitement doit être décrit dans la procédure Lors de la création sur le serveur dans le module formulaire de sélection. Ce n'est pas bon pour nous, parce que... Je dois modifier la configuration. Vous pouvez également passer une structure de sélection avec la touche « sélection » dans la structure des paramètres. Ensuite, tous les champs de la structure de sélection seront utilisés pour sélectionner la liste des éléments et ne seront pas disponibles pour l'utilisateur ni pour la visualisation ni pour la modification.

Dans mon exemple, j'ai dessiné un champ de sélection dans le traitement qui fait référence à l'attribut du formulaire de traitement. "contrepartie" avec le type de données " DirectoryLink.Contreparties". et a écrit le morceau de code suivant :

&SurClient

Procédure Commande1(Commande)

Sélections = Nouvelle Structure("Propriétaire", Contrepartie);

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

res = OpenFormModal("Répertoire. Contrats des entrepreneurs. Formulaire de sélection", Paramètres de sélection);

Fin de la procédure

Cela suffit généralement à résoudre la plupart des problèmes et ne nécessite aucune intervention de configuration. Cependant, dans le formulaire de sélection de la procédure « When CreatedOnServer », votre sélection risque d'être perdue. Par conséquent, avant d’utiliser cette méthode, examinez cette procédure dans le formulaire de sélection que vous ouvrez. Les développeurs véreux peuvent facilement définir leur sélection « par défaut », en oubliant de vérifier que la sélection est passée dans les paramètres d'ouverture.

C'est tout pour aujourd'hui, merci de votre attention.




Haut