Softwareimplementierung der Datenaustauschrippe 1c 8.3. Verteilte Informationsbasis. Schritt für Schritt Anleitungen und Fallstricke. Synchronisation in der Peripheriedatenbank einrichten

Um eine verteilte Infobase zu erstellen, müssen Sie das Programm im Modus "1C: Enterprise" aufrufen. Knoten erstellen verteilte Basis wählen Sie im Menü: Operationen - Exchange-Pläne. Das Fenster "Objekt auswählen: Austauschplan" öffnet sich.


1. Ziehen Sie die Option mit dem Austauschplan "Voll" in Betracht.

Der Austausch wird über alle Organisationen hinweg durchgeführt, die sich in der verteilten Informationsbasis befinden.

Wählen wir den Austauschplan "Vollständig". Das Fenster "Börsenplan abgeschlossen" wird geöffnet.

Wir füllen zwei Datensätze aus:

Wir nennen den ersten Datensatz "Hauptknoten", wir geben den Code "GU" an,

Wir nennen den zweiten Datensatz "Untergeordneter Knoten", wir geben den Code "PU" an.

Wie Sie in der Abbildung sehen können, hat der erste Datensatz ein Symbol mit einem grünen Kreis, dies ist das Symbol „Hauptknoten“.


Um eine Kopie der Infobase "Hauptknoten" zu erstellen, klicken Sie auf den "Untergeordneten Knoten" und klicken Sie auf das Symbol "Startbild erstellen". Dieser Wille Informationsbasis"Slave-Knoten".


Es öffnet sich das Fenster "Erstellen eines IB-Erstabbildes", wählen Sie "Ein dieser Computer oder auf einem Computer in lokales Netzwerk", Weiter klicken ".


Wählen Sie im Feld "Informationsbasisverzeichnis" den Speicherort aus, an dem die Kopie des "Hauptknotens" installiert werden soll, klicken Sie auf "Fertig stellen".


Nach dem Anlegen der Infobase "Slave-Knoten" erscheint folgende Meldung:


OK klicken".

Fügen Sie die Infobase "Slave-Knoten" zu "1C: Enterprise" hinzu. Wir gehen zur untergeordneten Basis im Modus "1C: Enterprise". Lassen Sie uns öffnen: Operationen - Exchange-Pläne. Das Fenster "Objekt auswählen: Austauschplan" öffnet sich. Wählen wir den Austauschplan "Vollständig". Das Fenster "Börsenplan abgeschlossen" wird geöffnet. Wir sehen, dass das Symbol "Hauptknoten" orange ist, was bedeutet, dass dieser Knoten der Hauptknoten für die Infobase ist, in der wir uns befinden.


Wir nehmen die folgenden Einstellungen sowohl in den Haupt- als auch in den Untergeordneten Knoten vor:

1. Fügen Sie ein Präfix für die verteilte Infobase hinzu.

Dies geschieht, damit es keine Konflikte in den Nummern und Codes von Dokumenten und Verzeichnissen gibt, die in zwei Datenbanken erstellt wurden. Daher geben wir in jeder Datenbank ein Präfix an, das den Dokumentnummern und Verzeichniscodes hinzugefügt wird. Öffnen: Service - Programmeinstellungen - Register "Datenaustausch". Geben Sie im Feld "Knotenpräfix für eine verteilte Infobase:" in der untergeordneten Basis "PU", in der Hauptbasis "GU" ein.


2. Fügen Sie die Einstellung für den Datenaustausch zwischen Knoten hinzu:

Öffnen: Service - Distributed Information Base (RIB) - Konfigurieren Sie RIB-Knoten. Das Fenster "Kommunikationseinstellungen" wird geöffnet.


Klicken Sie auf "Hinzufügen", das Fenster "Datenaustauscheinstellungen" öffnet sich. Geben Sie den "Namen" Ihrer Einstellung ein.


Im Feld „Knoten“ erscheint automatisch ein Knoten, bei „Master-Knoten“ ist es „Untergeordneter Knoten“, bei „Untergeordneter Knoten“ steht „Master-Knoten“.

Wählen Sie im Feld "Verzeichnis" den Ordner aus, in den die Austauschdaten empfangen werden sollen, am besten geben Sie ein Verzeichnis für die Haupt- und die untergeordneten Datenbanken an.

Konfigurieren Sie im Feld "Exchange-Typ" den Datentransfer zwischen Datenbanken: über eine Datei oder FTP-Ressource. Wählen wir zum Beispiel "Austausch über eine Dateiressource".

An den restlichen Feldern ändern wir nichts.

OK klicken". Wir sehen, dass eine Einstellung erschienen ist.

3. Gehen Sie wie folgt vor, um Daten auszutauschen:

Klicken Sie zunächst in der Datenbank, in der die Änderungen vorgenommen wurden, auf das Symbol "Austausch mit der aktuellen Einstellung ausführen", wie in der Abbildung gezeigt.


Nach dem Hochladen erscheint das Upload-Ergebnisfenster.


Klicken Sie dann in der Datenbank, in die Sie die Änderungen übertragen möchten, auf das Symbol „Austausch gemäß aktueller Einstellung durchführen“ und die Daten werden in die gewünschte Datenbank übernommen.

2. Betrachten Sie eine Variante mit einem Austauschplan "Nach Organisation".

Der Austausch wird von ausgewählten Organisationen durchgeführt, die sich in einer verteilten Infobase befinden.

Um Knoten einer verteilten Basis im Menü zu erstellen, wählen Sie: Operationen - Exchange-Pläne. Das Fenster "Objekt auswählen: Austauschplan" öffnet sich.


Wählen wir den Austauschplan "Nach Organisation". Das Fenster "Austauschplan nach Organisation" wird geöffnet.

Wir füllen zwei Datensätze aus:

Wir nennen den ersten Datensatz "Hauptknoten", wir geben den Code "GU" an, wir sehen den Unterschied zum "Austauschplan: Voll", eine Tabelle ist erschienen, in der wir die Organisationen angeben, für die der Austausch stattfinden wird .

Der zweite Datensatz heißt "Untergeordneter Knoten", der Code lautet "PU", wir geben die Organisation an.


Ansonsten ist die Einstellung absolut die gleiche wie beim "Exchange Plan: Full".

In diesem Material detaillierte Anleitungüber die Einrichtung des Austauschs von RIB für 1C: Enterprise 8 und die Probleme des Autors.

1. Knoten erstellen
Wir erstellen neue Knoten (Master und Slave): im Benutzermodus "Operations / Exchange plans / Full"
Wählen wir den Austauschplan "Voll"
Wir erstellen zwei Datensätze:
- wir nennen den ersten Datensatz "Zentralbank" (Hauptknoten), wir geben den Code "Zentralbank" an,
- Der zweite Datensatz wird "Slave-Knoten" genannt, der Code lautet "PU".
Symbol mit grünem Kreis - "Zentralbank" (Hauptknoten)

Klicken Sie für den untergeordneten Knoten auf das Symbol "Startbild erstellen". (Exklusiver Zugang erforderlich)
Startbild erstellen
Geben Sie als Nächstes im sich öffnenden Fenster die Parameter der neuen Datenbank ein. Wenn Sie fertig sind, drücken Sie die Schaltfläche "Fertig stellen"
Erstellen eines ersten Informationssicherheitsimages
Die Erstellung des Anfangsabbilds des Slave-Knotens der verteilten Infobase beginnt und nach Abschluss erscheint die Meldung "Erstellung des Anfangsabbilds wurde erfolgreich abgeschlossen". Klicken Sie auf die Schaltfläche "OK".
Fügen Sie die Basis des untergeordneten Knotens zur Liste der Basen hinzu und starten Sie sie.
In dieser untergeordneten Basis öffnen wir den vollständigen Austauschplan - das Symbol "Zentralbank" ist rot, was bedeutet, dass dieser Knoten der Hauptknoten für die Informationsbasis ist, in der wir uns befinden.

