Konfigurationserweiterungen – wie Sie einer typischen Konfiguration Funktionen hinzufügen, ohne sie aus dem Support zu entfernen (20 Minuten Video). Ändern oder Deaktivieren des Kompatibilitätsmodus Vorteile der Verwendung einer Erweiterung

In diesem Artikel schlage ich vor zu überlegen, was eine „Konfigurationserweiterung“ ist, wie man eine Erweiterung hinzufügt oder deaktiviert. Ab Version 1C Am 8.3.6.1977 wurde ein neuer Mechanismus in die Plattform eingeführt - Konfigurationserweiterungen. Zunächst ein wenig Theorie.

Erweiterungen in 1C sind so etwas wie parallele Konfigurationen, die automatisch mit der Hauptkonfiguration des Anbieters zusammengeführt werden. Darüber hinaus können Sie in Erweiterungen sowohl eigene Objekte hinzufügen als auch Objekte aus der Hauptkonfiguration ausleihen.

Wozu dienen Erweiterungen?

Zunächst werden Erweiterungen erstellt, um Änderungen am Programm zu erleichtern. Das heißt, wenn Benutzer darum bitten, einige Funktionen hinzuzufügen, mussten Programmierer vor dem Aufkommen von Erweiterungen die Konfiguration aus dem vollen Support entfernen und die typische Konfiguration ändern.

Das Entfernen aus der vollen Unterstützung bringt eine Reihe von Unannehmlichkeiten mit sich:

  • die Möglichkeit der automatischen Aktualisierung entfällt, was zumindest zu einer Verlängerung der Zeit für führt;
  • erforderlich hohe Qualifikation Spezialist für das Programm;
  • wurden Änderungen an Standardobjekten einer typischen Konfiguration vorgenommen, so können diese während des Updates verschwinden, dh sie können wieder durch Standardobjekte des Lieferanten ersetzt werden.

Bei der Verwendung von Erweiterungen berührt der Programmierer bei Änderungen die Standardkonfiguration nicht. Alle Änderungen werden mithilfe von Erweiterungen vorgenommen, die (wie ich oben geschrieben habe) auch Konfigurationen sind. Somit bleibt die Hauptkonfiguration bei voller Unterstützung.

Wenn es nach dem Aktualisieren der Hauptkonfiguration Änderungen in der neuen Version mit einem Objekt gibt, das zuvor von der Erweiterung geändert wurde, werden die Änderungen weiterhin von der Erweiterung übernommen. Das heißt, Erweiterungen haben Vorrang vor der Hauptkonfiguration.

Video - Erweiterungen in 1C in 45 Minuten

Erhalten Sie 267 kostenlose 1C-Videolektionen:

Ein Beispiel für das Hinzufügen einer Erweiterung zu 1C

Um zu zeigen, was eine Erweiterung ist, ist es besser, ein Beispiel für ihre Erstellung im 1C-Konfigurator zu geben.

Gehen Sie im Konfigurator in das Menü „Konfiguration“ und wählen Sie den Punkt „Konfigurationserweiterungen“ aus. Es öffnet sich ein Fenster mit einer Liste der Erweiterungen (falls vorhanden). Klicken Sie auf die Schaltfläche „Hinzufügen“ und fügen Sie eine neue Erweiterung hinzu. Jetzt können Sie die Erweiterungskonfiguration öffnen:

Wie Sie sehen können, hat die Erweiterungskonfiguration genau die gleiche Struktur wie die Hauptkonfiguration. Nur ist es zunächst ganz rein, ohne Gegenstände.

Ich habe kürzlich einen Artikel darüber geschrieben, wie man seine eigenen macht. Anhand ihres Beispiels möchte ich es mit einer Erweiterung inline machen.

In Bearbeitung habe ich ein Feld mit einem Link zum Verzeichnis "Organisationen". Deshalb brauche ich diese Anleitung. Wir werden jedoch kein neues Organisationsverzeichnis erstellen, zumal die Plattform dies nicht zulässt. Sie können keine Objekte in der Erweiterungskonfiguration haben, die den gleichen Namen haben wie Objekte in der Hauptkonfiguration.

Daher leihen wir uns das Verzeichnis aus der Hauptkonfiguration:

Jetzt klicken wir mit der rechten Maustaste auf "Verarbeitung" und wählen "Externe Verarbeitung einfügen, Bericht ...". Damit fügen wir der Erweiterungskonfiguration eine neue Verarbeitung hinzu. Wenn Sie meine Verarbeitung verwenden, dann benennen Sie sie sofort um, da die Hauptkonfiguration bereits eine Verarbeitung mit diesem Namen hat.

Nun, der letzte Schliff. Ich möchte, dass meine Bearbeitung im Menü "Verwaltung" angezeigt wird. Dazu leihen wir uns das gleichnamige Subsystem der Hauptkonfiguration aus. Vergessen Sie nicht, bei der Verarbeitung anzugeben, dass es zu diesem Subsystem gehört.

Dies ist die Struktur, die ich bekommen habe:

Mal sehen, was wir haben. Wir aktualisieren die Datenbankkonfiguration und führen das Programm im 1C: Enterprise-Modus aus und gehen zum Menü "Administration". Ja, fast hätte ich vergessen, die Erweiterungskonfiguration muss geschlossen werden, sonst startet das Programm nicht:

Die Arbeitskosten und Optionen für Übersetzungen aus verschiedenen Releases

Übersetzung 8.1 → 8.2.13 Übersetzung 8.2.13 → 8.2.16 Übersetzung 8.2.16 → 8.3.10
Preis, reiben. * 54 000 ₽ 12 000 ₽ 76 800 ₽

Die Liste aller Änderungen in verschiedenen Versionen der Plattform ist unter den Links verfügbar:
Für Plattform 8.2:
http://downloads.v8.1c.ru/content/Platform/8_2_19_106/1cv8upd.htm

Bevor Sie mit der Übersetzung nach 8.3 beginnen, müssen Sie:

Überprüfen Sie den verwalteten Blockierungsmodus. Wenn "Automatisch" verwendet wird, kann der Übergang zu 8.3 zusätzliche Kosten für die Umstellung auf den gesteuerten Verriegelungsmodus verursachen.
Wenn der Kompatibilitätsmodus mit 8.2.16 und höher verwendet wird, müssen Sie überprüfen, ob die Tabellen neu strukturiert werden
Bestimmen Sie, welche Arten von Clients verwendet werden (Thin, Thick, Webclient)
Stellen Sie fest, ob es Maschinen gibt, auf denen Linux ausgeführt wird

Konfigurationsübersetzung 8.1 → 8.2.13

Kosten der Arbeit: 54 000 reiben.

Konfigurationsübersetzung 8.2.13 → 8.2.16 (inkl. Umstrukturierung)

Wichtige Änderungen:
Der Speichermodus von Konstanten und Einstellungen von Akkumulationsregistern wurde geändert. Jedes Objekt hat seine eigene Datenbanktabelle
Die Implementierung des verwalteten Sperrmechanismus wurde neu gestaltet.
Für das technologische Protokollereignis „TLOCK“ wird die Eigenschaft „Txt“ nur im Kompatibilitätsmodus mit Version 8.2.13 geschrieben
Die Auswirkung des Debugging-Modus auf die Arbeitsgeschwindigkeit im 1C:Enterprise-Modus für Thin Client, Thick Client, Server und externe Verbindung wurde reduziert.
Optimierte Ausführung einer Abfrage wie „ValueType(Field1) = ValueType(Field2)“, wenn „Field1“ und „Field2“ Referenztypwerte enthalten.
Bei verwalteten Formularfeldern, die ein Attribut eines zusammengesetzten Typs anzeigen, wird das Öffnen der Schnellauswahlliste beschleunigt, wenn der zusammengesetzte Typ Referenztypen mit enthält verschiedene Einstellungen schnelle Auswahl.
Für die neuen unabhängigen und nicht periodisches Register Informationen wird der Index nach Dimensionen geclustert

Änderungen, die Konfigurationsänderungen erfordern:

Wenn der Kompatibilitätsmodus deaktiviert ist, ist der Parameter "Period" der Methode "Get()" des Registermanagers für periodische Informationen obligatorisch. Im Kompatibilitätsmodus mit Version 8.2.13 und Version 8.1 hat sich das Verhalten nicht geändert (die Methode kann ohne Angabe eines Parameters verwendet werden, aber das Ergebnis ist undefiniert).
Bei gleichzeitiger Verwendung der Methoden "SetValue()" und "UseFromDataSource()" des Objekts "DataLockItemItem" wird eine Exception geworfen. Im Kompatibilitätsmodus mit Version 8.2.13 hat sich das Verhalten nicht geändert (die Priorität wird dem von der Methode "UseFromDataSource()" gesetzten Wert gegeben).
Das Speichern von Datenwerten, die keine Serialisierung unterstützen, wird nicht unterstützt. Im Kompatibilitätsmodus hat sich das Verhalten nicht geändert.
Wenn es sich bei der Datenbank um eine Datei handelt, muss die Infobase konvertiert werden. Nach Beginn der Konvertierung ist die Arbeit mit dieser Infobase mit früheren Versionen der 1C:Enterprise 8-Plattform nicht mehr möglich. Wenn die Entwicklung unter Verwendung des Konfigurations-Repositorys durchgeführt wird, müssen Sie eine Kopie des Repositorys erstellen, bevor Sie die Infobase konvertieren

WICHTIG. Um den Effekt der Änderung des Kompatibilitätsmodus zu erzielen, müssen Sie eine Umstrukturierung über den Konfigurator vornehmen: „Verwaltung → Testen und Reparieren → Infobase-Tabellen umstrukturieren“.

Zunächst müssen Sie eine Umstrukturierung auf Testbasis durchführen und die Ausführungszeit dieser Operation messen.
Wenn eine ältere 1C-Serverversion als 8.2.19 verwendet wird, z. B. Version 8.3, können bei der Umstrukturierung folgende Fehler auftreten:

In diesem Fall müssen Sie Folgendes tun:
Installieren Sie separat die 1C-Serverversion 8.2.19 und stellen Sie die zu untersuchende Datenbank darauf bereit
Öffnen Sie die Datenbank im Konfigurator auf der 1C-Serverversion 8.2.19, ändern Sie den Kompatibilitätsmodus auf „Nicht verwenden“
Führen Sie eine Umstrukturierung der Infobase-Tabellen durch
Verschieben Sie nach Abschluss der Umstrukturierung die Infobase auf den ursprünglichen Server 1C Version 8.3

Die Kosten für die Übertragung der Konfiguration vom 8.2.13-Kompatibilitätsmodus in den 8.2.16-Modus (Nicht-Kompatibilitätsmodus bei Verwendung der 8.2.16-, 8.2.19-Plattform und 8.2.16-Kompatibilitätsmodus bei Verwendung der 8.3-Plattform) betragen 12 000 Rubel.

Eine Arbeitsvertragsvorlage kann heruntergeladen werden.

Konfigurationsübersetzung 8.2.16 → 8.3.10

Die Konfigurationsübersetzungsarbeit umfasst die folgenden Konfigurationsverbesserungen:

1. Beseitigen Sie Namenskonflikte bei Eigenschaften. Ändern der Variablennamen, damit sie den neuen Eigenschaften entsprechen, die in 1C:Enterprise 8.3 erschienen sind.
2. Beseitigen Sie den Namenskonflikt von Bildern. Umbenennen der Namen von Bildern mit Namen, die mit den Namen aus der Bildbibliothek übereinstimmen.
3. Verfeinerung des Codes beim Ändern der Eigenschaften einer festen Struktur. Ersetzen der Angabe von Eigenschaften einer festen Struktur durch die Neuerstellung einer festen Struktur oder Ersetzen ihrer Verwendung durch eine ähnliche Art von "Struktur".
4. Ersetzen von nicht serialisierbaren Werten im temporären Speicher durch Code, der in 1C:Enterprise 8.3 unterstützt wird.
5. Ersetzen der Verwendung des Aufrufs der „Show“-Methode für die Attribute des verwalteten Formulars durch die Verwendung der Eigenschaften „CurrentElement“, „CurrentPage“, der „Activate“-Methode
6. Ersetzen der Namen von Metadatenobjekten mit einer Länge von mehr als 80 Zeichen durch Namen mit einer Namenslänge von 80 Zeichen oder weniger für Metadatenobjekte
7. Umbenennen von Methoden und Eigenschaften gemäß der Methodik für den Wechsel zu Version 8.3.
8. Verfeinerung von Mechanismen zum Arbeiten mit Auswahlen, bedingtem Design, Gruppierungen und Ordnung in dynamischen Listen.
9. Verfeinerung des Codes für Anfragen mit dem Schlüsselwort "RESULTS ON GENERAL", unloaded im Modus
"Umgehung des Abfrageergebnisses. Durch Gruppierung", um die alte Arbeitslogik beizubehalten.
10. Änderungen in Klassennamen von COM-Objekten. Ersetzen der Namen „V82.COMConnector“ durch „V83.COMConnector“ und „V82.Application“ durch „V83.Application“.
11. Ablehnung im Code des Programms aus dem Ereignis "Start of SelectionFromList" für Eingabefelder im Modus der Auswahl aus der Liste
12. Ablehnung im Programmcode von der Eigenschaft "SelectionListButton" für Eingabefelder durch Setzen der Eigenschaft "DropdownListButton".
13. Ändern des Codes unter Berücksichtigung der Änderung des Werttyps, der von der globalen Kontextmethode "SafeMode ()" zurückgegeben wird
14. Ändern des Codes unter Berücksichtigung der Änderung des Ergebnisses einer Abfrage auf Konstanten (beim Zugriff auf das Feld „Value“ der Konstantentabelle, wenn die Konstante einen Wert des „ValueStorage“, „UniqueIdentifier“ oder „ExternalDataSourceTableReference“ speichert) Typ).
15. Ersetzen der Konfigurationseigenschaft „MainRole“ durch „MainRoles“
16. Verwerfen der Eigenschaften "User" und "Password" für das Objekt "InternetProxy" und Ersetzen durch die Methoden "Set()", "User()", "Password()".
17. Verfeinerung des Codes zur Unterstützung des Befehls „In der Liste anzeigen“ gemäß der Methodik für den Wechsel zu Version 8.3.
18. Verfeinerung des Codes zur Beibehaltung der bisherigen Logik des Systembetriebs mit geändertem Rückgabewert der Eigenschaft SystemInformation.OSVersion,
19. Verfeinerung des Codes, um die alte Logik des Systems beizubehalten, wenn die System-Enumeration WindowOpeningVariant nicht verwendet wird, die in Version 8.3 nicht mehr verfügbar ist.
20. Verfeinerung des Codes unter Berücksichtigung der Weigerung, modale Fenster zu verwenden.
21. Verfeinerung des Webclient-Unterstützungscodes, nämlich die Zurückweisung von Serveraufrufen und das Öffnen von Fenstern in „Before Closing“, die Zurückweisung von Serveraufrufen in „On Closing“.
22. Verfeinerung des Codes für die Möglichkeit der korrekten Verwendung der Funktion RoleAvailable(), wenn die Funktion als Parameter an die fehlende Rolle übergeben wird.
23. Für eine verwaltete Anwendung: ab Version 8.3.8 in Ereignishandlern für verwaltete Anwendungen BeforeSystem Shutdown, OnSystem Shutdown sowie in Ereignishandlern für verwaltete Formulare, die sich im Schließmodus befinden, BeforeClose, OnClose, Es ist verboten, Fenster zu öffnen und Serveraufrufe zu tätigen. Es ist notwendig, die Konfiguration zu verfeinern, damit das Schließen der Formulare korrekt durchgeführt wird - ohne Serveraufrufe.
24. Variablennamenskonflikt: Sie können den Variablennamen FormParameters nicht in einem Formularmodul verwenden. Daher müssen alle verwalteten Formularmodule, die Variablen mit dem Namen FormParameters verwenden, abgeschlossen werden, indem diese Variablen umbenannt werden.

Der Preis für diese Arbeiten ist vorläufig und für die meisten Konfigurationen relevant. Vor Arbeitsbeginn bei Vertragsschluss prüfen wir die Konfiguration und Nach der Überprüfung bestätigen wir den Preis und die Arbeitsbedingungen. Eine Überprüfung ist erforderlich, da Konfigurationen sehr unterschiedlich sein können, einschließlich stark umgeschriebener.

Kosten der Arbeit: RUB 76.800

Eine Arbeitsvertragsvorlage kann heruntergeladen werden.

Die Kosten für die Konvertierung der Konfiguration in den Kompatibilitätsmodus mit 8.3.10 können sein erhöht, wenn:
Die Konfiguration verwendet verwaltete Formulare
Es ist notwendig, die Anwendung der Modalität einzustellen
Es ist notwendig, die Funktionsfähigkeit der Konfiguration im Linux-Betriebssystem aufrechtzuerhalten

Eine neue Version der Plattform 8.3.11 wurde veröffentlicht, die es Ihnen ermöglicht, Metadatenobjekte über eine Erweiterung hinzuzufügen und zu ändern. Können wir jetzt wirklich Verbesserungen implementieren, ohne die Konfiguration aus dem Support zu nehmen? Lohnt es sich, einem Kunden Berge von Gold ohne Konsequenzen zu versprechen?

Zunächst müssen Sie sich der Einschränkungen bewusst sein, die Erweiterungen haben.

Einschränkung auf erstellte Objekte

Auf der dieser Moment Sie können erstellen:

  • Nachschlagewerke
  • Die Dokumente
  • Informationsregister
  • Austauschpläne

