Maison / Maîtriser le PC / Modèle de base de données

Modèle de base de données

Modèle de base de données

Le modèle de base de données 1C:Enterprise 8 possède un certain nombre de fonctionnalités qui le distinguent des modèles classiques de systèmes de gestion de bases de données (par exemple, basés sur des tables relationnelles), que les développeurs traitent dans les systèmes universels.

La principale différence est que le développeur 1C:Enterprise n'accède pas directement à la base de données. Il fonctionne directement avec la plateforme 1C:Enterprise. Ce faisant, il peut :

  • décrire les structures de données dans le configurateur,
  • manipuler des données à l'aide d'objets langage intégrés,
  • écrire des requêtes sur les données à l'aide d'un langage de requête.

La plate-forme 1C:Enterprise fournit des opérations pour exécuter des requêtes, décrire les structures de données et manipuler les données, en les traduisant en commandes appropriées. Il peut s'agir de commandes provenant d'un système de gestion de base de données, dans le cas d'une version client-serveur du travail, ou de commandes provenant de son propre moteur de base de données pour une version fichier.

Système de type général

Une caractéristique importante du travail avec une base de données est que 1C:Enterprise 8 implémente système général types de langues et champs de base de données. En d’autres termes, le développeur définit les champs de la base de données et les variables de langage intégrées de la même manière et les utilise de la même manière.

C'est ainsi que le système 1C:Enterprise se compare avantageusement aux systèmes universels outils. En règle générale, lors de la création d'applications métier à l'aide d'environnements de développement universels, des systèmes de gestion de bases de données fournis séparément sont utilisés. Cela signifie que le développeur doit constamment se soucier des conversions entre les types de données pris en charge par un système de gestion de base de données particulier et les types pris en charge par le langage de programmation.

Stockage des références aux objets

Lors de la manipulation des données stockées dans la base de données 1C:Enterprise, une approche objet est souvent utilisée. Cela signifie que l'accès (lecture et écriture) à un certain ensemble de données stockées dans la base de données se produit comme un tout. Par exemple, grâce à la technologie objet, vous pouvez manipuler des données provenant d’annuaires, de documents, de plans de caractéristiques, de plans comptables, etc.

Une caractéristique de la manipulation de données basée sur les objets est que pour chaque objet, en tant qu'ensemble de données, il existe un lien unique qui vous permet d'identifier de manière unique cet objet dans la base de données.

Ce lien est également stocké dans un champ de base de données, avec le reste des données de l'objet. De plus, un lien peut être utilisé comme valeur d'un champ d'un autre objet. Par exemple, une référence à un objet répertoire Contreparties peut être utilisé comme valeur de l'attribut de document correspondant Facture d'achat.

Types composites

Une caractéristique essentielle du modèle de données pris en charge par 1C:Enterprise 8 est que pour un champ de base de données, vous pouvez définir plusieurs types de données à la fois, dont les valeurs peuvent être stockées dans ce champ. Dans ce cas, une valeur sera stockée à chaque instant, mais elle peut être différents types- à la fois référence et primitive - nombre, chaîne, date, etc. :

Cette fonctionnalité est très importante pour les tâches économiques - par exemple, dans la facture, soit une personne morale du répertoire des organisations, soit individuel du répertoire des particuliers. En conséquence, lors de la conception d'une base de données, un développeur peut définir un champ qui stockera une valeur de l'un de ces types.

Stockage de toutes les données en tant que magasin de valeur

L'idéologie de création de solutions d'application dans 1C:Enterprise 8 suppose que tous les fichiers liés à une solution d'application donnée doivent être stockés dans la base de données elle-même.

Pour cela, un type de données spécial a été introduit - Valeurs de stockage. Les champs de base de données peuvent stocker des valeurs de ce type et le langage intégré contient un objet spécial du même nom qui vous permet de convertir des valeurs d'autres types dans un format spécial de magasin de valeurs.

Cela permet au développeur de stocker dans la base de données des valeurs dont le type ne peut pas être sélectionné comme type de champ de base de données, par exemple des images graphiques.

Création et mise à jour de structures de données basées sur des métadonnées