2. Präfixe setzen
Legen Sie für jede Basis in den Einstellungen der Abrechnungsparameter (im UPP "Service / Abrechnungseinstellungen") auf der Registerkarte "Datenaustausch" die Präfixe fest. Dies geschieht, damit es keine Konflikte in den Nummern und Codes von Dokumenten und Verzeichnissen gibt, die in zwei Datenbanken erstellt wurden.
Für den automatischen Austausch setzen Sie das Kontrollkästchen "Automatischen Austauschmechanismus verwenden ..."
Registerkarte Datenaustausch

3. Fügen Sie die Einstellung für den Datenaustausch zwischen Knoten hinzu
Öffnen Sie: "Service \ Distributed Information Base (RIB) \ Configure RIB Nodes"
Klicken Sie auf „Hinzufügen“, das Fenster „Datenaustauscheinstellungen“ öffnet sich
Kommunikationseinrichtung

Klicken Sie auf das Symbol "Austausch mit aktueller Einstellung ausführen"
Führen Sie einen Austausch mit der aktuellen Einstellung durch

Nun zu den "Stolpersteinen"
1. Der Datenaustausch kann in . durchgeführt werden automatischer Modus und kann in folgenden Fällen initialisiert werden:
* Bei das Programm ausführen... Der Austausch wird beim Programmstart durchgeführt,
* Wenn Sie mit der Arbeit mit dem Programm fertig sind. Der Austausch wird durchgeführt, bevor der Benutzer die Arbeit mit dem Programm beendet,
* Wenn der Katalog erscheint. Der Austausch wird nur durchgeführt, wenn das vom Benutzer angegebene Verzeichnis nicht sichtbar war, aber aktuell sichtbar ist. Die Einstellung kann verwendet werden, um bei Verbindung mit einem lokalen Netzwerk einen automatischen Austausch durchzuführen oder Speicherkarte... Das Programm überprüft regelmäßig die Sichtbarkeit des in den Einstellungen angegebenen Verzeichnisses und markiert seinen aktuellen Status.
* Wenn die Datei angezeigt wird. Es wird empfohlen, diesen Modus zu verwenden, wenn Sie einen Austausch durchführen müssen, wenn eine eingehende Datenaustauschdatei angezeigt wird. In diesem Fall reicht es aus, den vollständigen Pfad zur eingehenden Datenaustauschdatei anzugeben. Das Programm analysiert regelmäßig das Vorhandensein einer Datei, und sobald sie erscheint, wird der Austausch durchgeführt und nach dem Austausch wird diese Datei zwangsweise GELÖSCHT (dies geschieht, damit der Austauschvorgang nicht ständig durchgeführt wird).
* Periodischer Datenaustausch. Der Austausch erfolgt gemäß den Einstellungen des periodischen Datenaustauschs. Wenn die Infobase im Dateiservermodus arbeitet, wird der periodische Austausch nur von dem Benutzer durchgeführt, der in den Einstellungen der Abrechnungsrichtlinie als "Benutzer für geplante Aufgaben im Dateimodus" angegeben ist. In der Client-Server-Version erfolgt der Austausch auf dem 1C: Enterprise-Server.

Ich habe eine Client-Server-Option - damit der geplante automatische Austausch funktioniert, musste ich den Server überlasten

2. Windows-Codierung.
Der Austausch wurde durch einen Fehler unterbrochen - weil die Datei nicht komprimiert ist. Dies liegt an einem kyrillischen Fehler in Befehlszeile wenn komprimiert.
Es wird behandelt, indem die Codierungen in der Registrierung korrigiert werden.
Zum Beispiel für Windows Server 2008 -
Code

REGEDIT4
"1250" = "c_1251.nls"
"1251" = "c_1251.nls"
"1252" = "c_1251.nls"
"1253" = "c_1251.nls"
"1254" = "c_1251.nls"
"1255" = "c_1251.nls"

3. Beim Erstellen einer Kopie der Datenbank (zB zur Revision) in der Client-Server-Version ist es NOTWENDIG, dass die REGULATORISCHEN JOBS DER KOPIE der Datenbank AUSGESCHALTET sind. Geplante Jobs für das Kopieren sperren EIN

Wenn sie nicht gesperrt sind, wird die Kopie nach dem gleichen Zeitplan wie die Hauptbasis ausgetauscht. Dies bedeutet, dass einige Nachrichten an entfernte Knoten generiert werden von Arbeitsbasis, und ein Teil der Kopie, was zur Desynchronisierung der Konfigurationen führt.

In 1s 8.3 oder in 1C 8.2? Konfigurieren einer verteilten Infobase. Schritt-für-Schritt-Anleitung.

Die Verteilung der Infobase wird verwendet, wenn eine gemeinsame Buchhaltung in Datenbanken erforderlich ist, die aus verschiedenen Gründen keine physische Verbindung haben können. Ein Beispiel ist das Führen von Aufzeichnungen in einem Unternehmen, das eine Abteilung in einer großen Stadt und einem kleinen Dorf hat, ohne die Möglichkeit, eine Verbindung zum Internet herzustellen. Oder in besonderen Fällen der periodischen Notwendigkeit, gleichzeitig im Büro und außerhalb des Büros, zum Beispiel zu Hause, mit derselben Datenbank zu arbeiten. In solchen und ähnlichen Fällen ist der Einsatz einer verteilten Informationsbasis (RIB) gerechtfertigt und erforderlich.


In diesem Artikel betrachten wir die Organisation der Verteilung einer Informationsdatenbank in der Konfiguration 1C Accounting for Russia Version 8.3 über ein lokales oder Netzwerkverzeichnis. In Version 8.2 1C diese Anleitung wird auch nützlich sein als beschreibt im Wesentlichen einen Prozess mit signifikant kleinen Unterschieden.

==== Einrichten für die Hauptbasis ====

Nachdem Sie 1C 8.3 im Modus "Enterprise" geöffnet haben, gehen Sie zum Abschnitt "Administration". In Version 1C 8.2 müssen Sie zu Beginn zum Hauptmenü "Service" - "Distributed Information Base (RIB)" - "RIB-Knoten konfigurieren" gehen.

Darüber hinaus werden wir den Prozess im Kontext der IS-Version 8.3 betrachten. Gehen Sie also zum Abschnitt "Administration" und wählen Sie "Programmeinstellungen". Gehen Sie in den Einstellungen zum Abschnitt "Datensynchronisierung". Hier setzen wir das Häkchen bei „Datensynchronisation verwenden“ und geben das Datenbankpräfix an. Wir geben "Zentralbank" an, was die zentrale Basis bedeutet.

Danach erscheint im rechten Menü der Punkt „Datensynchronisation“. Lass es uns wählen. Klicken Sie im geöffneten Unterfenster auf die Schaltfläche "Datensynchronisation konfigurieren". Im Dropdown-Menü können Sie Optionen für Einstellungen für verschiedene Anwendungsfälle der Synchronisation auswählen. Wir wählen "Verteilte Informationsbasis ...".

Machen Sie sich für die allgemeine Entwicklung mit dem Inhalt des nächsten Fensters vertraut und klicken Sie auf "Weiter".

Geben Sie im nächsten Fenster das Verzeichnis ein, durch das es geht. Wir weisen auf eine Datenkomprimierung hin, um die Größe des Uploads zu reduzieren, und Sie können sofort das Passwort für das Archiv mit den Daten angeben. Es ist wichtig, es nicht zu vergessen. Die Befüllung bestätigen wir mit der Schaltfläche „Weiter“.

Die nächsten beiden Fenster dienen dazu, die Einstellungen für die Austauschfälle über FTP-Server und per E-Mail. Wie bereits erwähnt, erwägen wir eine Möglichkeit zum Austausch über ein Verzeichnis, daher überspringen wir die Einstellungen für FTP und E-Mail.