Sie können Details hinzufügen zu:

  • Nachschlagewerke
  • Die Dokumente

Was haben wir am Ende? Nicht alle Arten von Metadatenobjekten können hinzugefügt werden. Die häufigsten und beliebtesten, aber immer noch nicht alle. Außerdem können den Informationsregistern keine neuen Dimensionen und Ressourcen hinzugefügt werden. Sie können nur ein komplett neues Ledger erstellen.

Die Funktionalität von Erweiterungen hängt vom Kompatibilitätsmodus der Konfiguration ab, auf die die Erweiterung angewendet wird.

Kompatibilitätsmodus 8.3.8- Sie können nur die Formen von Objekten und ihren Modulen ändern, eigene Berichte und Verarbeitung hinzufügen.

Kompatibilitätsmodus 8.3.10- Sie können allgemeine Module, Objekt- und Manager-Module, Rollen ändern und "Before", "After", "Stattdessen"-Direktiven für alle Module verwenden.

Kompatibilitätsmodus "Nicht verwenden"- Sie können alle Funktionen von Erweiterungen nutzen, einschließlich des Hinzufügens neuer Objekte.

Im Moment hat ein typisches UT 11.3 den Kompatibilitätsmodus 8.3.8. In UT 11.4 ist der Kompatibilitätsmodus 8.3.10, also beispielsweise für UT, Großer Teil Erweiterungsfunktionen sind nicht verfügbar, einschließlich der Erstellung von Metadatenobjekten.

Es scheint, dass dies die Frage aufwirft: Warum nicht einfach die Root-Unterstützung aufheben, den Kompatibilitätsmodus auf „Nicht verwenden“ setzen und die Erweiterungen sicher verwenden? Wenn Sie den Kompatibilitätsmodus ändern, wird das Verhalten von Formularen, Abfrageergebnissen, d. h. Verhalten des Gesamtsystems. Wir empfehlen dringend, den Kompatibilitätsmodus nicht zu ändern, ohne ihn vorher zu testen. Aber es ist offensichtlich, dass es möglich ist, eine gesamte Anwendungslösung vollständig (oder zumindest einen Teil der verwendeten Dokumente) zu testen. Daher sollte diese Option nicht verwendet werden.

Beim Verbinden einer Erweiterung mit einer typischen Konfiguration, beim Ausleihen von typischen Objekten, steuert die Erweiterung den Kompatibilitätsmodus der Hauptkonfiguration und die Typen von ausgeliehenen Objekten und ihre Attribute. Wenn die kontrollierten Eigenschaften nicht übereinstimmen, wird die Erweiterung deaktiviert und funktioniert nicht, bis die Ursache beseitigt ist. Das heißt, bei einem größeren Update besteht eine hohe Wahrscheinlichkeit, dass sich mindestens eine der kontrollierten Eigenschaften ändert und die Erweiterung ihre Funktionalität verliert.


Wenn die Verbesserungen erheblich sind und viele Verfahren und Funktionen der Standardkonfiguration ersetzt wurden, müssen sie außerdem sorgfältig kontrolliert und gegebenenfalls an die Standardkonfiguration angepasst werden, wobei die früher vorgenommenen Änderungen beibehalten werden.


In den oben genannten Fällen benötigen Sie immer noch die Hilfe eines Programmierers und möglicherweise erhebliche Zeit für die Überarbeitung (aber immer noch weniger als beim Aktualisieren einer Konfiguration, die aus dem Support entfernt wurde).

Schlussfolgerungen

  • Die neue Version der Plattform bot neue Möglichkeiten für die Verwendung von Erweiterungen, es wurde möglich, Metadatenobjekte hinzuzufügen, aber trotzdem weist die Funktionalität gewisse Einschränkungen auf.
  • Der Kompatibilitätsmodus der Konfiguration, auf die die Erweiterung angewendet wird, schränkt den Umfang der Erweiterung stark ein, und es wird nicht empfohlen, den Kompatibilitätsmodus zu ändern.
  • Große Updates erfordern immer noch die Aufmerksamkeit des Entwicklers, da eine hohe Wahrscheinlichkeit von Änderungen in kontrollierten Eigenschaften besteht.

Implementiert in Version 8.3.6.1977.

Wir haben einen grundlegend neuen Mechanismus implementiert, um angewandte Lösungen an einen bestimmten Verbraucher anzupassen - den Erweiterungsmechanismus.

Warum sind Erweiterungen gut?

Erweiterungen bieten eine andere Strategie als die vorhandene, um typische Konfigurationen zu ändern. Die Verwendung dieser neuen Strategie wird die Wartung von Standardlösungen, die Sie an die Anforderungen einer bestimmten Implementierung oder eines bestimmten Kunden anpassen möchten, erheblich erleichtern.

Wie sieht dieser Prozess jetzt aus? Es gibt eine typische Konfiguration. Es wird vom Hersteller vollständig unterstützt. Dies bedeutet, dass es nicht geändert werden kann. Der Anbieter veröffentlicht regelmäßig neue (verbesserte) Versionen dieser Konfiguration. Aktualisieren Sie in einer solchen Situation alte Version Die Konfiguration für die neue Version erfolgt vollautomatisch. Es ist bequem und erfordert keine besonderen Fähigkeiten oder Kenntnisse des Kunden.

Aber oft will der Kunde etwas an einer typischen Konfiguration „für sich“ ergänzen oder verändern. Dazu wird der Supportmodus geändert, die Konfiguration aus dem vollen Support genommen. Der Implementierungspartner oder die kundeneigenen IT-Spezialisten nehmen daran die notwendigen Änderungen vor. Ab diesem Zeitpunkt ist ein vollautomatisches Update der typischen Konfiguration auf die vom Lieferanten freigegebene neue Version nicht mehr möglich.