Lors du processus de création ou de modification d'une solution d'application, le développeur est libéré de toute action visant à modifier directement la structure des champs de la base de données de la solution d'application.

Il suffit au développeur de décrire par conception visuelle la structure des objets de la solution applicative utilisée, la composition de leurs détails, parties tabulaires, formulaires, etc.

La plateforme effectuera toutes les actions pour créer ou modifier la structure des tables de la base de données de manière indépendante, en fonction de la composition des objets de la solution applicative et de leurs caractéristiques.

Par exemple, afin de permettre de stocker des informations sur la composition de la famille d'un employé dans l'annuaire des employés, le développeur 1C:Enterprise n'a pas besoin de créer une nouvelle table spéciale dans la base de données ni de définir des règles selon lesquelles les données stockées dans cette table sera lié aux données de la table principale, programmer des algorithmes pour l'accès partagé aux données de ces tables, créer des algorithmes pour vérifier les droits d'accès aux données situées dans une table subordonnée, etc.

Tout ce que le développeur doit faire est de l'ajouter au répertoire d'un simple clic de souris. partie tabulaire et définissez ses deux détails de chaîne : Nom Et Parenté. Lors de l'enregistrement ou de la mise à jour de la configuration, la plateforme réorganisera indépendamment la structure de la base de données, créera les tables nécessaires, etc.

Accès aux données objet/table

Une fonctionnalité standard de 1C:Enterprise 8 est la prise en charge de deux méthodes d'accès aux données : objet (pour la lecture et l'écriture) et tableau (pour la lecture).

Dans le modèle objet, le développeur opère avec des objets du langage intégré. Dans ce modèle, l'accès à un objet, par exemple un document, se produit dans son ensemble - il est entièrement chargé en mémoire, avec des tables imbriquées, accessibles à l'aide du langage intégré sous forme de collections d'enregistrements, etc.

Lors de la manipulation des données dans le modèle objet, l'intégrité des objets est préservée, les objets sont mis en cache, les gestionnaires d'événements appropriés sont appelés, etc.

Dans le modèle tabulaire, l'ensemble des objets d'une classe particulière est représenté comme un ensemble de tables interconnectées accessibles à l'aide de requêtes - à la fois sur une seule table et sur plusieurs tables dans une relation :

Dans ce cas, le développeur a accès aux données de plusieurs objets à la fois, ce qui est très pratique pour analyser de gros volumes de données, par exemple lors de la création de rapports. Cependant, du fait que les données ainsi sélectionnées ne contiennent pas tous, mais seulement certains détails des objets analysés, la méthode d'accès tabulaire ne permet pas de modifier ces données.

« Il vaut mieux perdre une journée, puis voler en cinq minutes » (c) m/f Ailes, Jambes et Queues.

Il existe trois excellents articles sur Habré sur la gestion des listes de bases de données dans 8.x :

Chacun d'eux contient sa propre pièce du puzzle de l'ensemble : Gestion facile des listes de bases de données 1C.

Prologue

L'idéologie de construction donnée vous permet d'adapter facilement les paramètres, à la fois pour de simples bureaux avec un seul domaine et pour une structure multi-domaines au sein d'une forêt. Chacun choisit lui-même la mise en œuvre spécifique de la solution, mais ici les bases sont posées pour obtenir la flexibilité nécessaire sans effort supplémentaire. La décision est facilement héritée. Il n'y a pas de scripts. Pas du tout. Du tout.

Alors contre quoi luttons-nous :