Das nächste Fenster dient zur Angabe der Austauschparameter im Teil der Peripheriedatenbank. Geben wir seinen Namen und sein Präfix an. Weiter - die Schaltfläche "Weiter".

Lassen Sie uns die von uns gebildeten Austauschparameter überprüfen und ihre Richtigkeit mit der traditionellen Schaltfläche "Weiter" bestätigen.

Die notwendigen Einstellungen für den Austausch werden automatisch erstellt. Es wird einige Zeit in Anspruch nehmen.

Wichtig! Es dauert lange, das anfängliche Image für den Slave-Knoten zu erstellen. Der Umfang dieser Bedeutung hängt von den Ressourcen des Computers und dem Umfang der Buchhaltung in der Hauptdatenbank ab.

Nehmen wir an, wir haben uns entschieden, ein Bild zu erstellen. Nachdem Sie im vorherigen Fenster auf die Schaltfläche „Fertig stellen“ geklickt haben, nehmen wir die Einstellungen zur Erstellung eines Bildes der untergeordneten Informationssicherheit vor. Wir betrachten den einfachsten Fall für lokale Operationen. Dazu geben wir im sich öffnenden Fenster die erforderlichen Details an. Achten Sie besonders auf den Parameter "Vollständiger Name der Dateibasis". Es muss im vollen UNC-Format angegeben werden, was die Bildung eines lokalen Pfades im "Netzwerk"-Format voraussetzt. Zum Beispiel - "\\ Server1C \ Datenbanken \ RIB". Fügen Sie den Namen der Datenbankdatei zum angegebenen Pfad hinzu - 1Cv8.1CD.

Nach dem Anklicken der Schaltfläche „Startbild erstellen“ beginnt der Prozess der Bildgenerierung für die untergeordnete Basis.

Nach Abschluss des Prozesses wird eine Datenbankdatei im angegebenen Verzeichnis erstellt. Diese neu erstellte Basis muss vor der vollständigen Nutzung konfiguriert werden.

==== Einrichten für die Peripheriebasis ====

Dazu müssen Sie es mit 1C verbinden. Wie das geht, finden Sie in der Anleitung in unserem Artikel - Nach dem Verbinden müssen Sie die neue Datenbank im Konfigurator-Modus starten und Benutzer anlegen. Als nächstes muss IB im 1C-Modus "Enterprise" gestartet werden.

Wenn das Anlegen von Benutzern aus irgendeinem Grund auf einen späteren Zeitpunkt verschoben werden muss, können Sie die Datenbank nach dem Verbinden einfach im 1C Enterprise-Modus starten. Sie werden aufgefordert, einen Administratorbenutzer zu erstellen, ihm zuzustimmen und die Erstbelegung wird abgeschlossen.

Dann müssen Sie die Kopplung mit der Hauptbasis weiter einrichten. Diese Einstellung ähnelt der oben für die Hauptbasis besprochenen.

Eine Einstellung für die Kommunikation mit der Hauptbasis wird erstellt.

============================================

Jetzt haben wir also die Haupt- und Peripheriebasen erstellt. In jeder dieser Datenbanken wurden auch Synchronisierungseinstellungen erstellt. Nun können Sie diese Einstellungen bearbeiten und in eine geeignete Form bringen. Sie können automatische Austauschregeln erstellen oder einen manuellen Austausch durchführen.

Machen wir es in der Hauptdatenbank. Die periphere Basis ist auf die gleiche Weise konfiguriert.

Die Bearbeitung kann auf Regeln und Datensynchronisierungszeitpläne angewendet werden.

Durch Anklicken der Schaltfläche "Konfigurieren" im Abschnitt "Datensynchronisationszeitplan" müssen Sie die Skripte für den automatischen Arbeitsplan zum Hoch-/Herunterladen von Daten für die ausgewählte Datenbank bearbeiten. Sie müssen es nicht bearbeiten, sondern nur den Standardoptionen zustimmen.

Um die Parameter zu bearbeiten, klicken Sie einfach auf den Link mit den Daten des automatischen Zeitplans. Und dann bearbeiten wir die temporären Parameter zum Starten von Aufgaben. Durch Klicken auf die Registerkarten können Sie sowohl die Uhrzeit als auch das Datum und die Wochentage des Starts ändern.

Durch Klicken auf die Schaltfläche "Aufgabe ausführen" im Hauptskriptfenster können Sie die Aufgabe manuell starten.

Durch Klicken auf die Schaltfläche "Konfigurieren" im Abschnitt "Datensynchronisierungsregeln" können Sie Vorgänge ausführen, um die Jobstartskripte zu ändern, sowie das Upload-/Download-Fortschrittsprotokoll anzeigen. Letzteres ist wichtig genug, um die Zugänge zu verwalten und die Regelmäßigkeit des Austauschs zu überwachen.

Nachdem Sie die Erstellung und Bearbeitung von Skripten für den automatischen Start des verteilten Datenbankaustauschs abgeschlossen haben, können Sie mit dem Entladen und anschließendem Laden der Daten fortfahren.

Damit ist im Grunde die Konfiguration der verteilten Datenbank für die zentralen und peripheren Knoten abgeschlossen.

Bebilderte Anleitung herunterladen

Verteilte Informationsbasis. Schritt-für-Schritt-Anleitung
Verteilte Informationsbasis (RIB) 1C: Unternehmen
Erstellung einer verteilten Infobase und deren Konfiguration
wie man Rippen in 1s 8.2 . einrichtet
So richten Sie eine verteilte Infobase in 1C ein
Einrichten in 1C
Einrichten in 1C
Einrichten einer verteilten Infobase (RIB) in 1C
Ein Beispiel für die Einrichtung einer RIB für 1C: Buchhaltung 8
Erstellung einer verteilten Infobase und Konfiguration


Schlüsselwörter: verteilt, URBD, XML, Registrierung, Knoten, Knoten, Auto-Registrierung, Initial, Image, POP3, SMTP, Mail Message, Peripheriegerät, Zentral, Replikation, Austausch

Haftungsausschluss und Nutzungsbedingungen

Alle im Übrigen in diesem Artikel erwähnten Marken gehören ihren jeweiligen Eigentümern.
Veröffentlicht unter der Creative Commons-Lizenz Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Unported.
http://creativecommons.org/licenses/by-sa/3.0/

Ich stelle gleich fest, dass alles Folgende für die Plattformversion 8.0.7.36 und höher gilt.

Schritt 1. Einen Austauschplan erstellen

Legen Sie in der Konfiguration einen Austauschplan an. Nennen wir es zum Beispiel "DistributedBase". Pflicht in
Setzen Sie in den Eigenschaften des Austauschplans das Kontrollkästchen "Verteilte Infobase".

Auf der Registerkarte "Sonstiges" legen wir über die Schaltfläche "Zusammensetzung" fest, welche Objekte in den Austausch einbezogen werden. Von
Standardmäßig können Sie alle Objekte einschließen ("Aktionen" - "Alle einschließen"). Ein wichtiger Punkt ist der Parameter
"Automatische Registrierung". Im Allgemeinen sollte es für alle Objekte aktiviert sein.

Hinweis: Beim Hinzufügen neuer Objekte zur Konfiguration sind diese nicht im Austauschplan enthalten. Jene. nach
Wenn Sie ein Objekt hinzufügen, muss es dem Austauschplan hinzugefügt werden.

Wenn Sie möchten, dass einige Objekte nicht am Austausch teilnehmen, schließen Sie sie einfach von der Komposition aus
Austauschplan an. Aber dann bleibt die Kontrolle der referentiellen Integrität ganz bei Ihrem Gewissen. Wenn zum
zum Beispiel ein bestimmtes Dokument nicht im Austauschplan enthalten ist, aber das Register, über das es Bewegungen vornimmt,
dann ist es im Basisempfänger durchaus möglich, Bewegungen im Register ohne Urkundenverwalter zu empfangen, was
stimme zu, es ist nicht gut.

Im Prinzip reichen diese Aktionen aus, damit der RDB im "manuellen" Modus arbeitet. Führen Sie dazu
Enterprise, wir öffnen unseren Austauschplan über das Menü "Operationen". Der Austauschplan ist immer dabei
ein vordefinierter gepunkteter Knoten. Dies ist die Beschreibung des aktuellen Knotens. Es muss geöffnet und befüllt werden. In unserem
In diesem Fall stehen die Felder "Code" und "Name" zur Verfügung. Weisen wir unserem Knoten den Code "AA" zu und benennen ihn
"Zentral". Fügen wir dem Austauschplan einen Knoten hinzu. Weisen wir ihm den Code "BB" zu und nennen ihn "Peripherie".

Jetzt können wir ein Bild der peripheren Basis erstellen. Dies geschieht durch Klicken auf "Initiale erstellen"
image ". In der Liste der Knoten muss eine periphere Basis ausgewählt werden. Das Basis-Image wird in Form einer vorgefertigten Informationssicherheit erstellt
im Katalog oder auf dem 1C: Enterprise-Server. (im Gegensatz zu 7.7, wo das IB-Image als Datei erstellt wurde
Entladung). Außerdem kann die erstellte Basis durch einfaches Kopieren der 1CV8.1CD-Datei an den gewünschten Ort übertragen werden
(für die Dateiversion) oder über den Konfigurator per Daten-Up-/Download.

Wenn Sie den Austauschplan in der peripheren Informationssicherheit öffnen, sehen Sie, dass der Knoten "mit einem Punkt", d.h. aktuell
der Knoten "Peripherie" wurde zum Knoten und das Symbol neben dem Knoten "Zentral" wurde rot, d.h. Knoten
"Zentral" ist der Hauptknoten in Bezug auf den aktuellen.

Der Austausch im "manuellen" Modus kann über die Schaltflächen "Änderungen speichern" und "Lesen" erfolgen
Änderungen ". Im ersten Fall werden Sie aufgefordert, die Datei auszuwählen, in die die Änderungen geschrieben werden, im zweiten Fall
- die Datei, aus der die Änderungen gelesen werden. Der Austausch erfolgt im xml-Format. Änderungen werden erfasst für
ausgewählten Knoten.

Schritt 2. Änderungen an einer XML-Datei hochladen und per E-Mail senden

Also haben wir einen Austauschplan erstellt, eine periphere Informationssicherheit erstellt und sogar gelernt, wie man Daten zwischen überträgt
Basen. Unsere Aufgabe ist es nun, den Basen das Austauschen beizubringen Email.

Wir fügen dem Austauschplan zwei Details hinzu: die ElectronicAddress vom Typ "String" und den Typ "ExecuteExchange"
"boolesch". Wir speichern die Knoten-E-Mail im Attribut ElectronicAddress, d.h. die Adresse, an die wir gehen
Austauschnachrichten senden. Props Execute Der Austausch wird benötigt, um die Automatik schnell zu deaktivieren
Senden-Versenden von Nachrichten.

Wir werden das Verfahren für die Arbeit mit E-Mail universell machen, d.h. lass es uns möglich machen
als MAPI verwenden (Senden-Empfangen über Mail-Client z.B. MS Outlook) und
direkter Zugriff auf SMTP / POP3-Server.

Fügen wir der Konfiguration einige Konstanten hinzu:

irgendwo in allgemeiner Form bieten wir die Bearbeitung der Werte dieser Konstanten an.

Lass uns hinzufügen gemeinsames Modul, nennen wir es "rbDistributedBase". Wir schreiben darin:

Prozedur pbSendExchangeMessages () Export UseSMTP = Constants.UseExchangeBySMTP.Get (); // Erstellen Sie zunächst ein Mail-Objekt, das je nach Einstellung vom Typ Internet Mail ist, // wenn direkter Zugriff auf Server verwendet wird, oder Mail, wenn MAPI verwendet wird. Wenn SMTP verwenden, dann // Erstellen Sie für ein Objekt vom Typ InternetMail ein E-Mail-Profil, und füllen Sie es aus. MailProfile = Neues InternetMailProfile; MailProfile.SMTPServerAddress = Constants.SMTPExchangeServerAddress.Get (); MailProfile.SMTP-Port = Constants.SMTPExchangeServerPort.Get (); MailProfile.SMTPUser = Constants.SMTPExchangeServerUser.Get (); MailProfile.SMTP-Passwort = Constants.PasswordSMTPExchange.Get (); MailProfile.Waiting Time = Constants.WaitingServer.Get (); Mail = Neue Internet-Mail (); Versuch Mail.Connect (MailProfile); Ausnahmebericht (" EXCHANGE: Fehler beim Verbinden mit dem Mail-Profil! Austausch fehlgeschlagen!"+ ErrorDescription (), MessageStatus.Very Important); Return; End Attempt; Sonst Mail = Neue E-Mail(); Versuchen Sie Mail.Connect (); Ausnahmebericht ("" + ErrorDescription (), MessageStatus.Very Important); Zurückkehren; Ende der Versuche; EndIf; // Als nächstes wählen Sie alle Knoten aus dem Austauschplan aus, außer dem aktuellen, // die das ExecuteExchange-Attribut gesetzt haben. SelectionNodes = ExchangePlans.DistributedBase.Select (); WhileSelectionNodes.Next () Schleife If NotSelectionNodes.PerformExchange Then Continue; EndIf; IfSetupNodes.Ref = ExchangePlans.DistributedBase.ThisNode () Dann fortfahren; EndIf; ElectronicAddress = AbkürzungLP (Selection of Nodes.ElectronicAddress); Wenn E-Mail-Adresse = "" Dann fortfahren; EndIf; // Mit den XMLWriter- und MessageWriter-Objekten zeichnen wir die Änderungen auf // für den ausgewählten Knoten in die XML-Datei. Node = Auswahl von Nodes.Ref; XMLWriter = Neuer XMLWriter (); MessageFileName = Verzeichnis für temporäre Dateien () + "Message_" + Abgekürzter LP (ExchangePlans.DistributedBase.ThisNode (). Code) + "_" + Abgekürzter LP (Node.Code) + ".xml"; XMLWrite.OpenFile (MessageFileName); MessageWrite = ExchangePlans.CreateMessageWrite (); MessageWrite.StartWrite (XMLWriter, Node); Austauschpläne.WriteChanges (MessageWrite); WriteMessages.FinishWrite(); XMLWrite.Close(); // Dann erstellen wir einen neuen Brief, hängen die resultierende XML-Datei daran an und // an die Adresse senden, die in der erforderlichen elektronischen Adresse des Knotens angegeben ist. Datei = Neue Datei (MessageFileName); SubjectMessage = "1C: Exchange" + Abkürzung (Exchange Plans.A DistributedBase.ThisNode (). Code) + "_" + Abgekürzter LP (Node.Code); Wenn SMTP verwenden Then PostMessage = New InternetPostalMessage; MailMessage.Subject = MessageSubject; MailMessage.Attachments.Add (MessageFileName, File.Name); PostMessage.Recipients.Add (E-Mail); Mail.Send (PostMessage); Andernfalls PostMessage = Neue PostMessage; MailMessage.Subject = MessageSubject; MailMessage.Attachments.Add (MessageFileName); PostMessage.Recipients.Add (E-Mail); Mail.Send (PostMessage, False); EndIf; Wenn Constants.OutputExchangeMessages.Get () Then Report (" EXCHANGE: Austauschnachricht für Knoten"+ Knoten.Name +" gesendet! ", MessageStatus.Information); EndIf; DeleteFiles (MessageFileName); End of Loop; Mail.Disconnect (); EndProcedure

Ich empfehle, der Schnittstelle ein zusätzliches Panel hinzuzufügen, auf dessen einer der Tasten Sie einen Anruf auflegen können
Verfahren. Jetzt müssen Sie noch das Unternehmen starten, konfigurieren E-Mail periphere Informationssicherheit,
Aktivieren Sie das Kontrollkästchen "Austausch durchführen", klicken Sie auf die Schaltfläche "Verfahren" im Panel und führen Sie aus, um E-Mails zu erhalten für
angegebene E-Mail-Adresse Adressen. Sie sollten einen Brief mit dem Betreff "1C: Exchange AA_BB" und einer angehängten Datei erhalten
"Nachricht_AA_BB.xml".

Die Hälfte der Arbeit ist also getan: Wir haben den G8 beigebracht, RBD-Nachrichten per E-Mail zu senden
mailen.

Schritt 3. Updates per E-Mail empfangen und im IB aufzeichnen

Gehen wir nun umgekehrt vor: Updates per E-Mail erhalten und in der Informationssicherheit protokollieren.

Fügen Sie den Sitzungsparametern den Parameter "DistributedBaseExchange" vom Typ Boolean hinzu. Unten werde ich es erklären
Termin.

Fügen wir dem allgemeinen Modul rbDistributedBase die folgende Prozedur hinzu:

Prozedur pbGetExchangeMessages () Export UseSMTP = Constants.UseExchangeBySMTP.Get (); // wie in der Prozedur pbSendExchangeMessages() zuerst ein Objekt erstellen Mail If Use SMTP Then MailProfile = New InternetMailProfile; MailProfile.POP3ServerAddress = Constants.POP3ExchangeServerAddress.Get (); MailProfile.PortPOP3 = Constants.POP3ExchangeServerPort.Get (); MailProfile.User = Constants.POP3ExchangeServerUser.Get (); MailProfile.Password = Constants.POP3UserPasswordExchange.Get (); MailProfile.Waiting Time = Constants.WaitingServer.Get (); Mail = Neue Internet-Mail (); Versuch Mail.Connect (MailProfile); Ausnahmebericht (" EXCHANGE: Fehler beim Verbinden mit dem Mail-Profil! | Austausch fehlgeschlagen!", MessageStatus.Sehr wichtig); Rückgabe; Ende des Versuchs; Andernfalls Mail = Neue Mail (); Versuch Mail.Connect (); Ausnahmebericht (" EXCHANGE: Fehler beim Verbinden mit dem E-Mail-Profil des Benutzers! | Austausch fehlgeschlagen!", MessageStatus.Sehr wichtig); Return; EndTry; EndIf; MessageArray = Neues Array; Wenn SMTP verwenden Then AllMessages = Mail.Choose (False); Andernfalls AllMessages = Mail.Choose (False, False); EndIf; // Wählen Sie unter allen Buchstaben die mit dem Betreff "1C: Exchange" aus. // Kleiner, aber wichtiger Hinweis: // bedenke, dass alle eingegangenen Briefe mit dem Betreff "1C: Exchange" bestimmt sind // genau für den aktuellen Knoten, //jene. dass verschiedene Knoten bezüglich des Austauschs UNTERSCHIEDLICHE E-Mail-Adressen haben. Für jede Nachricht aus allen Nachrichten Loop If Leo (Nachricht. Thema, 8)<>"1C: Exchange" Dann weiter; EndIf; Versuchen Sie ArrayMessages.Add (Nachricht); // Speichern Sie den E-Mail-Anhang auf der Festplatte. // Die sorgfältige Überprüfung des Anhangs lassen wir "offscreen". Anhang = Nachricht. Anhänge; MessageFileName = TempFilesDir () + Attachment.Name; ExchangeData = Attachment.Data; ExchangeData.Write (MessageFileName); // Mit ReadXML- und ReadMessage-Objekten lesen wir Daten // Updates aus der gespeicherten Datei. Bevor Sie Updates zu IB schreiben // setze den Sitzungsparameter DistributedBaseExchanging auf True. // Dann lesen wir die Änderungen im IB: ExchangePlans.ReadChanges (ReadMessages). // Unterwegs speichern wir die Nachrichten im Array, damit sie später alle auf einmal gelöscht werden können. XMLReader = Neuer XMLReader (); Lesen Sie XML.OpenFile (MessageFileName); MessageReader = ExchangePlans.CreateMessageReader (); ReadMessage.Start Read (XML lesen); Sitzungsparameter.DistributedBaseExchange = True; Austauschpläne.ReadChanges (ReadMessages); ReadMessage.EndRead(); XML lesen.Schließen (); Wenn Constants.OutputExchangeMessages.Get () Then Report (" EXCHANGE: Austauschdaten empfangen", MessageStatus.Information); EndIf; Ausnahmebericht (" EXCHANGE: Fehler beim Empfang von Austauschdaten:"+ ErrorDescription (), MessageStatus.Sehr wichtig); EndTry; // Nachdem das Lesen der Austauschdaten abgeschlossen ist, kehren wir zurück // Der Sitzungsparameter DistributedBaseExchange wird auf False gesetzt. Sitzungsparameter.DistributedBaseExchange in Bearbeitung = False; Versuch, Dateien zu löschen (MessageFileName); Ausnahme // wenn es nicht geklappt hat, naja, okay Ende der Versuche; Ende des Zyklus; Wenn SMTP verwenden, dann Mail.RemoveMessages (MessageArray); EndIf; Mail.Trennen (); Ende des Verfahrens

Nun zu den Sitzungsparametern für DistributedBaseExchange.
Tatsache ist, dass beim Lesen von Daten mit der Methode ExchangePlanning.ReadChanges() ein Aufruf erfolgt
Prozeduren-Handler des Ereignisses BeforeWrite() von geänderten / hinzugefügten Objekten. Und wenn während der Aufnahme
eines beliebigen Objekts in der Handler-Prozedur wird der Parameter Fehler auf True gesetzt, dann
beim Ausführen von ExchangePlans.ReadChanges() wird eine Ausnahme ausgelöst und dementsprechend der Austausch
wird nicht ausgeführt. Der Wert des Sitzungsparameters SharingDistributedBase kann
in Handhabungsverfahren analysiert, um diese Situation zu vermeiden.
Mit der Veröffentlichung von Revision 12 (obwohl ich mich mit den Versionen irren kann) ist die Relevanz dieser Methode etwas
A ist veraltet, weil Objekte die Eigenschaft . haben Umtauschoptionen, in dem, in seiner. Diese Eigenschaft wird auf True gesetzt, wenn sie geht
Speichern von Daten durch einen Austauschplan.

Fügen Sie nun in der Benutzeroberfläche unseres Panels eine weitere Schaltfläche hinzu, auf der wir den Anruf auflegen
Verfahren. Wir starten die Enterprise und genießen.
Fast alles ist getan, es bleibt nur noch wenig übrig: unsere Verfahren im automatischen Modus ablaufen zu lassen.
Schritt 4. Automatischen Austausch einrichten

Damit kommen wir dem Ziel unserer Story schon fast nahe. Es bleibt nur noch ein Schritt: Laufen
Ausführung von Austauschvorgängen im automatischen Modus. Lass uns anfangen.

Fügen Sie eine Konstante DistributedBaseAutoShareInterval vom Typ Number (5,0) hinzu.

Fügen Sie in den Benutzereinstellungen den Parameter Execute Distributed Database Exchange hinzu. Zur Konfiguration
"Trade Management" wird so gemacht:

* Vordefiniertes hinzufügen
Merkmal von ExecuteDistributedBaseExchange vom booleschen Typ.
* In Form des Katalogelements "Benutzer" konfigurieren wir die Änderung dieses Parameters (so wie er ist
Sie können es analog zu den restlichen Parametern im Formularmodul sehen).

Fügen Sie die Prozedur zum Modul rb DistributedBase hinzu:

Prozedur rbRunExchange (prUser) Export If npGetDefaultValue (prUser, "") Then rbGetExchangeMessages (); rbSendExchangeMessages(); EndIf; Ende des Verfahrens

zum Anwendungsmodul:

Prozedur CheckAutoShareConnection () Export If npGetDefault Value (glCurrentUser, " AusführenDistributedBaseExchange") UND Constants.DistributedBaseAutoSharingInterval.Get ()> 0 Then ConnectWaitingHandler (" RunAuto-Austausch", Constants.AutoShareIntervalDistributedBase.Get ()); Andernfalls DisableWaitingHandler (" RunAuto-Austausch"); EndIf; EndProcedure Procedure ExecuteAutoExchange () Export pbExploreExchange (glCurrentUser); DisableWaitingHandler (" RunAuto-Austausch"); Wenn npGetDefault-Wert (glCurrentUser," AusführenDistributedBaseExchange") UND Constants.DistributedBaseAutoSharingInterval.Get ()> 0 Then ConnectWaitingHandler (" RunAuto-Austausch", Constants.AutoShareIntervalDistributedBase.Get ()); EndIf; EndProcedure Procedure DisableAutoShare () Export DisableWaitingHandler (" RunAuto-Austausch"); EndProcedure

fügen Sie der Prozedur SystemStarting() des Anwendungsmoduls die folgenden Zeilen hinzu:

(nach Anschluss der handelsüblichen Geräte)
...
Sitzungsparameter.DistributedBaseExchange in Bearbeitung = False; CheckConnectionAutoSharing();

Fügen wir unserem Panel ein paar weitere Schaltflächen hinzu, um den Prozess zu steuern: Wir hängen die Prozedur für einen auf
Überprüfen Sie die AutoShareConnection (), andererseits - DisableAutoShare ()

Wir starten das Unternehmen, richten die Benutzereigenschaften und das automatische Austauschintervall ein und das war's!

Wenn Sie nun die Datenbank unter diesem am meisten konfigurierten Benutzer eingeben, wird der Handler gestartet
wartet ExecuteAutoShare (). In der Peripheriebasis müssen Sie natürlich auch den Benutzer konfigurieren.
zum Tausch.

Noch ein kleiner aber wichtiger Hinweis:

Alle von uns erstellten Reize haben ein Ärgernis: Konfigurationsänderungen. Bei
Wenn die periphere Basis eine Nachricht mit Konfigurationsänderungen erhält, wird sie
wird akzeptiert, aber es wird eine Ausnahme ausgelöst. In diesem Fall wird die geänderte Konfiguration
geladen. Um die Datenbankkonfiguration zu aktualisieren, müssen Sie alle Benutzer ausschließen, gehen Sie zu
Konfigurator und aktualisieren Sie die Datenbankkonfiguration (davor empfiehlt es sich, Daten hochzuladen). ZU
Leider ist dies ein notwendiges Übel. Sie können Ihr Leben ein wenig einfacher machen, indem Sie eine kurze Bat-Datei schreiben
etwas wie das:

1cv8.exe KONFIG / F<путь к ИБ>/ N<Пользователь>/ P<Пароль>/ UpdateIBCfg

Und noch eine Anmerkung:

Leider sind XML-Dateien nicht sehr kompakt, aber glücklicherweise komprimieren sie gut. Es ist möglich in
Prozeduren zum Senden und Empfangen von Nachrichten fügen Pack-Entpack-Dateien hinzu. COLOR = "# 666666"> Dies kann entweder mit einem externen Archiver erfolgen, oder mit VK, zum Beispiel Wheel.AddIn
(http://1c.proclub.ru/modules/mydownloads/personal.php?cid=81&lid=2714).
Mit der Veröffentlichung der (wie es scheint) 10. Ausgabe ist der vorherige Vorschlag etwas veraltet, da die Plattform
ZIP-Komprimierungstools wurden integriert. Jene. jetzt ist es möglich, Dateien zu komprimieren
ohne VK zu verwenden.

25. Oktober 2016

Es gibt keinen großen Unterschied zwischen der Konfiguration und Wartung der RIB für 2 oder 10 Knoten, aber wenn die Anzahl der Remote-Punkte hundert überschreitet, müssen ganz andere Probleme gelöst werden.

Ausgangsdaten:

Konfiguration: Einzelhandel 2.2
Plattform 1C: 8.3.7.1970



Projektlaufzeit: Jahr.




Die Architektur:

Zuerst haben wir uns für das RIB-Schema entschieden. Es wurde beschlossen, sich so lange wie möglich auf das Sternensystem zu konzentrieren; beim Erreichen der technologischen Grenzen - eine Schneeflocke.





Einschränkungen:
- 2 GB RAM
- 1 physischer Prozessor


Von all dem ist es hauptsächlich die Begrenzung der maximalen Datenbankgröße, die belastet.

Dies bedeutet jedoch nur, dass das Verfahren zur Bereinigung von veralteten Daten im Feld organisiert werden muss.

Für den 1C- und den MS SQL-Server wird ein separater physikalischer Server zugewiesen. Er wird die Hauptlast der Börsen und des langfristigen Geschäfts tragen.
End-Client-Rechner werden nicht ersetzt, da sie mit einem Thin Client arbeiten und ihre Belastung minimal ist.
.


Grundeinstellungen

Seit den Tagen von UT 10.3, an denen ich mein erstes Projekt hatte, ein RIB für 60 Knoten einzuführen, ist natürlich "viel Wasser unter der Brücke geflossen".

1C stand nicht still. Retail 2.2 berücksichtigt nun die Notwendigkeit eines selektiven Datenuploads.
Nur die für den Shop relevanten Informationen werden in die Datenbank des Shops hochgeladen:
- Alle Nachschlagewerke (außer Fachbücher)
- Dokumente für diesen Shop

Eine andere Frage ist, dass das Hinzufügen eines Knotens zur Basis auf die eine oder andere Weise das Hinzufügen eines weiteren Datensatzes zur Registrierungstabelle für jedes gemeinsame Element bedeutet, wenn es aufgezeichnet wird.





1) Es sollte in separate Sync-Skripte für Upload und Download unterteilt werden
Der Punkt ist, dass der Upload lange dauert und mit Sperren versehen ist und der Download ziemlich problemlos ist. Gleichzeitig kommt es oft vor, dass wir Daten von den Einzelhandelsgeschäften schnell erhalten und nur wenige Male am Tag zurückgeben müssen.

2) Wählen Sie Problemspeicher aus und entfernen Sie sie aus dem allgemeinen Synchronisationsszenario. Sie können große Entladungen haben - in diesem Fall wird der gesamte Austausch, einschließlich anderer Knoten, verlangsamt. Nachdem die Probleme gelöst wurden, werden sie zurückgegeben.

3) Erstellen Sie mehrere Szenarien zum Senden und Empfangen von Daten. Aber die Hauptsache hier ist, das richtige Gleichgewicht ihrer Anzahl zu finden.
(seit Version 8.1).
Folglich ist die Parallelität beim Entladen des RIB begrenzt. In der Praxis stellt sich heraus, dass 2-3 Skripte parallel ausgeführt werden.


Was musste abgeschlossen werden

Der wichtigste Pfosten in der Standardlogik von 1C RIB sind Updates