Jetzt erfordert die Aktualisierung der Konfiguration die Teilnahme eines Spezialisten. Wenn die nach Wunsch des Kunden vorgenommenen Änderungen erheblich waren, kann der Spezialist, der die Konfigurationsaktualisierung durchführt, auch erhebliche Zeit in Anspruch nehmen. Und oft sind sehr gute Kenntnisse sowohl der typischen Konfiguration selbst als auch der vorgenommenen Modifikationen erforderlich.

Die von den Erweiterungen angebotene Strategie ist wie folgt. Wenn Sie die typische Konfiguration ändern möchten, berühren Sie die Konfiguration selbst nicht. Alle Änderungen, die Sie in der Erweiterung vornehmen, die eigentlich auch eine Konfiguration ist.

Im 1C:Enterprise-Modus verbinden Sie Ihre Nebenstelle einfach mit der Standardkonfiguration. Die Plattform kombiniert im 1C:Enterprise-Modus automatisch Ihre Erweiterung mit einer typischen Konfiguration. Im Ergebnis arbeitet der Kunde mit einer nach seinen Wünschen modifizierten Standardlösung.

Wenn ein Anbieter eine neue Version der generischen Konfiguration herausgibt, wird eine automatische Aktualisierung durchgeführt, da sich der Supportmodus für die generische Konfiguration nicht geändert hat. Sie blieb bei der vollen Unterstützung des Lieferanten. Und wenn Sie eine aktualisierte Anwendungslösung starten, führt die Plattform die geänderte typische Konfiguration wieder automatisch mit Ihrer Erweiterung zusammen. Und der Kunde arbeitet weiter mit einer nach seinen Wünschen modifizierten Standardlösung.

Wann sollten Sie Erweiterungen verwenden?

Der Auszugsmechanismus besticht durch seine Vielseitigkeit. Daher ist es wichtig, eine richtige Vorstellung davon zu haben, welche Aufgaben es lösen soll.

Erstens sind Erweiterungen unverzichtbar, wenn die angewandte Lösung im Data-Sharing-Modus arbeitet. Zum Beispiel im Servicemodell. Einer der Abonnenten möchte ein paar zusätzliche Berichte haben. Während andere Teilnehmer mit einer unveränderten Standardkonfiguration arbeiten möchten.

Dann können Sie für diesen Abonnenten eine Erweiterung entwickeln, in der sich alle seine Wünsche verwirklichen lassen. Der Teilnehmer verbindet diese Nebenstelle mit sich selbst und arbeitet mit der geänderten Konfiguration. Während für andere Abonnenten keine Änderungen auftreten. Denn alle Erweiterungen werden im Rahmen der aktuellen Trennwerte verbunden und gestartet.

Eine andere Situation ist die Fertigstellung einer typischen Konfiguration für einen bestimmten Kunden bei seiner Implementierung. Oder Verbesserungen der Standardkonfiguration, die von den IT-Spezialisten des Kunden in Eigenregie durchgeführt werden. Wenn all diese Verbesserungen in der Erweiterung vorgenommen werden, wird die typische Konfiguration weiterhin vollständig unterstützt, was die weitere Wartung erheblich vereinfacht.

Es besteht die Versuchung, Erweiterungen zu verwenden, um replizierte Anwendungslösungen zu erstellen, aber Sie sollten dies nicht tun. Zum einen, weil die Erweiterungen für solche Aufgaben nicht ausgelegt waren. Und zweitens, weil andere Plattform-Mechanismen wie Delivery- und Support-Mechanismen nichts von Erweiterungen wissen.

Wenn Sie sich ein wenig mit der Entstehungsgeschichte von Erweiterungen befassen, dann haben wir natürlich schon früher gesehen und sehen jetzt, dass Konfigurationen immer komplexer werden. Wir sehen, dass mehr Unterstützung benötigt wird verschiedene Level Entwicklungen: Bibliothek, modular und Industrie usw. Wir haben all diese Aufgaben analysiert und sind zu dem Schluss gekommen, dass die Anpassung der Konfigurationen an die Wünsche der Benutzer während der Implementierung derzeit die höchste Priorität hat.

Für diese Aufgabe haben wir den Erweiterungsmechanismus geschaffen. Natürlich können Sie darin verschiedene Merkmale der anderen aufgeführten Entwicklungsbereiche erkennen. Aber sie sind nicht der Hauptzweck und sollten Sie nicht verwirren.

Was kann bereits jetzt mit Hilfe von Erweiterungen geändert werden?

Bisher wurde nicht viel von dem getan, was geplant ist. Der Mechanismus wird sich natürlich weiterentwickeln. Aber was bereits getan wurde, kann in vielen Fällen in Implementierungen nützlich sein. Jetzt:

  • Kann gewechselt werden verwaltete Formulare, bestehend in einer typischen Konfiguration;
  • Sie können neue hinzufügen Subsysteme. Sie können die Zusammensetzung der in einer typischen Konfiguration verfügbaren Subsysteme ändern;
  • Kann gewechselt werden Rollen eine typische Konfiguration, indem Objekte hinzugefügt werden, die in der Erweiterung erstellt wurden;
  • Kann gewechselt werden Befehlsschnittstelle typische Konfiguration (Hauptpartition, Subsysteme);
  • Sie können neue hinzufügen Berichte und wird bearbeitet.

In Zukunft planen wir, den Funktionsumfang der Erweiterungen sukzessive zu erhöhen und holen gerne Ihre Meinung dazu ein, welche Funktionalität bei Implementierungen mit geringfügigen Modifikationen am meisten nachgefragt wird.

Wie ist die Erweiterung aufgebaut?

Die Erweiterung ist der normalen Konfiguration sehr ähnlich. Es wird auch als Baum von Objekten dargestellt. Um mit der Erweiterung zu arbeiten, werden die gleichen Arbeitsweisen verwendet wie bei der üblichen Konfiguration.

Ein wichtiges Merkmal der Erweiterung ist die Präsenz geliehene Gegenstände. Sie können jedes Objekt einer typischen Konfiguration mit dem Kontextmenübefehl ausleihen:

Geliehene Gegenstände werden nicht immer benötigt. Am besten lässt sich das am Beispiel „Haushalt“ erklären, wenn wir eine Analogie zum Mittagessen im Restaurant ziehen.

Die erste Situation ist, wenn geliehene Objekte benötigt werden.

Sie sind es gewohnt, im selben Restaurant zu Mittag zu essen. Sie bestellen immer Steak und Tee. Zum Beispiel, weil sie in diesem Restaurant sehr gut sind. Oder aus einem anderen Grund. Das ist nicht wichtig. Das einzig Wichtige ist, dass du sie isst, und sonst nichts.

Dann ist das Restaurant eine typische Informationsbasis. Du bist eine Erweiterung. Das Restaurantmenü ist eine erweiterbare Standardkonfiguration. Beefsteak und Tee sind Leihgaben. Sie haben sie ausgeliehen (denken Sie daran, dass sie auf der Speisekarte stehen).

Wie verbindet sich die Erweiterung mit der Konfiguration und wie funktioniert sie? Sie gehen in ein Restaurant und fragen nach einer Speisekarte. Auf der Speisekarte sehen Sie, dass es ein Steak und Tee gibt. Das heißt, Sie stellen eine Entsprechung zwischen ausgeliehenen Objekten und Objekten einer typischen Konfiguration her. Natürlich stimmen Sie namentlich überein :). Sie bringen dir ein Steak und Tee, du isst sie. Das heißt, die Erweiterung ist angeschlossen und funktioniert.

Eine Woche später kommen Sie, aber die Speisekarte des Restaurants hat sich geändert (die Standardkonfiguration wurde aktualisiert). Auf der Speisekarte stehen jedoch immer noch Steak und Tee. Sie sind genau das, was Sie brauchen. Sie bringen sie dir, du isst sie. Das heißt, die Erweiterung arbeitet weiterhin mit der aktualisierten typischen Konfiguration.

Eine Woche später kommen Sie in ein Restaurant und sehen, dass das Steak und der Tee von der Speisekarte verschwunden sind. Sie stehen auf und gehen (Fehlermeldung Nebenstellenverbindung). Weil du sie wolltest. Und Sie haben keine Ahnung von anderen Gerichten (Gegenständen). Der Entwickler hat dir nicht beigebracht, wie man Schnecken oder Hummer richtig isst.

Eine weitere Situation, in der Sie auf geliehene Objekte verzichten können.

Sie gehen in ein Restaurant, interessieren sich aber nicht für die Verfügbarkeit bestimmter Gerichte. Weil du sie sowieso nicht essen wirst. Sie wollen sie nur fotografieren. Und Sie wissen, wie man jedes Gericht fotografiert. Dann hängen Sie sich einfach in die Konfiguration ein und sagen, bringen Sie alle Snacks mit, die Sie auf der Speisekarte haben (holen Sie sich die Sammlung von Dokumenten aus den Metadaten). Ich werde sie schicken (Fotos machen).

Beschreibt man das in der trockenen Sprache der Entwickler, stellt sich heraus, dass man Objekte ausleihen muss:

  • Wenn sie für die visuelle Gestaltung benötigt werden. Zum Beispiel erweitern Sie ein Formular und fügen Formular-Requisiten hinzu wie ReferenzWährung.Link. Dann sollten Sie sich natürlich ein Handbuch ausleihen Währungen, damit Sie beim Verbinden mit einer typischen Konfiguration sicher sein können, dass ein solches Verzeichnis noch darin vorhanden ist.
  • Wenn sie benötigt werden, damit der Code funktioniert. Beispielsweise verweisen Sie im Erweiterungscode auf das Referenzattribut Nomenklatur - Importeur. Dann muss dieses Attribut auch ausgeliehen werden, um beim Verbinden sicher zu sein, dass in der typischen Konfiguration noch ein solches Attribut im Verzeichnis vorhanden ist Nomenklatur.

Anschließen einer Nebenstelle

Eine Erweiterung erstellen Sie im Konfigurator. Nachdem es debuggt und getestet wurde, können Sie es ablehnen, indem Sie die Erweiterung in einer *.cfe-Datei speichern.

Sie können diese Datei an den Kunden senden. Der Kunde lädt es selbstständig mit der Standardfunktion in seine Infobase im 1C:Enterprise-Modus hoch Verwalten von Konfigurationserweiterungen.

Das Arbeiten mit Erweiterungen ist in der integrierten Sprache verfügbar, sodass Sie in der angewendeten Lösung Ihre eigene Verarbeitung erstellen können, die Erweiterungen lädt. Um zu verhindern, dass jeder mit Erweiterungen „herumspielt“, haben wir ein neues Recht hinzugefügt - Konfigurationserweiterungen verwalten.

Beim Laden einer Erweiterung aus einer Datei wird diese gespeichert in Informationsbasis. Darüber hinaus wird es im Kontext der aktuellen Werte der in dieser Sitzung verwendeten Trennzeichen gespeichert.

Damit die Erweiterung "funktioniert", muss die Sitzung neu gestartet werden. Beim Sitzungsstart, kurz bevor das Ereignis aufgerufen wird SettingSessionParameters, werden alle Erweiterungen, die in der Infobase gespeichert sind und den aktuellen Sitzungsbegrenzerwerten entsprechen, eingeschlossen.

Wenn Sie im Datenfreigabemodus arbeiten, wird die Erweiterung daher nur auf Benutzer dieses bestimmten Abonnenten angewendet. Und wenn keine Datentrennung verwendet wird, funktioniert die Erweiterung für alle Benutzer der Infobase.

Beim Anschluss einer Nebenstelle wird, wie bereits gesagt, kontrolliert, dass es sich um geliehene Objekte in einer typischen Konfiguration handelt. Objekte werden nach Namen abgeglichen.

Zusätzlich ist auch eine feinere Steuerung möglich. Sie können nicht nur die bloße Existenz von Objekten kontrollieren, sondern auch den Zustand ihrer individuellen Eigenschaften. Das heißt, wenn Sie an ein Restaurant und ein Steak denken, kann es für Sie wichtig sein, nicht nur das Vorhandensein eines irgendwie gekochten Steaks, sondern die Tatsache, dass es hier roh gekocht wird, „mit Blut“.

Um auf die Erweiterung zurückzukommen, steuert sie standardmäßig nicht die Eigenschaften von ausgeliehenen Objekten. Bei Bedarf können Sie jedoch einige Eigenschaften steuerbar machen. Beispielsweise ist es für Ihren Algorithmus wichtig, dass nicht nur ein Verzeichnis vorhanden ist Nomenklatur, sondern auch, dass sein Code vom Typ ist Linie.

Wenn dann in einer typischen Konfiguration der Anbieter den Codetyp dieses Verzeichnisses auf ändert Nummer, erkennt Ihre Erweiterung dies zur Verbindungszeit und meldet einen Fehler.

Ein interessanter Punkt betrifft die Umbenennung typischer Konfigurationsobjekte. Zum Beispiel sind Sie in ein Restaurant gekommen und haben stattdessen die Speisekarte gesehen Steak geschrieben Steak. Das heißt, beim Verbinden mit der Konfiguration findet die Erweiterung kein Verzeichnis darin. Nomenklatur, weil der Anbieter es in umbenannt hat Produkte.

Jetzt ist diese Situation kein Problem für Sie. Und Sie müssen nicht den ganzen Erweiterungscode "schaufeln", damit statt Nomenklatur schreiben Produkte. Werke und. Sie brauchen also nur den Namen des ausgeliehenen Objekts zu ändern Produkte, und die Plattform nimmt die restlichen Änderungen in der Erweiterung selbst vor. Oder mit Ihrer minimalen Hilfe.

Erweiterungsarbeiten

Sie können lange über die Merkmale der Erweiterung verschiedener Objekte sprechen, über die Merkmale der Arbeit der Erweiterungen selbst. Aber wir sind durch den Umfang des Übersichtsartikels begrenzt, daher werden wir nur die wichtigsten und aufschlussreichsten Punkte ansprechen.

Der eigentliche "Charme" von Erweiterungen besteht natürlich nicht darin, dass Sie der typischen Konfiguration etwas hinzufügen können, das nicht darin enthalten ist. Und die Tatsache, dass Sie in der Erweiterung ändern können, was bereits in der typischen Konfiguration enthalten ist. Das heißt, Sie können die Eigenschaften von ausgeliehenen Objekten ändern.

Das grundlegende Konzept, das verwendet wird, wenn Konfiguration und Erweiterung zusammenarbeiten, kann wie folgt beschrieben werden. An den Stellen, an denen sie sich „nicht schneiden“, ergänzt die Erweiterung die Konfiguration. An den Stellen, an denen sie sich "überschneiden", wird die Verlängerung angewendet.

Sie können dies am Beispiel verwalteter Formulare genauer sehen. Sie können ein Formular aus der Hauptkonfiguration ausleihen und in der Erweiterung uneingeschränkt bearbeiten. Für den visuellen Teil des Formulars und für sein Modul werden zwei verschiedene Zusammenführungsstrategien verwendet.

Der visuelle Teil des Formulars wird im Moment der Ausleihe in der Erweiterung fixiert. Und im 1C:Enterprise-Modus werden für jedes Formularelement Änderungen relativ zu diesem Zustand in der Standardkonfiguration und in der Erweiterung analysiert.

Wurden keine oder nur die typische Konfiguration geändert, wird der Wert aus der typischen Konfiguration übernommen. Andernfalls wird der Wert aus der Erweiterung verwendet.

Wenn Sie dem Formular in der Erweiterung also einen neuen Befehl hinzugefügt haben, sehen Sie ihn zusammen mit den übrigen Formularbefehlen. Und wenn Sie den Titel einer bestehenden Gruppe geändert haben, sehen Sie Ihren Titel auch dann, wenn der Anbieter den Titel dieser Gruppe in einer typischen Konfiguration ändert.

Formularmodule verfolgen einen anderen Ansatz. Für ein geliehenes Formular erstellt die Erweiterung ein eigenes Modul mit eigenen Handlern für alle Ereignisse. Im 1C:Enterprise-Modus werden beide Formularmodule (aus der Standardkonfiguration und aus der Erweiterung) in einem Kontext zusammengefasst. Aus diesem Grund hat jede Erweiterung ein eigenes Präfix, das den Handlern aller Ereignisse im Formularmodul hinzugefügt wird. Damit es keine Übereinstimmungen mit Handlern aus der typischen Konfiguration gibt. Danach werden Ereignis- und Befehlshandler sequentiell und synchron aufgerufen. Zuerst der Handler von der Erweiterung. Dann von der typischen Konfiguration. Sie können diese Reihenfolge ändern oder die Ausführung des Handlers aus der typischen Konfiguration vollständig unterbinden.

Im Hinblick auf die gemeinsame Arbeit der Konfiguration und Erweiterung im 1C:Enterprise-Modus existieren sie im Allgemeinen in einem gemeinsamen Namensraum. Dies gilt nicht nur für einzelne Module, sondern auch für die Metadatenbäume selbst. Daher gibt es im 1C:Enterprise-Modus keine Möglichkeit festzustellen, ob dieses Objekt für eine typische Konfiguration "nativ" ist oder ob es von einer Erweiterung stammt.

Für die restlichen Objekte, die Sie in der Erweiterung verwenden können, sieht alles viel einfacher aus.

In der Erweiterung können Sie eigene Subsysteme erstellen. Mit ausgeliehenen Objekten können Sie bestehende Subsysteme erweitern: Fügen Sie Objekte und Subsysteme hinzu, die bereits in der Standardkonfiguration vorhanden sind oder die Sie in der Erweiterung erstellt haben. Sie können nichts aus einem vorhandenen Subsystem entfernen.

Sie können Rollen nur erweitern, indem Sie ihnen Objekte hinzufügen, die in der Erweiterung erstellt wurden. Sie können auch nichts aus einer bestehenden Rolle entfernen. Gleiches gilt für die Kommandoschnittstelle.

Eine Erweiterung ist fast eine Konfiguration

Wir haben eingangs gesagt, dass eine Erweiterung einer regulären Konfiguration ähnlich ist. Daher möchte ich abschließend noch ein paar Worte dazu sagen, wie Erweiterungen mit anderen Plattformmechanismen integriert werden.

Eine Erweiterung hat (wie eine normale Konfiguration) eine Hauptkonfiguration und eine Datenbankkonfiguration. Der Mechanismus zum Vergleichen und Zusammenführen von Konfigurationen funktioniert mit Erweiterungen genauso wie mit regulären Konfigurationen.

Sie können die Erweiterung in eine Datei entladen (allerdings mit einer anderen *.cfe-Erweiterung) und aus einer Datei laden. Erweiterungen können in XML entladen/geladen werden.

Mechanismen zum globalen Suchen, Ersetzen und Bearbeiten von Oberflächentexten funktionieren auch mit Erweiterungen.

Es gibt neue Befehlszeilenoptionen für die Arbeit mit Erweiterungen sowie neue Ereignisse im Protokoll.

In der integrierten Sprache ist das Hauptobjekt für die Arbeit mit Erweiterungen Extension Manager-Konfiguration.

Wir haben eine neue Version des Telefonie-Panels für 1C veröffentlicht.

  • Ausführung 1.2.24.10 zum gewöhnliche Anwendungen
  • Ausführung 1.4.26.17 zum gelang es Anwendungen

In der Release-Version für eine verwaltete Anwendung wurde es möglich, ein Telefonie-Panel mit einzubetten minimale Modifikationen Grundkonfiguration mit Expansionsmechanismus Aufbau.

Vorteile der Verwendung der Erweiterung

Die Erweiterung ist der normalen Konfiguration sehr ähnlich. Um damit zu arbeiten, werden die gleichen Arbeitsmethoden verwendet wie bei der üblichen Konfiguration. Erweiterungen werden in erster Linie erstellt, um Änderungen am Programm zu erleichtern. Jetzt müssen Sie keine "Codestücke" in bestimmte Module einfügen und neue Metadatenobjekte hinzufügen, sondern fügen der Konfiguration einfach eine Erweiterung hinzu.

Der große Vorteil der Verwendung von Erweiterungen ist Automatisches Update Hauptkonfiguration. Jetzt müssen die Support-Einstellungen für eine typische Konfiguration nicht mehr geändert werden.

Funktionen zum Einbetten eines Telefoniepanels für 1C

Solche Funktionen wurden ab Version für Erweiterungen für die Plattform verfügbar 8.3.9.1818 . Um dies zu nutzen, haben wir daher den Kompatibilitätsmodus für die Erweiterung deaktiviert, da die Version 8.3.9 noch nicht unterstützt. Dementsprechend wird es notwendig, den Kompatibilitätsmodus für die Hauptkonfiguration zu deaktivieren, da sonst ein Fehler auftritt: " Der Konfigurationserweiterungs-Kompatibilitätsmodus ist größer als der Hauptkonfigurations-Kompatibilitätsmodus".

2) In der Hauptkonfiguration fügen wir die Rolle hinzu MIKO_Softphone, für die wir alle Rechte entfernen.

Beim Hinzufügen eines neuen Metadatenobjekts, in diesem Fall einer Rolle, muss das Verzeichnis aktualisiert werden Metadaten-Objekt-Identifikatoren. Als wir diese Rolle zur Erweiterung hinzufügten, wurde sie von den typischen Konfigurationen ignoriert, d. h. beim Aktualisieren des MetadataObjectIdentifiers-Verzeichnisses erschien die Rolle nicht darin. Aus diesem Grund funktionierte der Profilmechanismus der Telefonie-Panel-Einstellungen nicht richtig, ein Fehler ist aufgetreten: " Metadatenobjektkennung für MIKO_Softphone-Rolle nicht gefunden".

Darüber hinaus trat diese Situation nicht in allen Konfigurationen auf, wie in "Handelsverwaltung, 11.2.3.218" und "Integrierte Automatisierung, 2.0.3.222" Es gab keine Probleme mit der Rolle, als sie der Erweiterung selbst hinzugefügt wurde. Um unserer Lösung eine gewisse Vielseitigkeit zu verleihen und einen reibungslosen Betrieb in den meisten von uns unterstützten Konfigurationen zu gewährleisten, haben wir uns entschieden, die Rolle hinzuzufügen MIKO_softphone in die Hauptkonfiguration übernehmen und in der Extension ausleihen, und dann die Einstellungen für diese Rolle in der Extension implementieren.

Ein sehr wichtiges Merkmal ist die Tatsache, dass Sie nach dem Einbetten unserer Erweiterung das Panel gemäß unseren alten Anweisungen einbetten möchten, Sie müssen die Erweiterung deaktivieren und die MIKO_softphone-Rolle entfernen. Wenn Sie die Erweiterung erneut verwenden möchten, müssen Sie zuerst die Rolle und dann die Erweiterung hinzufügen.

Zusammenfassend

Sogar mit der Möglichkeit, die Hauptkonfiguration zu ändern und minimale Änderungen an der Konfiguration vorzunehmen, haben wir den Prozess der Einbettung eines Telefonie-Panels viel einfacher gemacht. Jetzt müssen Sie keine Änderungen an den Modulen der verwalteten Anwendung vornehmen, Verarbeitungs- und Subsysteme zur Konfiguration hinzufügen oder Rollen einrichten. Die Erweiterung erledigt das alles für Sie! Wir werden den Prozess der Einbettung eines Telefonie-Panels für 1C weiter verbessern!

Anweisungen zum Einbetten eines Telefonie-Panels für 1C unter Verwendung des Erweiterungsmechanismus befinden sich.

Stellen Sie Ihre Fragen über das Feedback-Formular.

© 2019. MIKO LLC Alle Rechte vorbehalten.