Il y a beaucoup d'utilisateurs !– contourner plus de 40 utilisateurs dans le but commun d'enregistrer une nouvelle base de données ou de modifier les paramètres de connexion de l'ancienne prendra un temps décent. Eh bien, ceux qui ont des combattants du support technique.
Il y a beaucoup de bases !– un zoo de bases de données, des bases de données de test avec soumission facile depuis 1Snikov qui finissent en production tout en étant toujours sur les serveurs pour les tests. On multiplie par le nombre d'utilisateurs et on est horrifié.
Noms de bases de données incompréhensibles !- à cet endroit, à chaque fois j'imagine comment de mes propres mains l'âme du prochain 1Snick pour la base avec le nom " new2_baza2_copy» auquel sont attachés un ensemble de traitements, de rapports et de connexions COM. Car il lui semblait logique de nommer la nouvelle base CELA. Il n’existe qu’une seule organisation et elle ne grandira pas soudainement. Et il est le seul à se souvenir de tout. Et il n'abandonnera jamais. Et la documentation est réalisée par des faibles. Oui, cela peut toujours être refait rapidement !
- chaque Nouvel utilisateur ne sait pas de quelles bases il a besoin (sonne souvent : « J'ai besoin de TOUT »), les salariés changent souvent de poste, de département, d'organisation et, par conséquent, de responsabilités. – des scripts doux analysant toute la forêt AD à la recherche de certains noms de groupes afin de connecter une base de données. Qui l'a écrit? Sur quoi? Quand? Où sont les commentaires ?
Où sont mes bases ?!- Oops. De nombreuses solutions ne vous permettent pas d'enregistrer une liste individuelle de bases de données utilisateur 1C et d'utiliser en même temps un ensemble prédéfini de bases de données.
Grappes 1C ? Serveurs de base de données ?– y a-t-il une différence ? Il peut y avoir plus d'un. Différentes versions 1C, différentes bases de données. Le support technique essaie de déterminer exactement ce qu'il faut écrire sur le PC de l'utilisateur.

J'ai décrit la douleur principale.

Divulgacher?

1. Toutes les infrastructures présentées sont testées et virtuelles. Toutes les correspondances avec des noms entités juridiques sont aléatoires.
2. Pardonnez-moi pour l'interface en anglais dans les captures d'écran des serveurs. Je ne pourrais pas le faire autrement.
3. Faites-moi confiance, je suis chef d'équipe d'administrateur système, je sais ce que je fais ! (Avec)

Six étapes vers le bonheur :

Étape 1 - Inventaire
Nous prenons un éditeur de table et 1Snikov. Et nous faisons un inventaire détaillé, peut-être même à la main :

Un tableau comme celui-ci est généré :

Notre tâche est de comprendre ce qui se trouve où. Structure. Écrivez-le en détail.

Étape 2 - Groupes AD pour les bases de données 1C
Création de groupes pour les bases de données dans Active Directory, écrivez immédiatement dans la description du cluster et du serveur de base de données utilisés :

En sortie on obtient des informations détaillées sur chaque base de données de la structure Active Directory. Spécifier le nom de la base de données dans le nom du groupe AD facilite grandement la recherche du groupe pour une base de données spécifique dans les grandes infrastructures. J'ai sélectionné les utilisateurs, choisi de les ajouter au groupe et spécifié le nom de la base de données souhaitée. Ah et c'est tout. Dans le même temps, vos collègues (ou successeurs) verront immédiatement quel groupe AD est responsable de quelle base de données et où se trouve la base de données.

Important:
En plus de créer des groupes AD pour chaque base de données, vous devez créer un groupe AD supplémentaire " » - cela nous aidera à donner accès à la ressource de fichier où sont stockées les configurations v8i de toutes les bases de données dont nous avons besoin. Nous incluons dans ce groupe tous les groupes AD pour les bases de données 1C. N'oubliez pas d'ajouter de nouveaux groupes AD pour les bases de données 1C. Nous aurons également besoin d'un groupe dans sa composition Ordinateurs du domaine pour autoriser les comptes PC à accéder au partage de fichiers. En savoir plus sur les nuances ci-dessous.

Étape 3 - Fichiers de configuration 1C
L'inventaire a été fait, des groupes AD pour les bases de données ont été créés, maintenant les fichiers de configuration v8i. Ils stockent les paramètres de connexion aux bases de données : le cluster 1C et le nom de la base de données dans ce cluster.
Lançons 1C. S'il existe une liste générée de bases de données, nous les nommons de manière magnifique et claire.
Organisation - Configuration - Version de configuration
On les sauvegarde par le bouton droit dans des fichiers, on nomme les fichiers par le nom de la base de données. Nous accumulons soigneusement ces merveilleux fichiers v8i dans un seul répertoire. S'il n'y a pas de liste initiale, vous pouvez créer une entrée dans la liste, ce sera la norme. À partir de là, nous générons de nouveaux fichiers de configuration v8i en entrant les informations nécessaires directement sous forme de texte dans le fichier.

La sortie est un fichier avec le contenu suivant :

Nous supprimons chaque fichier de lignes supplémentaires:

De ce fait, on obtient un certain nombre de fichiers de configuration v8i, le même nombre que les bases de données.

L'étape suivante consiste à modifier le fichier de configuration générale de la base de données pour 1C.

Par défaut, il ne contient aucune liste de bases de données :

Effectuons quelques manipulations mineures, et il indique désormais les chemins d'accès à tous les fichiers de configuration v8i des bases de données 1C.

L'accès aux fichiers v8i fonctionne de la même manière qu'avec simple dossier réseau sur un serveur de fichiers et avec une ressource DFS. Équilibrage de charge, tolérance aux pannes ? Oui! Nous savons. Volons.

En conséquence, nous avons un répertoire rempli de fichiers de configuration v8i pour chaque base de données séparément, plus fichier partagé configuration dans laquelle tous les chemins d’accès à tous les fichiers de configuration v8i sont écrits.

Étape 4 - Partage de fichiers ou DFS
Nous créons un répertoire qui contiendra les fichiers de configuration v8i pour la connexion à chaque base de données spécifique, ainsi qu'une liste générale des bases de données - le fichier 1CEStart.cfg :
nous appelons l'annuaire Bases Sync-1C.
L’approche idéologique de l’accès aux ressources communes est différente pour chacun. De nombreuses personnes préfèrent définir elles-mêmes l'accès à la ressource partagée Tout le monde - Contrôle total, puis gérez les accès au niveau système de fichiers. C'est plus facile. Je préfère couper l'accès immédiatement au niveau de la ressource partagée elle-même, sans créer de charge supplémentaire sur serveur de fichiers des doubles vérifications inutiles des capacités d’accès.

Nous donnons accès à la nouvelle ressource réseau au groupe » _Bases 1C – Accès au fichier de configuration 1CBases.cfg» lire les droits.

Manuels divins en une seule image. Au lieu de mille mots.

La toute première étape consiste à réinitialiser les paramètres par défaut des objets du répertoire Bases Sync-1C. Désactivez l'héritage des autorisations. Nous partons " SYSTÈME", locale Administrateurs, Administrateurs de domaine. Lorsqu'il existe une forêt, vous pouvez ajouter des administrateurs d'entreprise et/ou des administrateurs délégués. Nous utilisons le résultat résultant avec héritage. Là, sans s'éloigner de la caisse, on ajoute le groupe AD » _Bases 1C – Accès au fichier de configuration 1CBases.cfg" avec le droit En lisant et uniquement vers ce répertoire sans héritage. Dans cette étape, nous avons la possibilité d'accéder à la racine du dossier et d'obtenir une liste des fichiers du répertoire.


Je ne me suis toujours pas habitué à cette interface de paramétrage des droits d'accès

Par fichier 1CEStart.cfg nous accordons uniquement l'autorisation de lecture au groupe AD " _Bases 1C – Accès au fichier de configuration 1CBases.cfg»

Ensuite, chaque fichier de configuration de base de données v8i se voit accorder l'accès à son propre groupe d'accès Active Directory :

Répétez la dernière étape jusqu'à ce que les fichiers de configuration de la base de données v8i soient épuisés.

Étape 5 - Politiques de groupe
Beaucoup de gens n'utilisent pas la stratégie de groupe. Beaucoup les utilisent peu avec mépris. En vain, en vain, en vain. Il s’agit d’un outil très puissant qui facilite la vie au travail, même dans les petits bureaux.

Créez une nouvelle stratégie de groupe, liez-la à la racine du domaine. Nous indiquons que cela ne fonctionne qu'avec Ordinateurs du domaine:

La principale révélation (ou nuance) ici est que la liste des bases de données n'est pas connectée par utilisateur, mais par PC. Malheureusement, l'utilisateur ne peut pas, avec ses droits, remplacer le fichier de configuration situé dans C:\ProgramData\1C\1CEStart\ et le PC le fera pour lui.

Modification de la politique :

Ici, la tâche consiste à extraire un fichier d'une ressource partagée et à remplacer le fichier local.
Pour garantir que seuls les PC sur lesquels 1C est installé le font, nous définissons les conditions d'exécution de la stratégie de groupe via Ciblage au niveau de l'article.

On vérifie la présence du 1C installé :

C'est le test le plus élémentaire. Vérifie les éditions x86 et x64 systèmes d'exploitation. Ne fait aucune distinction entre les systèmes d'exploitation serveur et client.

Mais les conditions d'analyse elles-mêmes peuvent varier très largement, en appliquant ces paramétrages à certaines unités organisationnelles, en fonction des conditions de disponibilité des ressources réseau et de nombreux autres paramètres, ce qui permet de affiner au maximum les conditions de déclenchement de cette politique de groupe. .

Le fichier est mis en ligne au démarrage du PC, ou une fois toutes les 90+ minutes.

Étape 6 - Utilisateur
Prenons un utilisateur. Et ajoutez-le aux groupes AD :

Après quoi, nous connectons l'utilisateur au système, lançons 1C, qui lit le fichier de configuration et connecte tous les fichiers v8i auxquels l'utilisateur a accès. Résultat:

C’est exactement ce qu’ils essayaient de réaliser.

Avec ça cette décision n'affecte pas le fichier C:\Users\%username%\AppData\Roaming\1C\1CEStart\ ibases.v8i qui stocke les bases de données que l'utilisateur lui-même a enregistrées. Cependant, il peut toujours être réinitialisé pour effacer la liste des bases de données de l’utilisateur. Les polices de groupe sont entre vos mains !

Épilogue
Formellement, j'ai adopté l'une des nombreuses options de mise en œuvre. A transmis l’idéologie. Les solutions supplémentaires à cet article peuvent être assez larges :
Création automatique d'un fichier v8i, en l'ajoutant à cfg, créant un groupe AD pour la base de données 1C.
Accès en édition pour les spécialistes 1C pour les mêmes fichiers.
Vérifiez que le fichier de configuration cfg est à jour avant de le remplacer sur le PC.
Pour les paranoïaques, vous pouvez créer des fichiers cfg avec des listes prédéfinies, et dans la v8i, écrire plus d'une base. Et en général, nommez les fichiers v8i sans indiquer le nom de la base de données.
Il est possible de modifier la méthode de livraison du fichier cfg au PC, où dans la configuration du PC les droits d'accès à ce fichier, et l'utilisateur, déjà avec ses droits, l'écrase.
Et beaucoup plus. Tout ce que tu veux. Chacun est libre de décider pour lui-même.

Total:
Il y a beaucoup d'utilisateurs !- ce n'est pas important.
Il y a beaucoup de bases !– ajouté la base de données 1Sniki au registre, les utilisateurs l'ont reçue. Non saisi - même une base de données auto-connectée disparaîtra de l'utilisateur lors de la prochaine connexion, si la réinitialisation de la liste des bases de données locales est activée.
Noms de bases de données incompréhensibles !- qui s'en soucie? Vous disposez toujours d'informations à jour. S'il n'y a pas d'informations complètes sur la base de données, les utilisateurs ne disposent pas de base de données.
Rotation fréquente des utilisateurs !– y avait-il une application pour connecter la base de données ? Il y a une base ! Changement d'emplacement ou de division, perte de la base ainsi que réinitialisation des droits. - Où? Pour quoi? Ciblage équilibré et précis, informations uniquement à jour, facilité de maintenance et de support.
Où sont mes bases ?!- interdit! Ou s'il vous plaît, utilisez-le. Tout le monde est content.
Grappes 1C ? Serveurs de base de données ?- pas de confusion. Tout est déjà réglé dans les paramètres. Les techniciens sont occupés avec des choses utiles et ne savent pas qui, où et quoi prescrire, comment l'appeler par des noms et comment ne pas laisser les utilisateurs le matin sans système de comptabilité en raison d'une mise à jour.

P.S.

J'ai perdu la journée. Pour que vous puissiez arriver dans cinq minutes. Merci!

Mise à jour:
habrazhitel -