Maison / Tutoriels Windows / Sources de données externes de la version terrain 1c. Sources de données externes. Onglet Données du formulaire des propriétés de la source externe

Sources de données externes de la version terrain 1c. Sources de données externes. Onglet Données du formulaire des propriétés de la source externe

Travaillez avec eux dans des listes en mode 1C Enterprise.

Cependant, au travail, une situation se présente souvent lorsqu'une partie des données est stockée ailleurs.

  • Boutique en ligne (stocke généralement les données dans une base de données MySQL/SQL externe)
  • Un autre socle.

Pour travailler avec de telles données stockées dans d'autres bases de données, vous devez développer des mécanismes spéciaux.

Dans la version 1C 8.2.14, un nouveau est apparu sous le nom Sources externes Données 1C, qui facilitent grandement le travail du programmeur, puisque :

  • maintenant, il n'est pas nécessaire de créer des mécanismes spéciaux pour obtenir des données
  • ces données sont accessibles par
  • ces données peuvent être visualisées dans des listes 1C.
    • Source de données externe 1C - embase externe SQL

      Disons que nous avons une base de données SQL qui stocke les données dont nous avons besoin. Essayons d'en lire les données à l'aide du mécanisme de source de données externe 1C.

      Ajoutons une source de données externe 1C. Il faut se rendre dans le configurateur, les sources de données externes sont situées dans la fenêtre de configuration, tout en bas de l'arborescence.

      1. Connexion

      Ajoutons une nouvelle source de données externe 1C, appelons-la arbitrairement.

      La base de données est composée de tables. Nous devons les ajouter à l'intérieur de la source de données externe ajoutée. Faites un clic droit dessus et sélectionnez Ajouter une table.

      La première fois, il vous demandera de fournir une chaîne de connexion. Il peut être saisi manuellement ou formé, pour lequel vous devez cliquer sur le bouton «…».

      En tant que pilote dans notre cas particulier, nous sélectionnerons "SQL Server"

      Complétons les paramètres de base pour se connecter à SQL. Le nom du serveur peut être saisi ou sélectionné dans la liste.

      1C se connectera à SQL et vous invitera à sélectionner une base de données spécifique dans la liste.

      Après cela, 1C affichera une liste des tables de cette base de données et leurs colonnes. Vous devez sélectionner les tables requises avec des cases à cocher.

      Des tableaux et des colonnes seront ajoutés. Les noms seront tels qu'ils sont définis dans la base de données distante. En 1C, vous pouvez les renommer (dans les propriétés).

      Voici un exemple de table ajoutée :

      Voici un exemple de colonne ajoutée :

      Pour que la plate-forme 1C fonctionne avec une table externe de la même manière qu'avec les répertoires 1C, des paramètres supplémentaires peuvent être spécifiés dans la table :

      • Dans la propriété Champ clé, spécifiez l'une des colonnes qui fournira une identification unique de la ligne ; si plusieurs chaînes fournissent l'unicité, alors Par ici ne fonctionne pas (analogue du champ Code)
      • Dans la propriété Champ d'affichage, spécifiez l'une des colonnes qui fournira une brève représentation de la chaîne (analogue du champ Nom)
      • Dans la propriété Type de données de table, spécifiez les données d'objet.

      2. Voir

      La connexion à la base de données distante ne se fait pas automatiquement. Pour vous connecter, vous devez sélectionner un menu type.

      Dans la branche Standard, il existe une commande spéciale Gérer les sources de données externes, qui vous permet de spécifier les paramètres de connexion (les leurs pour le mode 1C Enterprise) et de vous connecter.

      Vous devez d'abord spécifier les paramètres de connexion à la base de données.

      Lorsque vous avez effectué la configuration dans le configurateur, il vous a montré la chaîne de connexion en conséquence. Vous pouvez le revoir en cliquant à nouveau sur Ajouter une table dans le configurateur.

      Copiez la chaîne de connexion et spécifiez-la en mode 1C Enterprise.

      Après cela, vous devez établir la connexion réelle.

      Une fois la connexion établie, il est possible de travailler avec des listes.

      3. Utilisation en langage 1C

      La connexion peut également être établie à partir du code de programme en langage 1C.

      Les paramètres de connexion sont spécifiés comme suit :
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetCommonConnectionParameters();

      ConnectionParameters.AuthenticationStandard = vrai ;
      ConnectionParameters.UserName = "sa" ;
      ConnectionParameters.Password = "mot de passe" ;
      ConnectionParameters.ConnectionString = "chaîne de connexion du configurateur" ;
      ConnectionParameters.DBMS = "MSSQLServer" ;

      ExternalDataSources.SourceNameConfigurator.SetCommonConnectionParameters(ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters(UserName(), Parameters);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters(Parameters);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      Vous pouvez interroger les données de la base de données à l'aide de l'habituel . Un exemple de texte de requête pour une source externe OurExternalSource et tablesExternalSourceTable :

      CHOISIR
      ExternalSource Table.FieldName
      DEPUIS
      ExternalDataSource.NotreExternalSource.Table.ExternalSourceTable"

      Source de données externe 1C - travailler avec un fichier Excel

      Essayons une autre option - travailler avec un fichier Excel via une source de données 1C externe.

      Créons un simple fichier Excel.

      Ajoutons une source externe, nommons-la arbitrairement FileExcel. Ajoutez-y la table "Sheet1 $". Comme vous pouvez le voir, il s'agit du nom de la feuille dans Excel avec l'ajout du symbole "$".

      Comme dans le cas de SQL, ajoutons des colonnes. Ils peuvent être ajoutés manuellement. Il est important de s'assurer que les types des colonnes ajoutées correspondent, sinon vous risquez d'obtenir une erreur telle que "Data Type Mismatch" plus tard.

      Pour la colonne, vous devez spécifier le nom en 1C et le nom dans la source de données.

      Pour Excel, il existe une fonctionnalité (une erreur du type "Trop peu de paramètres. Requiert 3") :

      • Si la première ligne du tableau Excel contient des noms de colonnes, il vous suffit de spécifier le nom de cette colonne, par exemple, "Code".
      • Sinon, vous devez spécifier le nom complet avec le nom de table "Sheet1$.Code", mais ajouter "HDR=NO;" dans les paramètres.

      Les paramètres de connexion d'un fichier Excel ressemblent à ceci :

      • Fichiers XLSX ( Version bureautique 2007 et plus)
        Pilote=( Microsoft Excel Pilote (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;
      • Fichiers XLS (anciennement)
        Pilote=(Pilote Microsoft Excel (*.xls)); DriverID=790 ; DBQ=D:\FileExcel.xls ;
        Vous devez spécifier votre propre nom et chemin d'accès au fichier.

Sources de données externes 1C est un objet de métadonnées relativement nouveau 1C 8.3 et 8.2, à l'aide duquel il est possible de connecter des sources de données externes à 1C : tables SQL, Excel, Access, FoxPro (dbf), une autre base de données 1C, Oracle, Paradox (db), - et même la lecture de fichiers simples txt/csv.

Cela donne beaucoup d'occasions de travailler avec d'autres systèmes. Considérons plus en détail.

Configuration de sources de données externes dans 1C 8

La configuration des sources externes est individuelle pour chaque type de système. Mais, en règle générale, la partie commune du paramètre est la même - il s'agit de définir la chaîne de connexion :

Obtenez gratuitement 267 leçons vidéo 1C :

Si la chaîne de connexion est correcte, le système vous invite à sélectionner la table requise dans la base de données. En conséquence, nous obtiendrons un tableau prêt à l'emploi dans lequel vous pourrez spécifier le champ clé (champ unique) et le champ d'affichage (comment l'enregistrement sera reflété dans 1C):

Utilisation de sources de données externes dans 1C 8.3

Les sources de données externes dans 1C peuvent être utilisées comme d'autres tables de base de données. La plateforme génère automatiquement un formulaire pour eux si aucun n'est défini. Les requêtes peuvent également utiliser des données provenant de sources externes.

Dans la plate-forme version 8.3.5.1068 (et ultérieure), il est devenu possible d'ajouter, de modifier et de supprimer des données dans des sources externes outils logiciels 1C. Des exemples de cette fonctionnalité sont présentés dans cet article.

Afin de rendre possible l'enregistrement sur des sources externes, 1C a ajouté de nouvelles propriétés aux tables de données et aux champs de sources externes :

  • Pour toute la table - propriété Lecture seule. Lecture seule = Vrai signifie que la modification des données dans ce tableau n'est pas possible ;
  • Pour les champs de table individuels - propriétés Lecture seule, Permettre null Et Valeur de remplissage:
    • Lecture seule = Vrai signifie que la modification des données dans ce champ n'est pas possible ;
    • AutoriserNull = Vrai signifie qu'une valeur peut être écrite dans ce champ NUL;
    • Valeur de remplissage contient la valeur par défaut de ce champ (s'il existe).

Vous (lors de la description manuelle des tables) ou la plateforme (lors de la création de tables avec le concepteur) pouvez utiliser ces propriétés de la manière suivante.

  • Lecture seule = Vrai défini, par exemple, pour les vues (vue), les tables obtenues sur la base d'une expression (résultat de la fonction) et similaires. Les données de ces tables ne peuvent pas être modifiées ;
  • Lecture seule = Vrai spécifier pour les champs définis automatiquement ( INCRÉMENTATION AUTOMATIQUE), champs calculés, etc. Les données de ces champs ne peuvent pas être modifiées ;
  • AutoriserNull = Vrai défini pour tous les champs, à l'exception des champs clés, et ceux qui sont décrits dans une source externe comme NON NUL;
  • Valeur de remplissage champs à définir dans le cas où la valeur standard de ce champ est précisée dans la source externe (valeur DÉFAUT).

Vous pouvez ajouter, modifier et supprimer des données dans des sources externes à l'aide du langage intégré ou de manière interactive. Dans le langage intégré, les méthodes suivantes du gestionnaire de tables sont utilisées pour cela :

  • Créer un jeu d'enregistrements()- pour les tables non-objet ;
  • Nouvelle méthode CréerObjet()- pour les tables d'objets.

En conséquence, les objets ExternalDataSourceTableRecordSet Et ExternalDataSourceTableObjectExternalDataSourceTableObject de nouvelles méthodes sont apparues Écrire() Et Supprimer().

Ajout de données

Lorsque vous ajoutez des données à une source externe, vous créez un objet (ou un jeu d'enregistrements), définissez des valeurs de champ et écrivez. Cependant, certaines fonctionnalités sont utiles à connaître.

Par exemple, lorsque vous essayez de définir la valeur d'un champ qui a Lecture seule = Vrai, une erreur sera renvoyée. Et lors de l'écriture directement dans la base de données dans l'expression INSÉRER ces champs seront ignorés. Le reste des champs est rempli avec les valeurs que vous leur avez attribuées. Par conséquent, les valeurs Nul et les valeurs par défaut doivent être attribuées explicitement aux champs.

  • identifiant(AutoriserNull = Vrai);
  • nom(AutoriserNull = Vrai);
mCharacteristic = ExternalDataSources.IM.Tables.shop_feature.CreateObject(); mCaractère.id = Code ; mCharacteristic.name = Nom ; mCharacteristic.Write();

Exécution de l'instruction Écrire() provoquera l'appel du gestionnaire d'événements en premier Avant l'enregistrement, puis une écriture physique est effectuée dans la table source externe ( INSÉRER), alors le gestionnaire d'événements sera appelé Lors de l'enregistrement.

Avec le champ clé de la table source externe, vous pouvez effectuer les opérations suivantes. Si le champ clé est modifiable, vous définissez "manuellement" sa valeur avant d'écrire. Si la modification du champ clé est interdite, la plateforme obtiendra indépendamment la clé dans INSÉRER ou juste après. Vous pouvez intervenir dans ce processus avec la méthode SetReferenceNew() avant l'enregistrement physique (dans le gestionnaire d'événements Avant l'enregistrement) ou directement après l'entrée physique (dans le gestionnaire d'événements Lors de l'enregistrement).

Modifier les données

Lorsque les données sont modifiées, les valeurs de tous les champs de la table qui ont Lecture seule = Faux.

MFeature = ExternalDataSources.IM.Tables.shop_feature.FindByField("id",code); mObject = mCharacteristic.GetObject(); mObject.name = Nom ; mObject.Write();

S'il est nécessaire d'enregistrer uniquement certains champs, vous pouvez spécifier leur liste directement depuis le langage intégré en utilisant les méthodes SetWritableFields() Et GetWritableFields().

Suppression de données

La suppression de données supprime directement une ligne d'une table de base de données. Dans le même temps, les références à l'objet supprimé ne sont pas recherchées. Si une telle fonctionnalité est nécessaire, vous pouvez la programmer vous-même dans le gestionnaire d'événements AvantSuppression().

MFeature = ExternalDataSources.IM.Tables.shop_feature.FindByField("id",Code); mObject = mCharacteristic.GetObject(); mObject.Delete();

Transactions

La lecture de données provenant de sources externes, comme auparavant, est effectuée en dehors d'une transaction, et lors de l'écriture, la plate-forme ouvre une transaction implicite. En même temps, vous pouvez effectuer à la fois la lecture et l'écriture dans des transactions explicites à l'aide de méthodes d'objet ExternalDataSourceManager:

  • DébutTransaction();
  • CommitTransaction();
  • Annuler la transaction().

Serrures

  • Auto;
  • Géré;
  • Automatique et contrôlé.

ainsi que la propriété table source externe Niveau d'isolementTransactions:

De plus, vous pouvez définir indépendamment le niveau de verrouillage dans la méthode DébutTransaction().

J'ai complété l'article typique avec des exemples) Il y aura plus de temps - j'ajouterai plus d'exemples.

Version 8.2.14.533 - enfin une version plus ou moins stable de la 14e version de la plateforme. Enfin, il y avait une chance d'essayer une merveilleuse opportunité - "les sources de données externes".

Pourquoi cette opportunité suscite un tel intérêt ? Toute personne qui a programmé en 1C est assez familière avec SQL et au moins en termes généraux familiers avec l'architecture et les principes de développement d'autres plates-formes technologiques pour les applications métier vous dira avec certitude ce qu'il aime le plus en 1C. Bien sûr, le générateur de requêtes est le mécanisme le plus pratique et le plus réfléchi pour écrire des requêtes afin d'obtenir des données à partir de structures relationnelles que j'ai personnellement rencontrées. Et maintenant, 1C nous a donné une merveilleuse opportunité de l'utiliser non seulement avec 1C, mais aussi avec n'importe quelle autre table. Voici juste un tas de "mouche dans la pommade" versé dans ce "tonneau de miel". Tout dans l'ordre :

1) Configuration et utilisation - sans "danser avec un tambourin", cela ne fonctionnera pas

A) Ajouter une source de données externe - cela ne semble pas compliqué
b) cochez la case "Sélectionner dans la liste" - c'est nécessaire - cela est nécessaire pour vérifier les performances au début et vous éviter des problèmes inutiles
V)
(IMG : http://pics.livejournal.com/comol/pic/0000cr1r.png)
- assurez-vous d'appuyer sur "..." - la connexion est ODBC. Pas OLEDB comme nous en avons tous l'habitude, mais un niveau plus bas

Et être ici TRÈS À L'ATTENTION.

Il s'agit d'un pilote ODBC - si vous utilisez la version client-serveur, il doit se trouver sur le serveur. Si vous développez sur un seul système, et version de travail d'autre part (comme c'est généralement le cas) assurez-vous qu'il n'y a pas de surprises en réserve pour vous. Une recommandation étrange, mais choisissez le pilote le plus ancien ou le plus courant si vous n'êtes pas particulièrement soucieux de la vitesse et que vous n'avez pas l'intention d'aller au-delà des limites de la norme SQL92. Cela vous fournira meilleure compatibilité. Par exemple pour SQL Server 2008 le meilleur pilote il y aura SQL Server Native Client 11, mais je recommande de choisir uniquement SQL Server, sinon ce client très natif devra être installé soit sur le serveur, soit sur toutes les machines clientes (dans le cas de l'utilisation de la version fichier), et il ne donne pas beaucoup de gain pour des tâches simples.

E) Boîtes de dialogue de sélection de serveur standard

G) Choisissez une table et des détails ... une excellente opportunité - vous pouvez immédiatement la renommer comme vous le souhaitez (et les détails aussi), tandis que dans les propriétés, vous verrez les noms des champs de la source de données

H) Et maintenant vous exécutez, ouvrez le concepteur de requêtes - vous sélectionnez bêtement tous les enregistrements de la table et l'OPA - une erreur. Ce qu'il faut faire? Si vous avez une interface managée, regardez dans le menu service, et si vous en avez une normale...
J'ai personnellement utilisé ce code :

Paramètres = ExternalDataSources.DAX.GetCommonConnectionParameters();
Paramètres.AuthenticationStandard = true ;
Paramètres.UserName = "sa" ;
Paramètres.Password = "pas" ;
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=database" ;
Paramètres.DBMS = "MSSQLServer" ;

ExternalDataSources.DAX.SetCommonConnectionParameters(Parameters);
ExternalDataSources.DAX.SetUserConnectionParameters(UserName(), Parameters);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();

Peut-être que certaines pièces ne sont pas nécessaires, mais cela fonctionne. Besoin d'exécuter du code UNE FOIS. Après cela, il se connectera normalement ... le mysticisme bien sûr - pourquoi c'était nécessaire n'est pas clair ...

2) Sources de données en lecture seule
Oui, les miracles ne se produisent pas ... mais parfois vous voulez ....

3) NE PAS LES UTILISER AVEC DES SOURCES DE DONNÉES INTERNES
Personnellement, ce fait m'a tué sur le coup.

