Heim / Den PC beherrschen / Datenbankmodell

Datenbankmodell

Datenbankmodell

Das 1C:Enterprise 8-Datenbankmodell weist eine Reihe von Merkmalen auf, die es von den klassischen Modellen von Datenbankverwaltungssystemen (z. B. solchen auf Basis relationaler Tabellen) unterscheiden, mit denen sich Entwickler in universellen Systemen befassen.

Der Hauptunterschied besteht darin, dass der 1C:Enterprise-Entwickler nicht direkt auf die Datenbank zugreift. Es arbeitet direkt mit der 1C:Enterprise-Plattform zusammen. Dabei kann er:

  • Datenstrukturen im Konfigurator beschreiben,
  • Daten mit 1C:Enterprise-Sprachobjekten manipulieren,
  • Datenabfragen mit einer Abfragesprache schreiben.

Die 1C:Enterprise-Plattform bietet Operationen zum Ausführen von Abfragen, Beschreiben von Datenstrukturen und Manipulieren von Daten, um sie in geeignete Befehle zu übersetzen. Dies können Befehle des Datenbankverwaltungssystems im Fall einer Client-Server-Arbeitsversion oder Befehle der eigenen Datenbank-Engine für die Dateiversion sein.

Allgemeines Typensystem

Ein wichtiges Merkmal der Arbeit mit einer Datenbank ist, dass 1C:Enterprise 8 implementiert allgemeines System Sprachtypen und Datenbankfelder. Mit anderen Worten, der Entwickler definiert Datenbankfelder und 1C:Enterprise-Variablen auf die gleiche Weise und arbeitet mit ihnen auf die gleiche Weise.

Dieses System 1C: Enterprise vergleicht sich positiv mit dem Universal Werkzeug. Üblicherweise werden bei der Erstellung von Geschäftsanwendungen mit universellen Entwicklungsumgebungen separat bereitgestellte Datenbankmanagementsysteme verwendet. Und das bedeutet, dass sich der Entwickler ständig um die Konvertierungen zwischen den von einem bestimmten Datenbankverwaltungssystem unterstützten Datentypen und den von der Programmiersprache unterstützten Typen kümmern muss.

Referenzen auf Objekte speichern

Bei der Manipulation von Daten, die in der 1C:Enterprise-Datenbank gespeichert sind, wird häufig ein Objektansatz verwendet. Das bedeutet, dass der Zugriff (Lesen und Schreiben) auf einen bestimmten Datensatz, der in der Datenbank gespeichert ist, als Ganzes erfolgt. Mit der Objekttechnik können Sie beispielsweise die Daten von Verzeichnissen, Dokumenten, Merkmalsartenplänen, Kontenplänen etc. manipulieren.

Ein charakteristisches Merkmal der Objektdatenmanipulation besteht darin, dass es für jedes Objekt als Datensatz eine eindeutige Verknüpfung gibt, die es Ihnen ermöglicht, dieses Objekt in der Datenbank eindeutig zu identifizieren.

Diese Verknüpfung wird zusammen mit den restlichen Daten des Objekts auch im Datenbankfeld gespeichert. Außerdem kann eine Referenz als Wert eines Feldes eines anderen Objekts verwendet werden. Beispielsweise ein Verweis auf ein Verzeichnisobjekt Gegenparteien kann als Wert des entsprechenden Dokumentattributs verwendet werden Kaufrechnung.

Zusammengesetzte Typen

Ein wesentliches Merkmal des von 1C:Enterprise 8 unterstützten Datenmodells ist, dass für ein Datenbankfeld mehrere Datentypen auf einmal definiert werden können, deren Werte in diesem Feld gespeichert werden können. In diesem Fall wird der Wert zu jedem Zeitpunkt einmal gespeichert, kann es aber sein verschiedene Typen- sowohl Referenz als auch Primitive - Zahl, Zeichenfolge, Datum usw.:

Diese Möglichkeit ist sehr wichtig für wirtschaftliche Aufgaben – beispielsweise bei der Rechnungsstellung als Käufer, entweder eine juristische Person aus dem Verzeichnis der Organisationen, oder Individuell aus dem Personenverzeichnis. Dementsprechend kann ein Entwickler beim Entwerfen einer Datenbank ein Feld definieren, das einen Wert eines beliebigen dieser Typen speichert.

Speichern beliebiger Daten als Value Store

Die Ideologie der Erstellung von Anwendungslösungen in 1C:Enterprise 8 geht davon aus, dass alle Dateien, die sich auf diese Anwendungslösung beziehen, in der Datenbank selbst gespeichert werden müssen.

Dafür wurde ein spezieller Datentyp eingeführt - Speicherwerte. Datenbankfelder können Werte dieses Typs speichern, und die integrierte Sprache enthält ein spezielles Objekt mit demselben Namen, mit dem Sie Werte anderer Typen in ein spezielles Value Store-Format konvertieren können.

Dies ermöglicht dem Entwickler, Werte in der Datenbank zu speichern, die nicht als Datenbankfeldtyp ausgewählt werden können, z. B. grafische Bilder.

Erstellen und Aktualisieren von Datenstrukturen basierend auf Metadaten

Beim Erstellen oder Modifizieren einer angewandten Lösung muss der Entwickler keine Maßnahmen ergreifen, um die Struktur der Datenbankfelder der angewandten Lösung direkt zu ändern.

Dem Entwickler reicht es aus, die Struktur der verwendeten Objekte der angewandten Lösung, die Zusammensetzung ihrer Details, tabellarischen Teile, Formen usw. durch visuelles Design zu beschreiben.

Die Plattform führt alle Aktionen zum Erstellen oder Ändern der Struktur von Datenbanktabellen selbstständig aus, basierend auf der Zusammensetzung der Objekte der angewendeten Lösung und ihren Eigenschaften.

Um beispielsweise Informationen über die Zusammensetzung der Familie eines Mitarbeiters im Mitarbeiterverzeichnis speichern zu können, muss der 1C: Enterprise-Entwickler keine spezielle neue Tabelle in der Datenbank erstellen, Regeln festlegen, nach denen die Daten gespeichert werden in dieser Tabelle werden mit Daten aus den Haupttabellen verknüpft, Programmieralgorithmen zum Teilen von Daten in diesen Tabellen, Erstellen von Algorithmen zum Überprüfen von Zugriffsrechten auf Daten in einer untergeordneten Tabelle usw.

Ein Entwickler muss es nur per Mausklick zum Verzeichnis hinzufügen tabellarischer Teil und setze seine beiden String-Attribute: Name und Verwandtschaft. Beim Speichern oder Aktualisieren der Konfiguration reorganisiert die Plattform selbstständig die Datenbankstruktur, erstellt die erforderlichen Tabellen usw.

Objekt-/Tabellendatenzugriff

Das reguläre Merkmal von 1C:Enterprise 8 ist die Unterstützung von zwei Zugriffsmethoden auf Daten - Objekt (zum Lesen und Schreiben) und tabellarisch (zum Lesen).

Im Objektmodell arbeitet der Entwickler mit Objekten der eingebauten Sprache. In diesem Modell erfolgt der Zugriff auf ein Objekt, z. B. ein Dokument, als einzelne Entität – es wird vollständig in den Speicher geladen, zusammen mit verschachtelten Tabellen, auf die unter Verwendung der integrierten Sprache als Sammlungen von Datensätzen usw. zugegriffen werden kann.

Beim Bearbeiten von Daten im Objektmodell wird die Integrität von Objekten bewahrt, Objekte werden zwischengespeichert, geeignete Ereignishandler werden aufgerufen und so weiter.

In einem tabellarischen Modell wird der gesamte Satz von Objekten einer bestimmten Klasse als ein Satz miteinander verbundener Tabellen dargestellt, auf die über Abfragen zugegriffen werden kann – sowohl auf eine separate Tabelle als auch auf mehrere Tabellen in einer Beziehung:

In diesem Fall erhält der Entwickler gleichzeitig Zugriff auf die Daten mehrerer Objekte, was sehr praktisch ist, um große Datenmengen zu analysieren, beispielsweise beim Erstellen von Berichten. Da die so selektierten Daten jedoch nicht alle, sondern nur einige Details der analysierten Objekte enthalten, erlaubt die tabellarische Zugriffsmethode keine Änderung dieser Daten.

„Es ist besser, einen Tag zu verlieren und dann in fünf Minuten zu fliegen“ (c) m / w Wings, legs and tails.

Es gibt drei ausgezeichnete Posts auf Habré über die Verwaltung von Datenbanklisten in 8.x:

Jeder von ihnen enthält ein eigenes Puzzleteil aus dem Gesamtbild: Einfache Verwaltung von 1C-Datenbanklisten.

Prolog

Die gegebene Konstruktionsideologie macht es einfach, die Einstellungen zu skalieren, sowohl für einfache Büros mit einer einzelnen Domäne als auch für eine Multidomänenstruktur als Teil eines Waldes. Die konkrete Umsetzung der Lösung wählt jeder für sich selbst, hier wird jedoch der Grundstein gelegt, um ohne Mehraufwand die nötige Flexibilität zu erhalten. Die Entscheidung wird leicht vererbt. Es gibt keine Skripte. Gar nicht. Allgemein.

Also, wogegen haben wir es:

Es gibt viele Benutzer!- Das Umgehen von mehr als 40 Benutzern mit dem alleinigen Zweck, eine neue Datenbank zu registrieren oder die Verbindungseinstellungen für eine alte zu ändern, wird eine angemessene Zeit in Anspruch nehmen. Nun, diejenigen, die Tech-Support-Kämpfer haben.
Es gibt viele Basen!- ein Zoo von Basen, Testbasen mit der einfachen Ablage von 1Snikov, die in der Produktion landen, während sie sich noch zum Testen auf den Servern befinden. Wir multiplizieren mit der Anzahl der Benutzer und sind entsetzt.
Undeutliche Basisnamen!- An diesem Ort stelle ich mir jedes Mal vor, wie mit meinen eigenen Händen die Seele eines anderen 1 Snick für die Basis mit dem Namen " new2_baza2_copy» an die eine Reihe von Verarbeitungen, Berichten und COM-Verbindungen angehängt sind. Denn es erschien ihm logisch, die neue Basis SO zu nennen. Die Organisation ist eine und sie wird nicht plötzlich wachsen. Und er erinnert sich an alles. Und niemals aufgeben. Die Dokumentation erfolgt durch Schwächlinge. Ja, es geht immer schnell!
- jeder Neuer Benutzer weiß nicht, welche Grundlagen er braucht (oft klingt es: „Ich brauche ALLES“), Mitarbeiter wechseln häufig Positionen, Bereiche, Organisationen und damit auch ihre Aufgaben. - süße Skripte, die den gesamten AD-Wald nach bestimmten Gruppennamen durchsuchen, um eine Datenbank zu verbinden. Und wer hat es geschrieben? Worauf? Wann? Wo sind die Kommentare?
Wo sind meine Basen?!- Hoppla. Viele Lösungen erlauben es Ihnen nicht, eine individuelle Liste von Benutzer-1C-Datenbanken zu speichern und gleichzeitig einen vordefinierten Satz von Datenbanken zu verwenden.
Cluster 1C? DB-Server?- Ist da ein Unterschied? Es kann mehr als eine geben. verschiedene Versionen 1C, verschiedene Datenbanken. Der technische Support versucht, Enden zu finden, um genau zu verstehen, was genau dem Benutzer auf dem PC zu verschreiben ist.

Ich habe die Hauptschmerzen beschrieben.

Spoiler?

1. Die gesamte vorgestellte Infrastruktur ist testweise und virtuell. Jede Namensübereinstimmung Rechtspersonen sind zufällig.
2. Verzeihen Sie mir die englische Benutzeroberfläche auf den Screenshots von den Servern. Ich konnte nicht anders.
3. Vertrauen Sie mir, ich bin ein Systemadministrator-Teamleiter, ich weiß, was ich tue! (Mit)

Sechs Schritte zum Glück:

Stufe 1 - Inventar
Wir nehmen einen Tabellenkalkulationseditor und 1Snikov. Und wir inventarisieren im Detail, vielleicht sogar von Hand:

So entsteht ein Tisch:

Unsere Aufgabe ist es zu verstehen, was wo ist. Struktur. Detailliert malen.

Stufe 2 – AD-Gruppen für 1C-Datenbanken
Erstellen von Gruppen für Basen in Active Directory, schreiben wir gleich in die Beschreibung den verwendeten Cluster und Datenbankserver:

Am Ausgang bekommen wir genaue Informationüber jede Datenbank in der Active Directory-Struktur. Die Angabe des Datenbanknamens im AD-Gruppennamen erleichtert das Auffinden der Gruppe für eine bestimmte Datenbank in großen Infrastrukturen erheblich. Ausgewählte Benutzer, Hinzufügen zur Gruppe und Angabe des gewünschten Datenbanknamens. Op und alles da. Gleichzeitig sehen Ihre Kollegen (oder Nachfolger) sofort, welche AD-Gruppe für welche Datenbank zuständig ist und wo sich die Datenbank befindet.

Wichtig:
Zusätzlich zum Erstellen von AD-Gruppen für jede Datenbank müssen Sie eine zusätzliche AD-Gruppe erstellen " ” - es wird uns helfen, Zugriff auf die Dateiressource zu gewähren, in der die v8i-Konfigurationen aller benötigten Datenbanken gespeichert sind. Wir schließen in diese Gruppe alle AD-Gruppen für 1C-Datenbanken ein. Wir vergessen auch nicht, neue AD-Gruppen für 1C-Basen hinzuzufügen. Wir brauchen auch eine Gruppe in ihrer Zusammensetzung Domänencomputer um PC-Konten den Zugriff auf die Dateifreigabe zu ermöglichen. Über die Nuancen unten.

Stufe 3 - 1C-Konfigurationsdateien
Die Inventarisierung wurde durchgeführt, die AD-Gruppen für die Datenbanken wurden erstellt, jetzt die v8i-Konfigurationsdateien. Sie speichern Verbindungseinstellungen zu Datenbanken: Cluster 1C und den Namen der Datenbank in diesem Cluster.
Wir beginnen 1C. Wenn es eine gebildete Liste von Basen gibt, benennen wir sie schön und klar.
Organisation - Konfiguration - Konfigurationsversion
Wir speichern sie auf der rechten Schaltfläche in Dateien, wir benennen die Dateien nach dem Namen der Datenbank. Wir sammeln diese wunderbaren v8i-Dateien sorgfältig in einem Verzeichnis. Wenn keine Originalliste vorhanden ist, können Sie einen Eintrag in der Liste erstellen, der als Referenz dient. Wir erzeugen daraus neue v8i-Konfigurationsdateien, indem wir die notwendigen Informationen direkt als Text in die Datei eintragen.

Die Ausgabe ist eine Datei mit folgendem Inhalt:

Loswerden jeder Datei zusätzliche Zeilen:

Als Ergebnis erhalten wir eine bestimmte Anzahl von v8i-Konfigurationsdateien, die gleiche Anzahl wie die Basen.

Der nächste Schritt besteht darin, die allgemeine Datenbankkonfigurationsdatei für 1C zu bearbeiten.

Standardmäßig enthält es überhaupt keine Liste von Basen:

Lassen Sie uns kleine Manipulationen vornehmen, und es enthält jetzt die Pfade zu allen v8i-Konfigurationsdateien der 1C-Datenbanken.

Der Zugriff auf v8i-Dateien funktioniert genauso wie bei einer einfachen Netzwerkordner auf einem Dateiserver und mit einer DFS-Ressource. Load-Balancing, Failover? Ja! Wir wissen. Wir fliegen.

Als Ergebnis haben wir ein Verzeichnis voller v8i-Konfigurationsdateien für jede Basis separat plus gemeinsame Datei Konfiguration, in der alle Pfade zu allen v8i-Konfigurationsdateien registriert sind.

Stufe 4 – Datei oder DFS-Ressource
Erstellen Sie ein Verzeichnis, das die v8i-Konfigurationsdateien für die Verbindung zu jeder spezifischen Basis sowie eine allgemeine Liste der Basen enthält - die Datei 1CEStart.cfg:
Namensverzeichnis Sync-1CBases.
Der ideologische Zugang zum Zugang zu gemeinsamen Ressourcen ist für jeden anders. Viele Leute ziehen es vor, den Zugriff auf die freigegebene Ressource selbst zu legen Jeder – volle Kontrolle, und steuern Sie dann den Zugriff auf der Ebene Dateisystem. Es ist einfacher. Ich bevorzuge es, den Zugriff sofort auf der Ebene der Freigabe selbst zu sperren, ohne den Dateiserver durch unnötige erneute Überprüfungen der Erreichbarkeit zusätzlich zu belasten.

Wir gewähren Zugriff auf die Gruppe " _1CBases - Zugriff auf die Konfigurationsdatei 1CBases.cfg» Leserechte.

Göttliche Handbücher in einem Bild. Statt tausend Worte.

Der allererste Schritt besteht darin, die Standardeinstellungen für Verzeichnisobjekte zurückzusetzen Sync-1CBases. Berechtigungsvererbung deaktivieren. Wir verlassen " SYSTEM", lokal Administratoren, Domain-Admins. Wo eine Gesamtstruktur vorhanden ist, können Sie Unternehmensadministratoren und/oder delegierte Administratoren hinzufügen. Das resultierende Ergebnis wird vererbt. Sofort, ohne sich weit von der Kasse zu entfernen, fügen wir die AD-Gruppe hinzu " _1CBases - Zugriff auf die Konfigurationsdatei 1CBases.cfg» mit rechts Lektüre und nur auf diesem Verzeichnis ohne Vererbung. In diesem Schritt haben wir die Möglichkeit, zum Stammverzeichnis des Ordners zu gelangen und eine Liste der Dateien im Verzeichnis abzurufen.


Ich bin immer noch nicht an diese Schnittstelle zum Einstellen von Zugriffsrechten gewöhnt.

pro Datei 1CEStart.cfg Wir gewähren der AD-Gruppe nur Lesezugriff " _1CBases - Zugriff auf die Konfigurationsdatei 1CBases.cfg»

Dann wird jeder v8i-Basiskonfigurationsdatei Zugriff für ihre Active Directory-Zugriffsgruppe gewährt:

Wiederholen Sie den letzten Schritt, bis die Konfigurationsdateien der v8i-Datenbank erschöpft sind.

Stufe 5 – Gruppenrichtlinien
Viele Leute verwenden keine Gruppenrichtlinie. Viele nutzen sie verächtlich wenig. Umsonst, umsonst, umsonst. Dies ist ein sehr leistungsfähiges Tool, das das Arbeitsleben auch in kleinen Büros erleichtert.

Erstellen Sie eine neue Gruppenrichtlinie und verknüpfen Sie sie mit dem Stammverzeichnis der Domäne. Wir weisen darauf hin, dass es nur mit funktioniert Domänencomputer:

Die wichtigste Offenbarung (oder Nuance) hier ist, dass die Liste der Datenbanken nicht vom Benutzer, sondern mit dem PC verbunden ist. Leider kann der Benutzer die darin befindliche Konfigurationsdatei nicht mit eigenen Rechten ersetzen C:\ProgramData\1C\1CEStart\ und der PC wird es für ihn tun.

Bearbeiten der Richtlinie:

Hier besteht die Aufgabe darin, eine Datei aus einer gemeinsam genutzten Ressource zu nehmen und die lokale Datei zu ersetzen.
Damit dies nur ein PC mit installiertem 1C tun würde, setzen wir die Bedingungen für die Ausführung von Gruppenrichtlinien durch Ausrichtung auf Elementebene.

Wir überprüfen das Vorhandensein von installiertem 1C:

Dies ist der elementarste Test. Überprüft sowohl x86- als auch x64-Editionen Betriebssysteme. Macht keinen Unterschied zwischen Server- und Client-Betriebssystemen.

Aber die Prüfbedingungen selbst können sehr weit variiert werden, indem diese Einstellungen abhängig von den Bedingungen für die Verfügbarkeit von Netzwerkressourcen und vielen anderen Parametern auf bestimmte Organisationseinheiten angewendet werden, was es ermöglicht, die Bedingungen für das Auslösen dieser Gruppenrichtlinie so weit wie möglich einzugrenzen möglich.

Die Datei wird beim Hochfahren des PCs oder alle 90+ Minuten in Einklang gebracht.

Stufe 6 - Benutzer
Wir nehmen den Benutzer. Und fügen Sie es den AD-Gruppen hinzu:

Danach melden wir den Benutzer beim System an, starten 1C, das die Konfigurationsdatei liest und alle v8i-Dateien verbindet, auf die der Benutzer Zugriff hat. Ergebnis:

Genau das wollten sie erreichen.

Zur selben Zeit diese Entscheidung wirkt sich nicht auf die Datei aus C:\Benutzer\%Benutzername%\AppData\Roaming\1C\1CEStart\ ibases.v8i in denen die Datenbanken gespeichert sind, die der Benutzer selbst registriert hat. Es kann jedoch jederzeit zurückgesetzt werden, um die Datenbankliste des Benutzers zu löschen. Gruppenrichtlinie in Ihren Händen!

Epilog
Formal habe ich eine der vielen Umsetzungsmöglichkeiten bestanden. vermittelte die Ideologie. Zusätzliche Lösungen zu diesem Artikel können sehr umfangreich sein:
Automatische Erstellung einer v8i-Datei, Hinzufügen zu cfg, Erstellen einer AD-Gruppe für die 1C-Basis.
Bearbeitungszugriff für 1C-Spezialisten für dieselben Dateien.
Überprüfen der Relevanz der cfg-Konfigurationsdatei, bevor sie auf einem PC ersetzt wird.
Für Paranoiker können Sie cfg-Dateien mit vordefinierten Listen erstellen und in v8i mehr als eine Basis schreiben. Und im Allgemeinen sollten Sie v8i-Dateinamen erstellen, ohne den Basisnamen anzugeben.
Es ist möglich, die Methode zum Übermitteln der cfg-Datei an den PC zu ändern, wo in der PC-Konfiguration die Zugriffsrechte festgelegt werden angegebene Datei, und der Benutzer mit seinen Rechten überschreibt es.
Und vieles mehr. Alles was du willst. Jeder ist frei, für sich selbst zu entscheiden.

Gesamt:
Es gibt viele Benutzer!- es ist egal.
Es gibt viele Basen!- 1Sniki-Datenbank zur Registrierung hinzugefügt, Benutzer haben sie erhalten. Nicht eingetragen - selbst eine selbst verbundene Datenbank verschwindet beim nächsten Login des Benutzers, wenn das Zurücksetzen der Liste der lokalen Datenbanken aktiviert ist.
Undeutliche Basisnamen!- egal? Sie haben immer aktuelle Informationen. Es gibt keine vollständigen Informationen über die Datenbank - es gibt keine Datenbank für Benutzer.
Häufige Benutzerrotation!- Gab es eine Anwendung, um die Basis zu verbinden? Es gibt eine Basis! Geänderter Standort oder Einheit, verlorene Basis zusammen mit Reset-Rechten. - wo? Wozu? Ausgewogenes, präzises Targeting, nur aktuelle Informationen, einfache Wartung und Support.
Wo sind meine Basen?!- nicht erlaubt! Oder bitte verwenden. Alle sind glücklich.
Cluster 1C? DB-Server?- keine Verwirrung. Alles ist bereits konfiguriert. Techies sind mit nützlichen Dingen beschäftigt und wissen nicht, wer, wo und was verschreiben soll, wie man es benennt und wie man Benutzer nicht morgens wegen eines Updates ohne Abrechnungssystem lässt.

P.S

Ich verbrachte einen Tag. Damit Sie in fünf Minuten fliegen. Vielen Dank!

aktualisieren:
Habrazhitel -