Informationsregister sind ein weiteres Problem des Austauschs. Durch das Ausgeben jedes Informationsregistersatzes in XML wird ein separater XML-Knoten mit Serviceelemente usw. Zusätzlich die Funktion "SelectChanges()" für ein Informationsregister, in dem 100 Datensätze gleichzeitig eine Ergebnistabelle von 100 Zeilen erhalten, wenn es sich um ein Verzeichnis mit 100 Zeilen im Tabellenbereich handelt, Es wird nur ein Datensatz ausgewählt. Und dies ist die Zeit der exklusiven Sperrung. Wenn also viele Schallplatten im PC sind, die regelmäßig in anderen Läden zum Tausch angemeldet werden, dann ist es sicher richtig, diese in Form eines Nachschlagewerks mit vorzulegen tabellarischer Teil, die als letztes Mittel beim Schreiben Strings desselben Registers bilden können. Auf jeden Fall, .

Ein weiteres wichtiges Detail ist Wozu? Nahezu 3 Mio. Rabattkarten sind bereits angesammelt und werden über ein externes Online-System bearbeitet. Wenn Sie weiterhin Rabattkarten auf alle Filialen übertragen, wird dies den Umtausch deutlich erhöhen, außerdem kann es zu einer Überschreitung des Basisvolumens von 10 GB kommen.

Einige der Mechanismen werden online durch Kontaktaufnahme mit der zentralen Datenbank implementiert: Guthaben in anderen Geschäften, Rückgabe per Scheck aus einem anderen Geschäft, Überprüfung der Gültigkeit des Geschenkgutscheins.


Vervielfältigung


Die regelmäßige Erstellung des initialen RIB-Knotens würde die Replikation grundsätzlich unmöglich machen.
Daher wird ein neuer Knoten wie folgt erstellt
:


2) Diese Datenbank tauscht alle allgemeinen Daten im RIB aus, erhält aber keine spezialisierten (Dokumente)


5) Die Basis für den Laden ist fertig.

Ein fertiges Softwarepaket wird auf dem Server bereitgestellt, sodass es nicht viel Zeit in Anspruch nimmt. Dann wird die neu erstellte Datenbank auf den Server hochgeladen und kann an den Store gesendet werden.


Thin-Client-Vorteile

Zwei wesentliche Vorteile von Retail 2.2 (Thin Client), die "die Seele erwärmt haben":








Support & Updates




1) Update mit den Händen der Geschäfte (nicht sehr korrekt, sie erhalten möglicherweise keine Änderungen, es wird Anrufe und Probleme geben) - wie es zuvor war

3) Schreiben Sie ein *.cmd- oder 1C-Skript zum Aktualisieren oder nehmen Sie ein vorgefertigtes. Wie die Praxis zeigt, ist eine solche Lösung immer halbherzig (instabil) und es wird möglich sein, ein wenig Funktionalität darin unterzubringen.

Welche Aufgaben hatten wir:


2) Beim Aktualisieren ist eine interaktive Interaktion mit dem Benutzer möglich (Nachrichten, Bestätigung, Fortschrittsbalken).








Hauptfunktionen:




4) Überprüfung des Agentenstatus
5) Berichte aktualisieren
6) Sicherung

















So sieht die Fehlermeldung beispielsweise nach einem Update aus:








Somit hat das Projekt gute Chancen, erfolgreich abgeschlossen zu werden. Zumindest mitten auf dem Weg "Normalflug".

Wenn wir zu anderen Lösungen kommen, die interessant erscheinen könnten, schreibe ich separat

PS und vor allem: Die richtige Planung der weiteren Unterstützung ist einer der Schlüsselfaktoren für den weiteren Erfolg solcher Projekte. :)

25. Oktober 2016

Es gibt keinen großen Unterschied zwischen der Konfiguration und Wartung von RIB für 2 oder 10 Knoten, aber wenn die Anzahl der Remote-Punkte hundert überschreitet, müssen ganz andere Probleme gelöst werden.

Also die Ausgangsdaten:

Konfiguration: Einzelhandel 2.2
Plattform 1C: 8.3.7.1970
Geschätzte Anzahl der Knoten am Ende des Projekts: 200
Ausstattungsressourcen im Zentrum: keine nennenswerten Einschränkungen
Ausrüstung am Punkt: das Thema, das diskutiert wird.
Projektlaufzeit: Jahr.

Die Architektur:

Zuerst haben wir uns für das RIB-Schema entschieden. Es wurde beschlossen, sich vorher auf das "Stern" -Schema zu konzentrieren
V Einzelhandelsgeschäfte Die Client-Server-Version der Arbeit wird mit einem dedizierten Server unter der Kontrolle des Windows-Betriebssystems verwendet.
Server 1C wird in der Version "Server 1C MINI" verwendet https://1c.ru/news/info.jsp?id=17577
DBMS-Server - MS SQL-Express 2008 R2.

SQL Express 2008 R2 ist die aktuellste Version dieser SQL Server-Reihe.
Einschränkungen:

2 GB Arbeitsspeicher
- 1 physischer Prozessor
- 10 GB maximale Datenbankgröße

Von all dem ist sicherlich die Begrenzung des maximalen Volumens der Datenbank ärgerlich. Tatsächlich bedeutet dies jedoch nur, dass das Verfahren zur Bereinigung veralteter Daten im Feld organisiert werden muss.

Für den 1C- und den MS SQL-Server wird ein separater Server zugewiesen. Die Hauptlast des Austauschs und der Operationen wird auf ihn fallen.
End-Client-Rechner werden nicht ersetzt, da sie mit einem Thin Client arbeiten und die Belastung der Unterseite minimal ist.
Der Server im Laden ist nur ein leistungsstarker PC. Voraussetzung ist aber die Anwesenheit SSD-Festplatte- auf dem sich die MS SQL-Datenbanken befinden.
Außerdem bietet der Server die Möglichkeit, Routinevorgänge nachts durchzuführen und auf die Geschäftsdatenbank zuzugreifen, ohne die Arbeit zu unterbrechen.

Grundeinstellungen

Seit den Tagen von UT 10.3, an denen ich mein erstes Projekt hatte, ein RIB für 60 Knoten einzuführen, ist natürlich "viel Wasser unter der Brücke geflossen". 1C stand nicht still. Retail 2.2 berücksichtigt nun die Notwendigkeit eines selektiven Datenuploads.
Nur die Informationen, die sich auf nemiu beziehen, werden in die Datenbank des Shops hochgeladen:
- Alle Verzeichnisse (außer einigen)
- Dokumente zu diesem Magazin
Die Datenregistrierung erfolgt nach den Registrierungsregeln, alles was zwischengespeichert werden kann. Erhebliche Verzögerungen werden gerade bei der Registrierung nicht beobachtet.
Eine andere Frage ist, dass das Hinzufügen eines Knotens zur Basis auf die eine oder andere Weise das Hinzufügen eines weiteren Datensatzes für jedes gemeinsame Element für alle Basen bedeutet.

Es gibt nichts Besonderes bei der Einrichtung der Entladung selbst. Beim Einrichten von Synchronisationsszenarien gibt es einige Nuancen:

1) Es ist notwendig, Upload und Download in separate Synchronisationsskripte zu trennen.
Der Punkt ist, dass der Upload lange dauert und mit Sperren versehen ist und der Download recht problemlos ist. Gleichzeitig kommt es oft vor, dass wir Daten von den Einzelhandelsgeschäften schnell erhalten und nur wenige Male am Tag zurückgeben müssen.

2) Wählen Sie Problemspeicher aus und entfernen Sie sie aus dem allgemeinen Synchronisationsszenario. Sie können große Entladungen haben - in diesem Fall wird der gesamte Austausch verlangsamt, einschließlich anderer Knoten

3) Erstellen Sie mehrere Sende- und Empfangsskripte zum Senden und Empfangen von Daten. Aber die Hauptsache ist hier die Balance.
Einige Dinge in 1C ändern sich nicht. Dieselbe Methode "SelectChanges" kann nur sequentiell ausgeführt werden(seit Version 8.1).
Folglich ist die Parallelität beim Entladen des RIB begrenzt. In der Praxis ist es möglich, 2-3 Szenarien gleichzeitig zu entladen.
Was das Empfangsszenario angeht - hier ist bei Bedarf natürlich viel mehr Parallelität möglich.

Was musste abgeschlossen werden

Natürlich ist es traurig und traurig, aber ich musste mich gründlich mit der BSP auseinandersetzen. Der wichtigste Pfosten in der standardmäßigen 1C-Logik sind Updates... Nach dem Update erscheint etwa dieses Fenster:

Dies alles geschieht im Monopolmodus. Unter anderem wird das System auch nach dem Upgrade im exklusiven Modus noch versuchen, einen Austausch vorzunehmen. Wozu das alles führt, ist nicht schwer zu erraten.
Während dieser gesamten Zeit kann der Laden nicht arbeiten, Kunden stehen an der Kasse, das Unternehmen verliert Geld.

Informationsregister sind ein weiteres Problem des Austauschs. Durch das Entladen jedes Informationsregistersatzes in XML wird ein separater XML-Knoten mit Serviceelementen und allem, was von hier aus fließt, erstellt. Darüber hinaus wird die Funktion "Änderungen auswählen" für ein Informationsregister, in dem 100 Datensätze die resultierende Tabelle enthält, gleichzeitig 100 Zeilen enthalten, wenn dies ein Verzeichnis ist, in dem 100 Zeilen im tabellarischen Abschnitt enthalten sind, wird nur ein Datensatz angezeigt ausgewählt werden. Wenn sich also viele Datensätze im PC befinden, die regelmäßig zum Tausch in anderen Geschäften angemeldet werden, dann ist es sicher richtig, diese in Form eines Nachschlagewerks mit tabellarischem Teil vorzulegen, das sich als letztes Mittel bilden kann Aufzeichnungen desselben Registers bei der Aufnahme. Auf jeden Fall, Informationsregister im Austausch sind böse.

Ein weiteres wichtiges Detail ist Rabattkarten sind vollständig vom Umtausch ausgeschlossen, und Einzelpersonen - nur Mitarbeiter eines bestimmten Geschäfts. Wozu? Nahezu 3 Mio. Rabattkarten sind bereits angesammelt und werden über ein externes Online-System bearbeitet. Wenn Sie weiterhin Rabattkarten auf alle Geschäfte übertragen, wird dies den Umtausch deutlich erhöhen, außerdem kann es zu einer Überschreitung des Basisvolumens von 3 GB kommen.

Einige der Mechanismen werden online durch Kontaktaufnahme mit der zentralen Datenbank implementiert: Guthaben in anderen Geschäften, Rückgabe per Scheck aus einem anderen Geschäft, Überprüfung der Gültigkeit des Geschenkgutscheins.

Vervielfältigung

Natürlich wird die Replikation in einem beschleunigten Tempo durchgeführt.
Die regelmäßige Erstellung des anfänglichen RIB-Knotens würde die Replikation natürlich unmöglich machen.
Daher wird ein neuer Knoten wie folgt erstellt:

1) Es gibt eine separate Basis mit einem Fake-Shop
2) Diese Basis tauscht alle allgemeinen Daten im RIB aus, erhält aber keine spezialisierten
3) Wenn wir eine neue Basis erstellen möchten, kopieren Sie dies einfach
4) Dann legen wir die Einstellungen fest - speichern, Präfix usw.
5) Die Basis für den Laden ist fertig.

Ein fertiges Softwarepaket wird auf dem Server bereitgestellt, sodass es nicht viel Zeit in Anspruch nimmt. Dann wird die neu erstellte Filialdatenbank auf den Server hochgeladen und kann an die Filiale gesendet werden.

Thin-Client-Vorteile

zwei bedeutende Vorteile, die "die Seele wärmten".

1) Es ist nicht erforderlich, den gesamten Computerpark im Einzelhandel zu ändern. 90% der Operationen werden auf dem Server ausgeführt, und der Server wird dorthin gebracht "ein relativ leistungsstarker Computer"

2) Die Technik hat die Fähigkeit, die Arbeit zu verweigern, besonders oft passiert dies bei neu installierten oder bereits abgenutzten Geräten.
In diesem Fall sind die Aktionen jetzt extrem einfach - der Laden wechselt zur Arbeit in der zentralen Basis.
Dieser Vorgang dauert nicht länger als 5-10 Minuten, sodass der Handel auch bei erheblichen Problemen mit der Ausrüstung nicht unterbrochen wird.

Support & Updates

Schließlich sind wir beim interessantesten Punkt angelangt - wie kann man das alles pflegen und aktualisieren?
Auch bei uns sind Updates schon lange ein Problem:

1) Update mit den Händen der Geschäfte (nicht sehr korrekt, sie erhalten möglicherweise keine Änderungen, es wird Anrufe und Probleme geben)
2) Mit Kräften erneuern technischer Support(nicht so viele Ressourcen)
3) Schreiben Sie *.cmd zum Aktualisieren oder nehmen Sie fertige. Wie die Praxis zeigt, ist eine solche Lösung immer halbherzig (instabil) und enthält wenig Funktionalität.

Welche Aufgaben hatten wir:

1) Das Update sollte in mehreren Modi erfolgen und zentral verwaltet werden
2) Beim Aktualisieren ist eine interaktive Interaktion mit dem Benutzer möglich.
3) Achten Sie darauf, Berichte über den Status und Aktualisierungsfehler zu erhalten
4) Es muss ein Backup vorhanden sein
5) Das Updatesystem sollte sich problemlos selbst aktualisieren können.
6) Das System sollte ohne allzu viele Probleme erweiterbar sein.

Die Aufgaben gingen natürlich weit über die Liste der mit einfachen Methoden lösbaren Aufgaben hinaus. Da eine Automatisierung mit so vielen Endpunkten unverzichtbar ist und wir nichts mehr oder weniger fertiges mit ähnlicher Funktionalität gefunden haben
Ich musste mit der Entwicklung von Software beginnen, die schließlich den Namen MU (MagicUpdater) erhielt.

Hauptfunktionen:

1) Dynamische Datenbankaktualisierung (Befehl oder Zeitplan)
2) Statische Basisaktualisierung (Befehl oder Zeitplan)
3) automatische Agenten auf Zielcomputern, wenn sie geändert werden
4) Überprüfung des Agentenstatus
5) Berichte aktualisieren
6) Sicherung
7) Administrative Aktionen mit Server 1C und MS SQL
8) Schließen aller 1C-Clientanwendungen auf Netzwerkcomputern
9) Statisches Update mit Annahme an der Hauptkasse
10) Anzeige der Änderungsbeschreibung nach dem Update
11) Konfigurieren der Reihenfolge der Aktionen
12) Ausführen all dieser Aktionen nach einem Zeitplan

Ungefähre Interaktionsschemata:


Wobei MU Agent ein im Store installierter und konfigurierter Dienst ist. Tatsächlich erhält sie vom Zentrum den Befehl, bestimmte Aufgaben auszuführen.
MU-Server - Der Server, der alle Anforderungen an das System akzeptiert.
MU-Monitor – was normale Mitarbeiter des technischen Supports sehen – wird verwendet, um Protokolle anzuzeigen und Aufgaben für die Aktualisierung oder andere festzulegen.

Ist meiner Meinung nach ziemlich gut geworden. Jetzt erfolgen Updates fast automatisch.
So sieht zum Beispiel die Fehlermeldung aus, nachdem das Update in der Mitte geblieben ist, alles wartet.

Auf diese Weise senden wir Befehle an Client-Computer.

Die Anwendungen sind sicherlich nicht 1C, aber mit ziemlich anständigen Schnittstellenfunktionen. So sieht beispielsweise eine Auswahl nach Datum aus:

Jetzt sind wir bereit für die weitere Replikation. Die richtige Planung der weiteren Unterstützung ist einer der Schlüsselfaktoren für den weiteren Erfolg solcher Projekte.