Comment est-ce ... ce qu'ils attendaient et déjà imaginé et léché comment nous combinons maintenant nos données avec 1C dans une seule demande, les retournons - les regroupons, les insérons dans le rapport, mais ce n'était pas là .. .

Mais bien sûr, cela n'arrête pas les personnes expérimentées ... quelle pensée vous est venue à l'esprit? C'est vrai - tables temporaires :

4) NE PAS LES UTILISER AVEC DES TABLES TEMPORAIRES

Mais cela ne ressemble plus à des difficultés technologiques, mais cela ressemble beaucoup à ce qu'ils veulent que nous fassions "pour que la vie ne ressemble pas à un paradis" (IMG :) .

5) Ne peut être utilisé que dans les connexions SKD

Pour ceux qui ne le savent pas, c'est dans l'ACS sur l'onglet "Dataset Links". À quelle fréquence les utilisez-vous ? Confortable? Apparemment, ils veulent nous forcer à les utiliser plus souvent. Mais il y a une colonne "Condition de lien" et "Paramètre de lien". Je n'ai trouvé aucun exemple de leur utilisation dans une configuration typique, dans la documentation et dans Khrustaleva également, d'une manière ou d'une autre, tout n'est pas transparent. Quelqu'un peut-il m'expliquer comment fonctionne la "condition de lien". Si vous y écrivez SourceAttribute = ReceiverRevision, cela ne fonctionne pas. Bien sûr, la condition peut être écrite dans le champ "Expression" - dans la plupart des cas, cela suffit ... mais d'une manière ou d'une autre, ce n'est pas très facile.

