Maison / Facebook / Comment ouvrir une fiche d'un objet existant ? 1s formulaire ouvert uv

Comment ouvrir une fiche d'un objet existant ? 1s formulaire ouvert uv

L'ouverture par programme de formulaires dans une application 1C gérée est très différente de leur ouverture dans une application standard. Regardons d'abord l'ancienne méthode. Elle consiste à recevoir un formulaire puis à l'ouvrir en mode normal ou modal (lorsqu'il est ouvert en mode modal, le formulaire bloque le programme).

GetForm() . Ouvrir()

Il s’agit de la méthode d’ouverture de formulaires la plus lente. Cependant, il vous permet de traiter le formulaire par programme avant de l'ouvrir. Pour traiter le code, vous devez modifier un peu :

Formulaire = ObtenirFormulaire( "Document. Réception des biens et services. Formulaire de document") ;
//Ici, nous effectuons des actions avec le formulaire
Formulaire. Ouvrir();

Il faut tenir compte du fait qu'à la réception du formulaire, une autre procédure événementielle sera exécutée QuandCrééSurServeur.

Examinons d'autres méthodes qui vous permettent d'ouvrir des formulaires dans une application 1C gérée plus rapidement et plus facilement. Selon la situation spécifique, différentes méthodes peuvent être utilisées.

1. Comment ouvrir un formulaire objet dans une application gérée s'il existe un lien vers celui-ci.

Dans ce cas, tout est extrêmement simple.

RefLink = Répertoires. Nomenclature. FindByCode("000000001" ) ;
OpenValue(RefLink) ;

2. Comment ouvrir le formulaire de sélection puis obtenir la valeur sélectionnée.

Il y a une fonction pour ça EntrezValeur(). La fonction a 3 paramètres :

  • La variable dans laquelle la valeur sélectionnée sera écrite ;
  • Un indice qui sera affiché dans la fenêtre de sélection ;
  • Description des types de valeurs sélectionnées. Il peut y avoir plusieurs types, auquel cas vous serez invité à sélectionner un type avant de sélectionner une valeur spécifique.

À la suite de l'exécution de la fonction, le formulaire de sélection par défaut pour un objet du type spécifié s'ouvrira.

Valeur variable ;
Tableau= nouveau tableau ;
Tableau. Ajouter(Type( "RépertoireLink.Nomenclature") ) ;
Tableau. Ajouter(Type( "DirectoryLink. Contreparties") ) ;

TypeDescription= nouveau TypeDescription(Array) ;

Res = EnterValue(Valeur, "Indice", TypeDescription) ;

Les méthodes précédentes permettaient uniquement d'ouvrir les formulaires par défaut des objets (formulaire objet ou formulaire de sélection). Si vous devez ouvrir un formulaire personnalisé, vous pouvez utiliser la fonction OuvrirFormulaire().

Cette fonction a pas mal de paramètres. Examinons-en quelques-uns :

  • Nom de forme— ici, vous pouvez sélectionner l'une des formes d'objet standard, par exemple, Formulaire de sélection ou Formulaire de liste. Ou un formulaire spécifique créé par les développeurs.
  • Possibilités— vous permet de le transférer vers le formulaire dans le formulaire constructions certains paramètres avant de l'ouvrir, déterminant ainsi les données de sortie. Les paramètres peuvent être n'importe quelle donnée pouvant être transmise du client au serveur. Les paramètres passés à l'ouverture du formulaire peuvent être traités dans la procédure QuandCréationSurServeur() au formulaire en cours d'ouverture.
  • Mode d'ouverture du formulaire— dispose de 3 options : indépendant, bloquer toute l'interface, bloquer le formulaire propriétaire.

Voyons comment la fonction est utilisée OuvrirFormulaire() dans diverses situations.

3. Comment ouvrir le formulaire d'un objet existant

Chaque formulaire possède un attribut clé. Il est mis en évidence en gras dans la liste des détails du formulaire et est généralement appelé Un objet sous forme d'éléments d'ouvrages et de documents de référence. D'autres objets peuvent avoir un nom différent. Pour ouvrir le formulaire d'un objet existant, vous devez passer un paramètre au formulaire en cours d'ouverture Clé avec la valeur comme référence à un objet.

&SurClient
Procédure Command1 (Commande)
Paramètre = nouvelle structure ;
Paramètre. Insérer("Clé" , FindC() ) ;
OpenForm(, Paramètre) ;
Fin de la procédure

&Sur le serveur
Fonction FindC();
Répertoires de retour. Contreparties. FindByRequisites ("TIN", "745107734623")
FinFonction

4. Comment ouvrir un nouveau formulaire d'objet

Une fonction simple fera l'affaire ici OuvrirFormulaire() sans aucun paramètre.

&SurClient
Procédure Command1 (Commande)
OuvrirFormulaire( "Répertoire. Contreparties. Forme d'objet") ;
Fin de la procédure

5. Comment ouvrir un nouveau formulaire d'objet et le remplir en fonction de quelque chose

Vous devez passer un paramètre Base, dont la valeur sera une référence à l'objet de base de remplissage. Cela lancera la procédure ProcessFill().

&SurClient
Procédure Command1 (Commande)
Paramètre = nouvelle structure ;
Paramètre. Insérer("Base", LinkToBuyerAccount) ;
OuvrirFormulaire( "Document. Ventes de biens et services. Forme d'objet", Paramètre) ;
Fin de la procédure

Cet exemple créera un document Ventes de biens et services et rempli sur la base d'une facture de paiement à l'acheteur dont le lien a été transmis.

6. Comment ouvrir un formulaire et y définir une sélection

La sélection sur les formulaires 1C peut être simple ou complexe. Une sélection simple implique des expressions telles que Organisation = Cornes et sabots LLC. La sélection complexe implique d'autres types de comparaison, par ex. Sur la liste. Dans cet article, nous examinerons l'organisation de la sélection simple, et un article distinct sera consacré à la sélection complexe.

Pour organiser une sélection simple, il faut passer un paramètre avec une clé au formulaire en cours d'ouverture Sélection, la valeur sera une structure dans laquelle la clé est le nom du champ de liste dynamique et la valeur est la donnée recherchée.

Par exemple, ouvrons le formulaire de liste de répertoires Numéros GTD et faites-y une sélection par propriétaire - élément de répertoire Nomenclature.

&SurClient
Procédure Command1 (Commande)
Paramètre = nouvelle structure ;

Sélection= nouvelle Structure ;
Sélection. Insert("Propriétaire", LinkToNomenclature) ;

Paramètre. Insérer("Sélection", Sélection) ;

OuvrirFormulaire( "Répertoire.Numéros GTD.Formulaire de liste", Paramètre) ;
Fin de la procédure

7. Comment ouvrir le formulaire d'inscription au registre d'information

Pour ce faire, vous aurez besoin de la clé d’entrée au registre d’informations.

Clé d'enregistrement— ce sont les valeurs de toutes les mesures et la période (si le registre est périodique). Autrement dit, une clé d'enregistrement correspond aux paramètres par lesquels un enregistrement peut être identifié de manière unique.

L'algorithme d'ouverture est le suivant :

  1. Nous entrons les données clés de l'enregistrement avec les valeurs nécessaires dans la structure.
  2. Nous plaçons la structure résultante dans un tableau.
  3. Nous créons une clé d'enregistrement à partir du tableau.
  4. On passe un paramètre au formulaire qui s'ouvre Clé avec la clé d'enregistrement de l'étape 3 comme valeur.

&SurClient
Procédure Command1 (Commande)
Paramètre = nouvelle structure ;

KeyParameters= nouvelle structure ;
Paramètres clés. Insérer("Nomenclature", LinkToNomenclature) ;
Paramètres clés. Insérer("TypePrix", LinkToPriceType) ;
Paramètres clés. Insérer("Période", Date) ;

KeyArray = Nouveau tableau ;
Tableau de clés. Ajouter(KeyParameters) ;

EntryKey = Nouveau ( "Informations RegisterRecord Key.PrixNomenclature", KeyArray) ;

Paramètre. Insérer("Clé", CléEnregistrement) ;

OuvrirFormulaire( "Registre d'informations. Prix de la nomenclature. Formulaire d'enregistrement", Paramètre) ;
Fin de la procédure

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.

S-P nous dit ce qui suit :

Contexte global.GetForm
Contexte mondial
ObtenirFormulaire
Syntaxe:

ObtenirFormulaire(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>)
Possibilités :

<ИмяФормы>(requis)

Taper: .
Nom de forme. Formé comme un chemin complet vers l'objet de métadonnées du formulaire (par exemple, "Directory. Counterparties.Form.ObjectForm", "GeneralForm.FileSavingForm") ou comme un chemin complet vers un objet d'application, complété par le nom du formulaire par défaut (par exemple, "Répertoire.Produits.SelectionForm" ).
Noms de formulaire par défaut :

  • ObjectForm - formulaire d'objet par défaut ;
  • GroupForm (FolderForm) - formulaire de groupe par défaut ;
  • RecordForm - formulaire d'inscription au registre par défaut ;
  • ListForm - formulaire de liste par défaut ;
  • ChoiceForm - formulaire de choix par défaut ;
  • GroupChoiceForm - formulaire de sélection de groupe par défaut ;
  • ConstantsForm - le formulaire de constantes par défaut pour le mode normal, défini comme formulaire de constantes pour la configuration ;
  • Formulaire - le formulaire par défaut de la constante, du rapport et du traitement ;
  • CommonForm - formulaire général ;
  • SettingsForm - formulaire de paramètres de rapport par défaut ;
  • LoadForm - formulaire de chargement des paramètres ;
  • SaveForm - formulaire d'enregistrement des paramètres ;
  • VariantForm - formulaire pour éditer une variante de rapport ;
  • SearchForm - un formulaire pour la recherche en texte intégral dans les données.
Par exemple, pour obtenir le formulaire général "GeneralSettings" vous devez écrire le code suivant dans le module :
Form = GetForm("GeneralForm.GeneralSettings");

Pour les rapports et traitements externes, le nom du formulaire est spécifié comme suit :

  • RapportExterne.<имя отчета>.Formulaire.<имя формы>;
  • RapportExterne.<имя отчета>.<имя стандартной формы>;
  • Traitement externe.<имя обработки>.Formulaire.<имя формы>;
  • Traitement externe.<имя обработки>.<имя стандартной формы>.
Dans ce cas, le signalement ou le traitement externe doit être préalablement enregistré dans le système.
<Параметры>(facultatif)

Taper: .
Paramètres du formulaire. La clé de structure est le nom du paramètre et la valeur est la valeur du paramètre de formulaire. Le nom de l'élément doit correspondre au nom du paramètre de structure.
P = Nouvelle Structure("Clé", Fournisseur);
Form = GetForm("Répertoire. Contreparties.ObjectForm", P);
Form.Open();
<Владелец>(facultatif)

Le propriétaire d'un formulaire est un formulaire ou un contrôle d'un autre formulaire.
<Уникальность>(facultatif)

Tapez : Gratuit.
Ce paramètre peut spécifier une clé dont la valeur sera utilisée pour rechercher des formulaires déjà ouverts. Si un formulaire avec la même clé d'unicité est trouvé, au lieu d'ouvrir un nouveau formulaire, le formulaire trouvé sera activé.
- rechercher un formulaire avec une clé d'unicité par défaut, - ne pas rechercher de formulaire du tout, toute autre valeur définit la clé d'unicité par laquelle la recherche sera effectuée.
Valeur par défaut: .
<Окно>(facultatif)

Taper: ; .
La fenêtre de l'application dans laquelle le formulaire sera ouvert.
Applicable uniquement au formulaire géré. Une fenêtre ne peut être que la fenêtre principale de l'application ou une fenêtre de formulaire auxiliaire.
Si le type est spécifié, la fenêtre du formulaire sera créée selon l'option sélectionnée.
<НавигационнаяСсылка>(facultatif)

Taper: ; .
S'il contient une valeur autre que , alors cette valeur est affectée à une propriété du formulaire résultant de l'appel de cette méthode, et la propriété de ce formulaire est définie sur .
Valeur par défaut: .
Valeur de retour :

Taper: ; ; .
- si le gestionnaire est configuré pour rejeter la création du formulaire.
Description:

Obtient le formulaire ou le formulaire géré. Avant réception, une recherche est effectuée sur un formulaire déjà ouvert du même type.
La recherche est effectuée par type de formulaire, valeurs des paramètres clés du formulaire, propriétaire du formulaire, clé d'unicité de l'utilisateur.
Si dans le paramètre<Уникальность>la valeur est passée, alors la recherche des formulaires déjà ouverts n'est pas effectuée.
Disponibilité:

Client léger, client web, client lourd, application mobile (client).
Note:

Dans le client léger et Web, seul le formulaire géré est reçu.
Les formes conventionnelles de traitement externe ne sont pas prises en charge.
Si, lors de la réception d'un formulaire régulier dans le paramètre<ИмяФормы>Un nom de formulaire non standard est spécifié ; les paramètres transmis ne sont pas traités.
Il peut y avoir plusieurs appels au serveur pendant l'exécution. Certains d'entre eux sont mis en cache. Il y a toujours au moins une requête adressée au serveur et elle n'est pas mise en cache. La mise en cache dépend de la version de la plateforme et de la version de configuration dans son ensemble. Si la vitesse de connexion est définie sur faible et que la ligne actuelle n'est pas spécifiée, le formulaire de sélection est mis en cache. Le cache est vidé toutes les 20 minutes. Les formulaires qui n'ont pas été utilisés pendant cette période sont supprimés.
Voir également: