Élément de répertoire prédéfini 1s. Éléments réguliers et prédéfinis

Tout le monde connaît la différence entre les éléments prédéfinis et les éléments normaux : « Les éléments prédéfinis sont créés en mode Configurateur et ne peuvent pas être supprimés en mode 1C : Entreprise. » En mode utilisateur, vous pouvez distinguer un élément prédéfini de ceux ajoutés par les utilisateurs à l'aide d'une icône spéciale (voir la capture d'écran suivante).

Fondamentalement, les éléments prédéfinis sont créés par les développeurs afin de leur lier des algorithmes dans divers objets de configuration. Par exemple, dans la configuration « Manufacturing Enterprise Management » dans le répertoire « Qualité », les développeurs ont ajouté un élément prédéfini « Nouveau ».

Cet élément est utilisé dans de nombreux modules de configuration. Ainsi dans le document « Réception de biens et services », lors de l'inscription dans tous les registres où il y a une dimension « Qualité », la valeur d'un élément prédéfini est substituée. Voici une liste des étapes à suivre pour remplir le tableau d'affichage du registre « Biens des organisations » :

// PRODUITS PAR REGISTRE ProduitsOrganisations. MoveSet = Déplacements. ProduitsOrganisations ; Si Type de réception = Virements. Types de réceptions de marchandises. A l'entrepôt alors // Obtenez une table de valeurs qui correspond à la structure du jeu d'enregistrements du registre. MotionTable = MotionSet. Décharger() ; // Remplis la table de mouvements. Usage général. LoadValueTable(ProductTable, MovementTable) ; // Champs manquants. Tableau des mouvements. FillValues(Organisation, "Organisation" ) ; Tableau des mouvements. FillValues(Non défini, "Commissaire"); Tableau des mouvements. FillValues(Répertoires. Qualité. Nouveau, "Qualité" ) ; // Remplit la qualité à partir d'un élément prédéfini

Ainsi, les caractéristiques des éléments prédéfinis et leur finalité sont assez simples. Examinons la manière dont ils sont stockés dans les tables de la base de données et en quoi ils diffèrent des éléments ordinaires.

Différences

Dans la configuration de test, le répertoire "Produits" a été créé. Le groupe « Éléments de test » y a été créé. Vous pouvez voir le contenu du groupe dans la capture d'écran au début de l'article. Pour le répertoire "Produits", la base de données SQL possède une table "_Reference37" correspondante avec la structure suivante :

Mais comment déterminer si les détails correspondent à l’arborescence de configuration et aux champs de la table SQL ?

Nous utiliserons la méthode contextuelle globale standard « GetDatabaseStorageStructure() », qui nous renverra un tableau de valeurs avec une description de la structure du tableau.

Dans la table de valeurs "Champs", on voit la correspondance entre les champs de la table SQL et les détails des objets dans l'arborescence des métadonnées. Dans notre exemple, nous considérons la structure du répertoire « Produits ». Tous les répertoires possèdent un attribut standard "Prédéfini" de type booléen, qui est mis à TRUE pour les éléments prédéfinis :

Sur la base du tableau avec la structure de stockage des répertoires dans la base de données, nous pouvons certainement dire que le champ « Prédéfini » correspond au champ « IsMetadata ». Si nous regardons le contenu de la table "_Reference37" dans la base de données SQL, nous verrons ce qui suit :

Dans l'entrée de l'élément prédéfini, la valeur du champ "IsMetadata" est mise à "0x01", ce qui correspond au flag TRUE. Pour les éléments normaux, la valeur est définie sur "0x00". C'est la principale différence entre les éléments prédéfinis et les éléments ordinaires. Tous les autres champs sont stockés dans la base de données de la même manière que les champs des éléments réguliers ajoutés par les utilisateurs.

Les éléments prédéfinis peuvent avoir des utilisations très intéressantes. Avec leur aide, vous pouvez empêcher la suppression/marquage de groupes d'éléments pour suppression dans le répertoire et d'autres objets où ils peuvent être ajoutés. Si nous essayons de supprimer ou de marquer pour suppression le groupe "Test Elements". alors nous obtenons les erreurs suivantes :

Ainsi, les éléments prédéfinis rendent également « prédéfini » le groupe dans lequel ils sont placés.

Achèvement

Les éléments prédéfinis font partie intégrante de la plupart des configurations. Leur utilisation simplifie le développement et rend la construction des fonctionnalités logiquement plus « harmonieuse » et intégrale.

Valable pour la plateforme version 1C:Enterprise 8.3.3 et supérieure sans mode de compatibilité avec la version 8.2

1.1. Dans les répertoires, plans comptables, plans de types de caractéristiques et plans de types de calcul, il est possible de créer des éléments prédéfinis automatiquement ou par programmation.

1.2. Dans la plupart des cas, il est recommandé de créer automatiquement les éléments prédéfinis car ils sont constamment nécessaires et vous souhaitez faciliter l'accès à ces éléments à partir du code.
Par exemple, un pays prédéfini Russie dans l'annuaire Pays du monde, profil de groupe d'accès prédéfini Administrateur et ainsi de suite.

Pour ça

  • dans la propriété d'un annuaire, les types plan comptable, plan de caractéristiques ou plan de calcul doivent être paramétrés sur Auto(par défaut) et les appels programmatiques à la méthode ne doivent pas être autorisés SetUpdatePredefinedData ces objets pour changer ce mode.
  • empêcher les utilisateurs de supprimer des éléments prédéfinis en désactivant les droits suivants dans tous les rôles (désactivés par défaut) :
    • InteractiveDeletePredefinedData
    • InteractiveMarkDeletionPredefinedData
    • InteractiveUnflagDeletePredefinedData
    • InteractiveDeleteTaggedPredefinedData

1.3. L'exception concerne les nœuds enfants du RIB, dans lesquels les éléments prédéfinis ne sont pas automatiquement créés (ni mis à jour en cas de modification des métadonnées), mais doivent être transférés depuis le nœud principal avec les modifications de configuration.

Où:

a) la configuration doit garantir que le message d'échange est chargé dans le nœud esclave du RIB avant d'exécuter un autre code d'application qui accède aux éléments prédéfinis reçus du nœud maître ;

b) dans la logique appliquée de chargement des données à partir du nœud principal (gestionnaire d'événements Lors de la réception de données du réseau principal, règles d'enregistrement des objets) les appels à des éléments prédéfinis doivent être évités, car il n'y a aucune garantie qu'ils aient déjà été chargés à partir du message d'échange ;

c) le code des gestionnaires de mise à jour du SI, qui traitent des éléments prédéfinis, ne doit pas être exécuté dans les nœuds esclaves du SI :

Si les plans d'échange. MainNode() = Non défini Alors // remplit les éléments prédéfinis// ... Fin si ;

Lors de l'utilisation de la version 2.1.4 et supérieure de la bibliothèque de sous-système standard (BSL) dans la configuration du sous-système « Échange de données », les exigences (a) et (b) sont supprimées.

1.4. Pour les tables comportant des éléments prédéfinis ne faisant pas partie du plan d'échange RIB (et qui ne sont pas référencées par d'autres tables faisant partie du plan d'échange RIB), il est recommandé de définir la propriété Mise à jour des données prédéfinies dans le sens Mettre à jour automatiquement, et également lors du premier démarrage du nœud esclave RIB, définissez la mise à jour automatique des données à l'aide de l'appel :

Annuaires. Nom du répertoire> . SetUpdatePredéfiniData(UpdatePredéfiniData.UpdateAutomatically) ;

2. Dans certains cas, les éléments prédéfinis n'ont pas besoin d'être créés automatiquement si leur présence dépend d'une condition : une option fonctionnelle activée, le mode de fonctionnement du programme, etc.

Par exemple, certains types de calculs prédéfinis en termes de types de calcul Accumulations dépendent des valeurs des options fonctionnelles Utiliser le suivi du temps des employés dans les horloges, Utiliser le travail à la pièceGagner et etc.

Pour ça

  • dans la propriété Mise à jour des données prédéfinies les types ouvrage de référence, plan comptable, plan de caractéristiques ou plan de calcul doivent être paramétrés sur "Ne pas mettre à jour automatiquement"
  • fournir du code pour créer (et invalider) un élément prédéfini en fonction de la logique métier, par exemple :
Si GetFunctionalOption( "Utiliser le suivi du temps des employés dans les horloges") Alors AccrualObject = Plans de Types de Calcul. Accumulations. CreateCalculationType() ; AccumulationObject. PredefinedDataName = "SalaryByHourly" ; // ... AccumulationObjet. Écrire() ;
  • Fin si ;
prendre en compte dans le code de l'application l'absence d'éléments prédéfinis en matière de sécurité de l'information. Sinon, lors de l'accès à un élément prédéfini inexistant à partir du code ou du corps de la requête, une exception sera levée : . . . = Plan de types de calcul. Accumulations. SalaireHoraire ; . . . = Valeur prédéfinie () ;

"Plan des types de calcul. Accumulations. Salaire horaire" Lorsqu'il est utilisé dans la configuration de la Standard Subsystem Library (BSS) version 2.1.4 et supérieure, il est recommandé d'utiliser la fonctionÉlément prédéfini module commun ServeurClient à usage général , ce qui renvoie Indéfini

pour des éléments prédéfinis qui n’existent pas en sécurité de l’information.

L'idée même d'un travail programmatique avec des éléments prédéfinis est, à mon avis, très correcte. Il y a simplement des nuances à prendre en compte lors du travail. Tout d'abord, vous devez clairement comprendre par vous-même qu'il existe des éléments prédéfinis dans la configuration et qu'il existe des éléments prédéfinis dans la base d'informations (SI). Techniquement, les éléments prédéfinis de sécurité de l'information sont les éléments les plus courants des répertoires, dans lesquels l'attribut « Nom des données prédéfinies » indique à quel élément de configuration prédéfini ils correspondent. Ils ne sont pas différents des éléments ordinaires. En conséquence, n'importe quel élément de sécurité des informations ordinaire peut être rendu prédéfini, tout élément prédéfini peut être rendu ordinaire. Pour cela, il suffit de saisir la valeur souhaitée dans l'attribut

"NomDonnées Prédéfini".

De temps en temps, cette propriété contient une valeur qui n'est pas celle prévue par le développeur. En conséquence, des erreurs se produisent dans le fonctionnement de 1C. Du critique, dans lequel le travail est fondamentalement impossible, au non critique, dans lequel la logique des algorithmes est perturbée. Conditionnellement on peut distinguer
trois types d'erreurs :

1. "L'élément prédéfini n'est pas dans les données" ;

1. 3. Spécification incorrecte d'un élément prédéfini ;"L'élément prédéfini n'est pas dans les données" - o

Il s’agit du type d’erreur le plus simple à déboguer et à corriger. Sa simplicité réside dans le fait que la plateforme signale assez correctement cette situation « L'élément prédéfini est manquant dans les données » et il est assez clair comment y remédier.

Lors de l'accès à un élément manquant dans le code "Annuaires.Types d'informations de contact.Email de la personne de contact" un message s'affiche

Lors de l'accès à un élément de la requête "VALEUR(Répertoire.Types d'informations de contact.Email de la personne de contact)" le message suivant s'affiche :

Cette erreur se produit si un élément est décrit dans la configuration, mais que l'élément ne lui est pas associé dans la base de données.

Pour commencer, précisons que cette situation n’est pas toujours mauvaise. Il est tout à fait possible d'utiliser des données prédéfinies dans une sorte de logique de programme, qui peut ne pas être utilisée pour la plupart des utilisateurs. Dans ce cas, afin de ne pas encombrer le répertoire de tous les utilisateurs de la configuration, il est logique de définir des éléments prédéfinis dans la configuration, mais de ne pas les créer dans tous les systèmes de sécurité de l'information, mais uniquement pour les systèmes de sécurité de l'information dans lesquels la logique de configuration requise est utilisée. Dans ce cas, le programmeur peut spécifier la propriété « Ne pas mettre à jour les données prédéfinies » pour le répertoire et créer des éléments par programme lors de l'accès aux fonctionnalités du module. Ou permettez à l'utilisateur de lier indépendamment des éléments de module prédéfinis à des éléments réguliers existants.

De plus, la création automatique d'éléments prédéfinis n'est pas utilisée lorsque l'on travaille en mode RIB. Puisque les nouveaux éléments doivent être transférés depuis la base de données centrale et non créés dans des nœuds avec des UID différents.

Ceux. Parfois, l'erreur est la référence à un élément sans correspondance, et non la présence d'un tel élément lui-même.

Il faut analyser pourquoi l’élément n’a pas été créé. Peut-être devrait-il être créé lorsqu'un mode de programme est exécuté. Par exemple, après avoir réalisé un échange en RIB. Ou peut-être qu'il a été simplement supprimé accidentellement.

Si la logique prévoit le remplissage des éléments prédéfinis non pas automatiquement, mais dans un mode distinct, alors avant d'utiliser l'accès par nom " Annuaires.Types d'informations de contact.E-mail de la personne à contacter"Pour éviter une situation exceptionnelle, il est conseillé de vérifier que l'élément est déjà dans la base de données. Si l'élément est manquant, informez-en l'utilisateur et expliquez quel mode il doit effectuer pour remplir l'élément. Pour un tel contrôle , vous pouvez exécuter une requête de données.

Demande = Nouvelle demande ; Request.Text = "SELECT | Types d'informations de contact. Lien | DE | Répertoire. Types d'informations de contact COMMENT Types d'informations de contact | OÙ | Types d'informations de contact. Nom des données prédéfinies = "" E-mailContactPersonne"""; L'élément est MissingInData = Query.Execute().Empty();

S'il s'agit toujours d'une erreur dans les données de la base de données, il est alors nécessaire de se lier à un élément prédéfini de l'élément de sécurité de l'information. Ceux. il est nécessaire d'expliquer au système à quel élément de sécurité de l'information le code du programme doit accéder sous ce nom. Techniquement, une liaison spécifie simplement le nom d'un élément prédéfini dans la propriété "Nom de données prédéfini" de l'élément IS. Pour l'installer, exécutez simplement le code :

2. "L'élément prédéfini n'est pas unique" - h doubles éléments prédéfinis :

Cette situation est que plusieurs éléments de sécurité de l'information sont attachés à un élément prédéfini. Dans ce cas, lors de l'accès à un nom prédéfini, l'élément sera sélectionné aléatoirement. Cette situation est toujours fausse. Sa difficulté est que la plateforme ne le signale en aucun cas. Les algorithmes commencent tout simplement à fonctionner de manière incorrecte.

La plateforme signalera l'erreur « L'élément prédéfini n'est pas unique » uniquement lorsque vous tenterez de modifier un élément en double.

Tant que personne n'a besoin de modifier l'élément, personne ne sera au courant de l'erreur.

De tels doublons peuvent être créés, par exemple, si RIB est utilisé pour le répertoire et que le mode « Mise à jour automatique » est spécifié dans les propriétés des données prédéfinies. Dans ce cas, lors de l'exécution d'un échange, une instance des données prédéfinies sera créée lors de la mise à jour de la configuration. Une deuxième instance d'éléments prédéfinis portant le même nom sera transférée depuis la base de données centrale lors de l'échange.

De plus, ces doublons apparaîtront lors de l'utilisation du traitement d'échange entre configurations si différents éléments de sécurité de l'information correspondent à des éléments prédéfinis dans différentes bases de données. Dans ce cas, une copie des données prédéfinies est déjà dans la base de données, la seconde viendra lors du chargement des données avec un UID différent. Si vous effectuez des transferts de données, vous devez décider quels éléments de base de données sont considérés comme principaux et les utiliser dans la base de données subordonnée. Dans la base de données subordonnée, il est nécessaire de remplacer l'utilisation d'anciens éléments par des éléments de la base de données principale.

De telles erreurs dans la base de données peuvent être identifiées avec une requête telle que :

SELECT Types d'informations de contact. Nom des données prédéfinies, QUANTITÉ (DIFFÉRENTS types d'informations de contact. Référence) AS Nombre de répertoires FROM prédéfinis. Types d'informations de contact AS Types d'informations de contact GROUP BY Types d'informations de contact. Nom des données prédéfinies AYANT UNE QUANTITÉ (DIFFÉRENTS types de tactInformation.Link) > 1

Cette requête renverra une liste d'éléments prédéfinis auxquels plusieurs éléments de sécurité des informations sont associés.

Si de tels éléments sont présents, il faut supprimer la connexion avec celle prédéfinie pour l'un d'entre eux. Ceux. Il est nécessaire de déterminer sans ambiguïté pour le système à quel élément de sécurité de l'information le code du programme doit se référer lors de l'utilisation de ce nom. Pour ce faire, exécutez simplement le code.

3. Spécification incorrecte d'un élément prédéfini.

L'erreur est que l'élément prédéfini correspond à un élément qui n'est pas fourni par la logique du programme. Ces erreurs sont les plus difficiles à diagnostiquer. Contrairement aux deux premiers types, la configuration ne peut pas être automatiquement vérifiée pour ces erreurs. Ils ne peuvent être identifiés qu’en analysant la logique du travail. En cas de doute, vous pouvez vérifier si le bon élément est utilisé.

Pour ce faire, exécutez simplement l'une des commandes.

//Définition d'un élément de sécurité de l'information qui est lié au Notify prédéfini souhaité (Annuaires.Types d'informations de contact.Email de la Personne à contacter) //Définition d'un élément prédéfini auquel est attaché le Notify sélectionné (Lien vers l'Element.Nom des Données Prédéfinies )

Si de telles erreurs sont identifiées, il est nécessaire de supprimer la connexion incorrecte avec l'ancien élément et d'ajouter une connexion avec le nouvel élément. Le code d'opération est similaire au code de correction des deux premiers types d'erreurs.

Eh bien, brièvement sur les erreurs pendant le travail du programme ou en mode configurateur :

"L'élément prédéfini n'appartient pas à<Имя справочника>" - une erreur se produit lors de la tentative d'écriture d'un élément prédéfini avec un nom qui ne correspond pas au nom dans le configurateur.

"Les objets non prédéfinis ne peuvent pas avoir d'enregistrements de vue de sous-conto prédéfinis" - une erreur se produit lorsque l'on tente de rendre non prédéfini un élément d'un plan comptable prédéfini. Pour éliminer les erreurs, il est nécessaire de supprimer le flag « Prédéfini » de chaque ligne de sous-contact d'élément.

"Les objets non prédéfinis ne peuvent pas avoir d'enregistrements prédéfinis des principaux types de calcul"- une erreur se produit lorsque vous essayez de rendre non prédéfini un élément prédéfini du plan de types de calcul. Pour éliminer les erreurs, il est nécessaire de décocher la case « Prédéfini » pour chaque ligne du type de calcul principal de l'élément.

"Les éléments prédéfinis ne sont pas uniques"- une erreur est générée dans le configurateur lors de la mise à jour de la base d'informations pour une version de configuration sans mode de compatibilité avec 8.3.4. Il est nécessaire de vérifier les doublons et de les éliminer avant la mise à jour.

"Le nom de l'élément prédéfini n'est pas unique" - l'erreur se produit lorsqu'il y a plusieurs éléments prédéfinis du même nom dans la configuration lors de la mise à jour vers la plateforme8.3.6.2332 et versions ultérieures. Il est nécessaire d'éliminer les doublons dans la configuration.

Pour travailler avec des données prédéfinies, je recommande le traitement. Il peut effectuer toutes actions avec des données prédéfinies, et peut également vérifier la configuration dans son ensemble pour la présence d'erreurs des deux premiers types (éléments dupliqués et manquants) dans tous les objets de sécurité de l'information (annuaires, plans comptables, PVC, PVR) .

Attention! Il s'agit d'une version d'introduction de la leçon, dont le matériel peut être incomplet.

Connectez-vous au site en tant qu'étudiant

Connectez-vous en tant qu'étudiant pour accéder au matériel scolaire

Langage de requête 1C 8.3 pour les programmeurs débutants : fonction VALEUR

Fonction SIGNIFICATION destiné à la circulation dans le corps de la demande aux valeurs d'énumération du système Et données prédéfinies.

Que sont d’autre ces énumérations et données prédéfinies, demandez-vous ? Parlons de tout dans l'ordre.

Transferts

Transferts- c'est un objet application (rappelez-vous qu'il existe aussi Annuaires Et Documentation). Pourquoi était-il nécessaire ?

Le fait est qu’une énumération est un objet spécial. Contrairement aux ouvrages et documents de référence toutes les valeurs d'énumération possibles sont spécifiées au stade de la configuration et ne peut pas être modifié davantage en mode utilisateur.

L'immuabilité est leur principal atout. Ce sont des sortes de constantes de base de données.

Et si le programmeur en mode configuration créait une énumération avec le nom Sol et significations Mâle Et Femelle, alors lors de l'écriture d'un programme, il peut être sûr que les valeurs de cette énumération ne changeront pas à l'avenir. Par conséquent, il peut accéder en toute sécurité à ces valeurs à partir du code.

Imaginez ce qui se passerait s'il essayait d'utiliser l'annuaire à ces fins ?

Premièrement, certains utilisateurs le prendront et ajouteront une sorte de « sol martien ».

Deuxièmement, un autre utilisateur supprimera l’un des sexes existants ou changera son nom.

Et le programme va s'arrêter à cause de cela, car pour que cela fonctionne, il faut qu'il y ait exactement deux genres et précisément avec les noms « Homme » et « Femme ».

C'est pour de tels cas que les énumérations existent : pour définir de manière rigide toutes les variantes possibles de valeurs une fois (au stade de la configuration) puis les utiliser dans le code du programme.

Regardons un exemple d'une telle énumération dans notre base de données "Gastronom". Vous lisez une version d'essai de la leçon, des leçons complètes sont disponibles.

Voici notre énumération avec le nom Sol. Quelles valeurs peut-il prendre ?

Il n'y a que deux significations. Avec les noms « Homme » et « Femme ». Juste ce dont nous avons besoin.

Où pouvons-nous utiliser cette énumération à l’avenir ? Et bien sûr, dans l'annuaire Clientèle. Veuillez noter qu'un nouvel accessoire portant le nom est apparu dans sa liste Sol et tapez Énumération.Gender:

Ainsi, lors du remplissage d'une fiche client déjà en mode utilisateur, nous pourrons sélectionner seulement deux valeurs comme sexe du client : Homme et Femme :

Créons maintenant une requête qui sélectionne les clients et leur sexe dans la base de données :

Modifions maintenant la requête pour qu'il ne reste que des hommes. Si nous essayons d'écrire quelque chose comme :

alors on n'obtient rien :

Parce que les valeurs d'énumération ne sont pas accessibles de cette façon. Il faut y accéder à l'aide de la fonction SIGNIFICATION:

Ainsi, une des tâches de la fonction SIGNIFICATION- utilisation de valeurs d'énumération dans les requêtes.

Données prédéfinies

Je ferais mieux de montrer avec un exemple ce que sont les données prédéfinies pour les répertoires. Vous lisez une version d'essai de la leçon, des leçons complètes sont disponibles.

Dans notre base de données « Gastronom » (en mode utilisateur), ouvrez le répertoire « Unités de mesure » :

Examinez de plus près ses éléments. Vous voyez les cercles jaunes à côté de certains éléments ? Ces éléments (qui ont des cercles) sont données prédéfinies.

En général, si un élément du répertoire est prédéfini (c'est-à-dire qu'il comporte un cercle jaune), il s'agit alors d'un élément spécial.

Tout d'abord, cela signifie que l'élément a été créé au stade de la configuration par le programmeur (dans notre cas, il s'agit d'éléments avec les codes 1, 2 et 3).

Et deuxièmement, cela signifie que cet élément est très important pour le fonctionnement du programme. Qu'un code de la base de données y est lié (ou plutôt à son nom prédéfini).

C'est pourquoi la simple suppression d'un tel élément ne fonctionnera pas. Essayez de le marquer pour suppression :

Passons maintenant au mode configuration et voyons où sont créés ces éléments prédéfinis (en l'occurrence pour le répertoire Unités de mesure) :

Voici tous nos éléments prédéfinis pour le livre de référence des unités de mesure. Veuillez noter que tous les éléments prédéfinis ont un nom spécial qui n'est pas affiché en mode utilisateur.

Pour un élément avec le code 1, ce nom est Ton, avec le code 2 - Gram et ainsi de suite. Ce nom s'appelle nom d'élément prédéfini et c'est par ce nom que vous pourrez y accéder depuis le code (ou depuis la requête dans notre cas).

Vous vous demandez peut-être pourquoi il n'a pas été possible de faire des unités de mesure simplement une liste avec les éléments Ton, Gram et Pack ? Et tout cela parce que dans ce cas, il est important pour nous que le livre de référence des unités de mesure contienne toujours des éléments spécifiques (tonne, gramme et paquet), mais en même temps nous ne voulons pas interdire à l'utilisateur d'en ajouter certains. éléments (kilogramme, pièce, etc.). Vous lisez une version d'essai de la leçon, des leçons complètes sont disponibles.

Par conséquent, les éléments prédéfinis sont ici nettement plus adaptés que les énumérations.

Et nous pouvons accéder à nos éléments prédéfinis depuis la requête en utilisant une fonction qui nous est déjà familière SIGNIFICATION:

Passer l'examen

Démarrer l'essai

1. Les valeurs d'énumération sont définies

2. Pour stocker une liste d'entrepôts dans une entreprise, le type

3. Pour stocker une liste d'unités de mesure dans un entrepôt, le type

4. Pour stocker les taux de taxe dont la liste ne doit pas être modifiée par l'utilisateur, le type

5. Pour accéder à la valeur d'énumération dans une requête, utilisez la fonction

6. Pour stocker les taux de taxe dont la liste sera modifiée par l'utilisateur, le type

7. Les données prédéfinies sont fournies avec

Bonne journée.

Aujourd'hui, nous parlerons de l'innovation de la plateforme 8.3 concernant les éléments prédéfinis.

Introduction

Je vous rappelle qu'auparavant dans la pratique, j'avais très souvent envie de regarder un élément de répertoire pour connaître son nom prédéfini. Par exemple, vous avez créé deux contreparties prédéfinies et les avez nommées IPSidorov et OOOMeteor. Et ils leur ont cousu une certaine logique.

Lorsque tout a été débogué et élaboré, il s'est avéré que la tâche était posée à l'envers et que la logique de l'entrepreneur individuel était nécessaire pour la LLC, et la logique de la LLC était nécessaire pour l'entrepreneur individuel. « Pas de problème », disons-nous, et en mode entreprise, nous renommeons les éléments. Après tout, entrer dans le code est beaucoup plus difficile. Une année passe et une nouvelle tâche vous est confiée : mettre en place un peu plus de logique pour IP Sidorov. Vous allez dans le configurateur, écrivez la logique, commencez à vérifier et rien ne fonctionne, parce que... dans le configurateur IPSidorov et dans l'entreprise - OOOMeteor. Le cerveau est brisé et je veux détruire ce râteau. Le plus simple et le plus évident est d'afficher le nom d'un élément prédéfini sous forme de liste. Voici le problème : vous ne pouvez obtenir le nom d'un nom prédéfini que dans la version 8.2 en utilisant la méthode. Mais la méthode a ses propres inconvénients ; elle ne peut pas être obtenue dans une requête. Ceux. Le premier inconvénient est d'obtenir le nom du prédéfini à partir d'une référence au répertoire.

Le deuxième inconvénient est que nous avons déjà un élément de répertoire et que nous devons le prédéfinir. Nous créons un élément prédéfini et obtenons deux éléments dans le répertoire. L’une est prédéfinie, l’autre est opérationnelle, ce qui est référencé dans tous nos documents. Remplacer les liens est certainement utile, mais si la base de données est volumineuse, c'est difficile.

Maintenant au point

La première est que le répertoire possède désormais la propriété "Mise à jour des données prédéfinies".

Que nous apporte ce champ ? S'il est défini sur "Ne pas mettre à jour automatiquement", alors en ajoutant un élément prédéfini, nous ne le verrons pas tout de suite dans le répertoire. Ceux. les métadonnées ne sont en aucun cas associées aux données. Et si vous ne le créez pas dans le répertoire, alors y accéder par son nom via le gestionnaire de répertoire provoquera une erreur de syntaxe.

Très intéressant, mais pourquoi ? Comment peut-on créer un élément dans le répertoire ? Vous pouvez le créer comme vous le souhaitez ou le lier à un existant. Le répertoire possède désormais l'attribut "Nom des données prédéfinies". Nous créons un élément de répertoire par programme comme d'habitude via «Directories.Contractors.CreateElement()» et remplissons son attribut «PredefinedDataName» égal au nom de l'élément prédéfini. Ou si l'élément existe déjà, nous récupérons son objet et remplissons à nouveau le « Nom des données prédéfinies ». Tous.

Et enfin un peu de sirop

Ce nouvel attribut est non seulement lisible et inscriptible, il est également disponible dans les requêtes. De cette façon, vous pouvez lui imposer des conditions dans les requêtes, déterminer s'il est prédéfini ou non.

Merci pour votre attention.

Partager