Au total, ce problème a déjà été résolu quelque part comme ceci :

Fonction InitializeDataSource()

DateStart = BuilderSettings.Settings.DataParameters.Items.Value ;
DateCon = BuilderSettings.Settings.DataParameters.Items.Value ;
Si DateCon > "20100101" Alors
DateCon = "20100101" ;
Fin si;

QN = NewQualifiersNumber(15,2);
cs = NewStringQualifiers(255);

NuméroTableau = Nouveau Tableau();
ArrayNumber.Add(Type("Number"));

ArrayString = Nouveau tableau();
ArrayString.Add(Type("String"));

ArrayData = Nouveau tableau();
ArrayDate.Add(Type("Date"));

//Nous renseignerons le coût comptable dans le tableau
TypeNumber = NewTypeDescription(ArrayNumber,KN);
StringType = NewTypeDescription(ArrayString, CS);
TypeDate = NewTypeDescription(ArrayDate);

//table pour charger les données depuis SQL
TK = Nouvelle Table de Valeurs();
TK.Columns.Add("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Période", TypeDate);

TK.Indices.Add("Période");

// Connexion à SQL
ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Pwd=;Data Source=;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=Reports" ;
Connexion = New COMObject("ADODB.Connexion");
Commande = New COMObject("ADODB.Command");
RecordSet = New COMObject("ADODB.RecordSet");
Date="" ;
Tentative
Connexion.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Connexion ;
Command.CommandText = "Select * from PH where period >= "" + String(Format(DateStart, "DF=yyyyMMdd")) + "" et period RecordSet = Command.Execute();
RecordSet.MoveFirst();
Exception
Retour des savoirs traditionnels ;
fin de tentative ;

Tandis que RecordSet.EOF = fausse boucle
String = TK.Add();
String.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Value ;
String.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value ;
String.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Value ;
RecordSet.MoveNext();
FinCycle ;

Demande = Nouvelle demande();
VrTable = NewTempTableManager();
Query.SetParameter("vDataTable", TK);
Requête.SetParameter("StartDate", StartDate);
Requête.SetParameter("DateCon", DateCon);
Requête.Texte = "SELECT
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|PUT Table de données
| DEPUIS
| &vrDataTable AS vrDataTable
| OÙ
| vrDataTable.Period >= &DateStart
| Et vrDataTable.Period Query.Execute();
TK = Non défini ;

Demande = Nouvelle demande ;
Query.TempTableManager = VrTable ;
Query.Text = "Voici une requête impliquant une table temporaire" ;

Résultat = Request.Run();
Retourner le résultat ;

EndFunctions

OuterSet = InitializeDataSource();
DataSet = Nouvelle Structure();
DataSet.Insert("SQL Table", ExternalSet);
GenericReports.Generate GenericReport(ThisObject, Result, Decryption Data, OutputToReportForm,DataSet);

En fait, il n'y a pas beaucoup de lignes de code et elles sont assez standard... dans ce cas, vous pouvez utiliser toutes les fonctionnalités du générateur de requêtes, et ne donner que la fonction DATA COMPOSITION dans l'ACS

Mais, bien sûr, ça a l'air un peu moins beau ... et en téléchargeant dans le tableau des valeurs chaque fois que vous devez écrire du code et vérifier si vous avez fait une erreur dans le nom des détails ... sinon, ce qui nous a été donné en 1C semble en quelque sorte sans enthousiasme. Je n'ai pas encore décidé lequel est le plus pratique à utiliser. Vous décidez, et écrivez sur vos décisions et ce qui vous a poussé à les prendre.

[vous devez vous inscrire pour voir le lien]

Dans la version 8 du programme 1C, les développeurs ont ajouté à la fonctionnalité la possibilité de connecter des bases de données tierces et d'obtenir des informations directement depuis le configurateur, sans utiliser Connexions COM et les objets OLE. Cette fonctionnalité est implémentée à l'aide d'un nouvel objet - "Sources de données externes"

Les sources de données externes dans 1C peuvent être utilisées de la même manière que le reste des tables système :

  1. Lors de la création de rapports et de calculs à l'aide d'un système de composition de données (ACS);
  2. Pour obtenir des liens vers des informations stockées dans des sources tierces ;
  3. Pour modifier les données stockées dans les tables ;
  4. Lors des demandes.

Il est important de savoir que ce mécanisme n'est pas conçu pour fonctionner avec d'autres bases de données 1C, car le modèle de fonctionnement 1C.Enterprise lui-même n'implique pas d'interférence avec les données au niveau des tables physiques.

Créer une nouvelle source

L'ajout d'une nouvelle source externe au programme s'effectue en mode "Configurateur". Il existe une branche correspondante dans l'arborescence de configuration (Fig. 1)

Vous devrez transpirer lors de la création d'une nouvelle source, malgré le fait que la forme du nouvel objet ne comporte que quatre onglets :

  1. Basique;
  2. Données;
  3. Les fonctions;
  4. Droits.

Le premier onglet n'a qu'un seul paramètre intéressant - le mode de contrôle du verrouillage. Si vous ne posez pas de questions sur le blocage des données dans les transactions, sur les subtilités de la parallélisation flux d'informations vous pouvez laisser ce paramètre en mode de verrouillage automatique. Cependant, cette approche peut entraîner des restrictions excessives (par exemple, lorsqu'au lieu d'un seul enregistrement, le programme verrouille toute la table physique, privant les autres utilisateurs de la possibilité de travailler avec).

Les verrous gérés, contrairement aux verrous automatiques, utilisent le mécanisme de transaction inhérent au programme lui-même, et non au SGBD, ce qui vous permet de traduire les captures de table en beaucoup plus niveau faible.

En définissant ce paramètre sur "Automatique et géré", nous donnons au système la possibilité de déterminer le mode à utiliser en se référant directement à la propriété similaire de chaque table spécifique.

Onglet Données du formulaire des propriétés de la source externe

La forme de l'onglet "Données" est illustrée à la Fig. 2

Riz. 2

Ici, nous pouvons ajouter des tables et des cubes sources externes. Il existe deux manières d'ajouter un tableau :

  1. Manuellement, nous verrons ensuite le formulaire pour ajouter une table (Fig. 3);

Riz. 3

  1. Ou sélectionnez dans la liste des tables source physiques (Fig. 4), dans ce cas un constructeur spécial s'ouvre devant nous.

Riz. 4

Examinons de plus près le formulaire d'ajout d'une table. La propriété "Name" permet d'identifier de manière unique un objet dans la configuration.

La comparaison de l'objet de métadonnées et de la table physique finale se fait via la propriété "Nom dans la source de données" située dans l'onglet "Complémentaire" (Fig. 5)

Riz. 5

Ensuite, il faut déterminer le type du tableau, ou plutôt son objectivité. Si les données stockées dans la structure peuvent être identifiées de manière unique via n'importe quel champ, la table peut être une table d'objets. Si l'identité de l'enregistrement est déterminée par un ensemble de champs clés, la table doit avoir un type non objet.

En comparant ces tables avec d'autres objets de métadonnées, nous pouvons établir l'analogie suivante :

  • Les tables d'objets sont des ouvrages de référence ;
  • Les registres d'informations ne sont pas objectifs.

L'ensemble des champs clés est défini dans le paramètre de formulaire suivant ("Champs clés"). Ce champ est obligatoire, le laisser vide entraînera une erreur lors de l'enregistrement de la configuration.

Comme vous pouvez le voir sur la Fig.5, certains champs et boutons de formulaire ne peuvent pas être modifiés :

  • Expression dans la source de données ;
  • Type de données de tableau ;
  • Afficher le champ ;
  • Afficher les gestionnaires.

Ils ne peuvent être utilisés qu'après avoir rempli les champs du tableau, défini leur type et défini leurs identifiants (Fig. 6)

Riz. 6

Ici, vous devez faire attention à l'option "Autoriser Null", si cette case est cochée, un tel champ n'est pas souhaitable pour être utilisé comme clé.

Constructeur de tableaux

Peut-être le plus important et point intéressant travailler avec des sources externes consiste à créer une chaîne de connexion. Son constructeur s'ouvre lorsque vous cliquez sur le bouton avec trois points à côté du paramètre "Chaîne de connexion".

Tout d'abord, il nous sera demandé de décider du pilote qui sera utilisé pour se connecter (Fig. 7)

Riz. 7

Une mauvaise définition de ce paramètre ne vous permettra pas de vous connecter à un tiers base d'informations. Il faut également comprendre que tous les pilotes spécifiés dans la liste déroulante ne peuvent pas être utilisés pour générer automatiquement une chaîne de connexion. Si la plate-forme a donné une erreur (Fig. 8), la chaîne de connexion devra être écrite manuellement.

Fig.8

Riz. 9

La ligne elle-même est une construction strictement réglementée.

Exemple de chaîne de connexion

Considérez une base de données tierce créée dans Microsoft Access et situé à la racine du lecteur D. Pour connecter cette base, il faut utiliser le pilote approprié, mais le choisir dans le constructeur de ligne conduit à une erreur Fig.8.

Nous écrirons nous-mêmes les paramètres de connexion.

Driver=(Microsoft Access Driver (*.mdb)) - voici à quoi ressemble la première partie de la ligne. Entre accolades, nous avons défini le pilote.

Pour Fichiers Excel il ressemblera à (Pilote Microsoft Excel (*.xls)) , pour les fichiers Excel créés au bureau antérieurs à 2003, la chaîne du pilote ressemblera à (Pilote Microsoft Excel (*.xls, *.xlsx, *.xlsm, * .xlsb )).

En séparant ce paramètre du suivant par un point-virgule, nous devons écrire l'adresse de notre stockage (dans notre cas, DBQ=D:\Database1.mdb).

En ajoutant ces deux paramètres, nous obtenons Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb, en écrivant ce paramètre, nous obtenons l'accès aux structures internes de cette base de données.

Pour l'objet "Source externe", il ne suffit pas de le créer dans la configuration, il faut aussi le connecter en mode "Entreprises". Cela peut être fait à partir du menu "Toutes les fonctions"->Sources externes. Lorsque nous entrons pour la première fois dans notre table, nous devons écrire la même chaîne de connexion déjà en mode "Enterprise".