Der Kompatibilitätsmodus für Konfigurationserweiterungen ist größer. Konfigurationserweiterungen – wie man einer Standardkonfiguration Funktionalität hinzufügt, ohne die Unterstützung zu entfernen (20-minütiges Video)

Implementiert in Version 8.3.6.1977.

Wir haben einen grundlegend neuen Mechanismus zur Anpassung von Anwendungslösungen an einen bestimmten Benutzer implementiert – den Erweiterungsmechanismus.

Wofür sind Erweiterungen gut?

Erweiterungen bieten eine andere Strategie zum Ändern von Standardkonfigurationen als die bestehende. Mit dieser neuen Strategie wird die Unterstützung von Standardlösungen, die Sie an die Bedürfnisse einer bestimmten Implementierung oder eines bestimmten Kunden anpassen möchten, erheblich erleichtert.

Wie sieht dieser Prozess jetzt aus? Es gibt eine Standardkonfiguration. Es wird vom Lieferanten voll unterstützt. Dies bedeutet, dass es nicht geändert werden kann. Der Anbieter veröffentlicht regelmäßig neue (verbesserte) Versionen dieser Konfiguration. In einer solchen Situation erfolgt die Aktualisierung der alten Version der Konfiguration auf die neue Version völlig automatisch. Dies ist bequem und erfordert keine besonderen Fähigkeiten oder Kenntnisse des Kunden.

Aber oft möchte der Kunde „für sich“ etwas an der Standardkonfiguration hinzufügen oder ändern. Dazu wird der Supportmodus geändert, die Konfiguration wird aus dem Vollsupport entfernt. Der Implementierungspartner oder kundeneigene IT-Spezialisten nehmen die notwendigen Änderungen daran vor. Ab diesem Zeitpunkt ist ein vollautomatisches Update der Standardkonfiguration auf eine neue, vom Lieferanten freigegebene Version nicht mehr möglich.

Jetzt erfordert die Aktualisierung der Konfiguration die Beteiligung eines Spezialisten. Wenn die auf Wunsch des Kunden vorgenommenen Änderungen außerdem erheblich waren, kann es sein, dass der Spezialist, der die Konfigurationsaktualisierung durchführt, viel Zeit in Anspruch nimmt. Und oft sind sehr gute Kenntnisse sowohl der typischen Konfiguration selbst als auch der vorgenommenen Änderungen erforderlich.

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

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

Wenn ein Anbieter eine neue Version einer Referenzkonfiguration veröffentlicht, erfolgt eine automatische Aktualisierung, da sich der Unterstützungsmodus der Referenzkonfiguration nicht geändert hat. Sie blieb vom Lieferanten voll unterstützt. Und wenn Sie die aktualisierte Anwendungslösung starten, führt die Plattform die geänderte Standardkonfiguration wieder automatisch mit Ihrer Erweiterung zusammen. Und der Kunde arbeitet mit der nach seinen Wünschen modifizierten Standardlösung weiter.

Wann sollten Sie Erweiterungen verwenden?

Der Verlängerungsmechanismus besticht durch seine Vielseitigkeit. Daher ist es wichtig, eine richtige Vorstellung davon zu haben, welche Aufgaben gelöst werden sollen.

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

Dann können Sie für diesen Abonnenten eine Erweiterung entwickeln, in der Sie alle seine Wünsche umsetzen können. Der Teilnehmer verbindet diese Nebenstelle und arbeitet mit der geänderten Konfiguration. Für andere Abonnenten ergeben sich keine Änderungen. Denn alle Erweiterungen werden basierend auf den aktuellen Trennzeichenwerten verbunden und gestartet.

Eine andere Situation liegt vor, wenn eine Standardkonfiguration während der Implementierung für einen bestimmten Kunden geändert wird. Oder Modifikationen der Standardkonfiguration, die die IT-Spezialisten des Kunden selbst durchführen. Wenn alle diese Verbesserungen in der Erweiterung vorgenommen werden, bleibt die Standardkonfiguration vollständig unterstützt, was die weitere Wartung erheblich vereinfacht.

Es besteht die Versuchung, mithilfe von Erweiterungen Massenanwendungslösungen zu erstellen, dies sollte jedoch nicht geschehen. Erstens, weil die Erweiterungen nicht für solche Aufgaben konzipiert waren. Und zweitens, weil andere Plattformmechanismen, etwa Bereitstellungs- und Supportmechanismen, nichts über Erweiterungen wissen.

Wenn man ein wenig in die Geschichte des Erscheinens von Erweiterungen schaut, dann haben wir natürlich schon früher gesehen und sehen jetzt, dass Konfigurationen immer komplexer werden. Wir sehen, dass auf verschiedenen Entwicklungsebenen zusätzliche Unterstützung erforderlich ist: Bibliothek, Modul und Industrie usw. Wir haben alle diese Aufgaben analysiert und sind zu dem Schluss gekommen, dass die höchste Priorität derzeit darin besteht, Konfigurationen bei Implementierungen an die Wünsche der Benutzer anzupassen.

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

Was können Sie jetzt mit Erweiterungen ändern?

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

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

Wir planen, den Funktionsumfang der Erweiterungen in Zukunft sukzessive zu erweitern und würden uns freuen, Ihre Meinung dazu einzuholen, welche Funktionalität bei Implementierungen mit geringfügigen Modifikationen am meisten nachgefragt wird.

Wie funktioniert die Erweiterung?

Die Erweiterung ist der regulären Konfiguration sehr ähnlich. Es wird auch als Baum von Objekten dargestellt. Für die Arbeit mit der Erweiterung werden die gleichen Arbeitsmethoden wie bei der regulären Konfiguration verwendet.

Ein wichtiges Merkmal der Erweiterung ist die Präsenz geliehene Gegenstände. Sie können jedes Standardkonfigurationsobjekt über den Kontextmenübefehl ausleihen:

Ausgeliehene Gegenstände werden nicht immer benötigt. Dies lässt sich am besten anhand eines „alltäglichen“ Beispiels erklären, wenn wir eine Analogie zum Mittagessen in einem Restaurant ziehen.

Die erste Situation liegt vor, wenn geliehene Gegenstände benötigt werden.

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

Dann ist das Restaurant eine typische Informationsbasis. Du bist eine Erweiterung. Die Speisekarte des Restaurants ist eine erweiterbare Standardkonfiguration. Beefsteak und Tee sind geliehene Gegenstände. Sie haben sie ausgeliehen (haben sich daran erinnert, dass sie auf der Speisekarte standen).

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

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

Eine Woche später kommen Sie ins Restaurant und stellen fest, dass Steak und Tee von der Speisekarte verschwunden sind. Sie stehen auf und gehen (Fehlermeldung zur Nebenstellenverbindung). Denn das ist es, was du wolltest. Und Sie haben keine Ahnung von anderen Gerichten (Gegenständen). Der Entwickler hat Ihnen nicht beigebracht, wie man Schnecken oder Hummer richtig isst.

Eine andere Situation, in der Sie auf geliehene Gegenstände verzichten können.

Sie gehen in ein Restaurant, aber die Verfügbarkeit bestimmter Gerichte interessiert Sie nicht. Weil du sie sowieso nicht essen wirst. Sie möchten sie nur fotografieren. Und Sie wissen, wie man jedes Gericht fotografiert. Dann verbinden Sie sich einfach mit der Konfiguration und sagen: Bringen Sie alle Snacks mit, die Sie auf der Speisekarte haben (Sie erhalten eine Sammlung von Dokumenten aus den Metadaten). Ich werde sie umleiten (Fotos machen).

Wenn wir dies in der trockenen Sprache der Entwickler beschreiben, stellt sich heraus, dass Sie Objekte ausleihen müssen:

  • Wenn sie für die visuelle Gestaltung benötigt werden. Sie erweitern beispielsweise das Formular und fügen Formular-Requisiten hinzu, z DirectoryCurrencies.Link. Dann sollten Sie sich das Nachschlagewerk natürlich ausleihen Währungen, sodass Sie bei der Verbindung zu einer Standardkonfiguration sicher sein können, dass ein solches Verzeichnis darin noch vorhanden ist.
  • Wenn sie benötigt werden, damit der Code funktioniert. Im Erweiterungscode greifen Sie beispielsweise auf das Verzeichnisattribut zu Nomenklatur - Importeur. Dann muss dieses Attribut ebenfalls ausgeliehen werden, damit Sie beim Verbinden sicher sein können, dass in der Standardkonfiguration dieses Attribut noch im Verzeichnis vorhanden ist Nomenklatur.

Anschluss einer Nebenstelle

Eine Erweiterung erstellen Sie im Konfigurator. Sobald 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 über die Standardfunktion in seine Informationsdatenbank im 1C:Enterprise-Modus hoch Konfigurationserweiterungen verwalten.

Die Arbeit mit Erweiterungen ist über die integrierte Sprache möglich, sodass Sie in der Anwendungslö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 in der Infobase gespeichert. Darüber hinaus wird es im Kontext der aktuellen Trennzeichenwerte gespeichert, die in dieser Sitzung verwendet werden.

Damit die Erweiterung funktioniert, muss die Sitzung neu gestartet werden. Wenn die Sitzung beginnt, kurz bevor das Ereignis aufgerufen wird SettingSessionParameters, werden alle in der Infobase gespeicherten Erweiterungen, die den aktuellen Trennzeichenwerten für diese Sitzung entsprechen, verbunden.

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 Erweiterung wird, wie bereits erwähnt, geprüft, ob entliehene Objekte in der Standardkonfiguration vorhanden sind. Objekte werden nach Namen zugeordnet.

Darüber hinaus ist eine feinere Steuerung möglich. Sie können nicht nur die Existenz von Objekten selbst kontrollieren, sondern auch den Zustand ihrer einzelnen Eigenschaften. Das heißt, wenn Sie an ein Restaurant und ein Steak denken, ist für Sie möglicherweise nicht nur das Vorhandensein eines irgendwie gekochten Steaks wichtig, sondern genau die Tatsache, dass es hier selten, „selten“, gekocht wird.

Zurück zur Erweiterung: Standardmäßig steuert sie nicht die Eigenschaften geliehener Objekte. Bei Bedarf können Sie jedoch einige Eigenschaften steuerbar machen. Für Ihren Algorithmus ist es beispielsweise wichtig, dass nicht nur ein Verzeichnis vorhanden ist Nomenklatur, sondern auch, dass sein Code den Typ hat Linie.

Wenn dann in einer typischen Konfiguration der Lieferant den Codetyp dieses Verzeichnisses in ändert Nummer, erkennt Ihre Erweiterung dies zum Zeitpunkt der Verbindung und meldet einen Fehler.

Ein interessanter Punkt betrifft die Umbenennung von Standardkonfigurationsobjekten. Du bist zum Beispiel in ein Restaurant gekommen und stattdessen Steak geschrieben Steak. Das heißt, wenn die Erweiterung eine Verbindung zur Konfiguration herstellt, findet sie darin kein Verzeichnis Nomenklatur, weil der Anbieter es in umbenannt hat Waren.

Nun ist diese Situation für Sie kein Problem. Und Sie müssen stattdessen nicht den gesamten Erweiterungscode „schaufeln“. Nomenklatur schreiben Waren. Es funktioniert auch. Daher müssen Sie lediglich den Namen des ausgeliehenen Objekts in ändern Waren, und die Plattform wird die restlichen Änderungen in der Erweiterung selbst vornehmen. Oder mit Ihrer minimalen Hilfe.

Erweiterungsvorgang

Über die Funktionen der Erweiterung verschiedener Objekte und über die Funktionen der Erweiterungen selbst kann man schon lange sprechen. Der Umfang des Übersichtsartikels beschränkt uns jedoch, sodass wir nur auf die wichtigsten und aufschlussreichsten Punkte eingehen.

Der größte „Schönheitsfaktor“ von Erweiterungen besteht natürlich nicht darin, dass man einer Standardkonfiguration etwas hinzufügen kann, was nicht vorhanden ist. Und Tatsache ist, dass Sie in der Erweiterung ändern können, was bereits in der Standardkonfiguration enthalten ist. Das heißt, Sie können die Eigenschaften ausgeliehener Objekte ändern.

Das Grundkonzept, nach dem Konfiguration und Erweiterung zusammenarbeiten, lässt sich wie folgt beschreiben. An den Stellen, an denen sie sich nicht überschneiden, ergänzt die Erweiterung die Konfiguration. An den Stellen, an denen sie sich „kreuzen“, wird eine Erweiterung angewendet.

Dies lässt sich am Beispiel verwalteter Formulare genauer betrachten. Sie können ein Formular aus der Hauptkonfiguration ausleihen und in der Erweiterung ohne Einschränkungen bearbeiten. Für den visuellen Teil des Formulars und für dessen Modul werden zwei unterschiedliche Kombinationsstrategien verwendet.

Der visuelle Teil des Formulars wird zum Zeitpunkt seiner Entlehnung 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.

Wenn keine Änderungen vorgenommen wurden oder diese nur in der Standardkonfiguration vorhanden waren, wird der Wert aus der Standardkonfiguration übernommen. In anderen Fällen wird der Wert aus der Erweiterung verwendet.

Wenn Sie also in der Erweiterung einen neuen Befehl zum Formular hinzugefügt haben, wird dieser zusammen mit den anderen Befehlen des Formulars angezeigt. Und wenn Sie den Titel einer bestehenden Gruppe geändert haben, dann sehen Sie Ihren Titel auch dann, wenn der Titel dieser Gruppe in der Standardkonfiguration vom Lieferanten geändert wird.

Formularmodule verwenden einen anderen Ansatz. Für die geliehene Form 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 verfügt jede Erweiterung über ein eigenes Präfix, das allen Event-Handlern im Formularmodul hinzugefügt wird. Damit es nicht zu Zufällen mit Handlern aus der Standardkonfiguration kommt. Anschließend werden Event- und Command-Handler sequentiell und synchron aufgerufen. Zuerst der Handler aus der Erweiterung. Dann aus der Standardkonfiguration. Sie können diese Reihenfolge ändern oder die Ausführung des Handlers aus der Standardkonfiguration vollständig verbieten.

Im Allgemeinen existieren die gemeinsamen Vorgänge von Konfiguration und Erweiterung im 1C:Enterprise-Modus 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 „nativ“ für die Standardkonfiguration ist oder ob es von einer Erweiterung stammt.

Bei den anderen Objekten, die Sie in der Erweiterung verwenden können, sieht alles viel einfacher aus.

In der Erweiterung können Sie eigene Subsysteme erstellen. Mit geliehenen Objekten können Sie bestehende Subsysteme erweitern: Fügen Sie ihnen 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 vorhandenen Rolle löschen. Gleiches gilt für die Befehlsschnittstelle.

Erweiterung ist fast Konfiguration

Wir sagten zu Beginn, dass die Erweiterung der regulären Konfiguration ähnelt. Daher möchte ich abschließend noch ein paar Worte zur Integration der Erweiterungen in andere Plattformmechanismen sagen.

Eine Erweiterung besteht (wie eine reguläre Konfiguration) aus einer Hauptkonfiguration und einer Datenbankkonfiguration. Der Mechanismus zum Vergleichen und Zusammenführen von Konfigurationen funktioniert bei Erweiterungen genauso wie bei regulären Konfigurationen.

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

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

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

In der integrierten Sprache ist das Hauptobjekt für die Arbeit mit Erweiterungen ExtensionManagerConfiguration.

In diesem Artikel schlage ich vor, darüber nachzudenken, was eine „Konfigurationserweiterung“ ist und 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 eine kleine Theorie.

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

Wozu dienen Erweiterungen?

Zunächst werden Erweiterungen erstellt, um Änderungen am Programm einfacher durchführen zu können. Das heißt, wenn Benutzer das Hinzufügen von Funktionen wünschen, mussten Programmierer vor dem Erscheinen von Erweiterungen die Konfiguration aus der vollständigen Unterstützung entfernen und die Standardkonfiguration ändern.

Der Entzug des vollständigen Supports bringt eine Reihe von Unannehmlichkeiten mit sich:

  • die Möglichkeit einer automatischen Aktualisierung entfällt, was zumindest zu einer Verlängerung der dafür benötigten Zeit führt;
  • Es ist ein hochqualifizierter Spezialist erforderlich, der das Programm betreut.
  • Wenn Änderungen an Standardobjekten einer Standardkonfiguration vorgenommen wurden, können diese bei einem Update verschwinden, d. h. sie können wieder durch Standardobjekte des Lieferanten ersetzt werden.

Bei der Verwendung von Erweiterungen und bei Änderungen greift der Programmierer nicht auf die Standardkonfiguration ein. Alle Änderungen werden über Erweiterungen vorgenommen, die (wie ich oben geschrieben habe) auch Konfigurationen sind. Auf diese Weise wird die Hauptkonfiguration weiterhin vollständig unterstützt.

Wenn es nach der Aktualisierung der Hauptkonfiguration in der neuen Version Änderungen an einem Objekt gibt, das zuvor durch die Erweiterung geändert wurde, werden die Änderungen weiterhin von der Erweiterung übernommen. Das heißt, Erweiterungen haben eine höhere Priorität als die Hauptkonfiguration.

Video - Erweiterungen in 1C in 45 Minuten

Holen Sie sich 267 Video-Lektionen zu 1C kostenlos:

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 „Konfigurationserweiterungen“. 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, hat die Erweiterungskonfiguration genau den gleichen Aufbau wie die Hauptkonfiguration. Nur ist es zunächst völlig sauber, ohne Gegenstände.

Ich habe kürzlich einen Artikel darüber geschrieben, wie man es selbst macht. Anhand ihres Beispiels möchte ich es mithilfe einer Erweiterung integrieren.

In Bearbeitung habe ich ein Feld mit einem Link zum Verzeichnis „Organisationen“. Deshalb brauche ich diesen Ratgeber. Wir werden jedoch kein neues Verzeichnis „Organisationen“ erstellen, zumal die Plattform dies nicht zulässt. Es ist nicht möglich, dass eine Erweiterungskonfiguration Objekte mit demselben Namen wie Objekte in der Hauptkonfiguration enthält.

Daher leihen wir uns das Nachschlagewerk aus der Hauptkonfiguration aus:

Klicken Sie nun mit der rechten Maustaste auf „Verarbeitungen“ und wählen Sie „Externe Verarbeitung einfügen, Bericht ...“ Somit fügen wir der Erweiterungskonfiguration eine neue Verarbeitung hinzu. Wenn Sie meine Verarbeitung verwenden, benennen Sie sie sofort um, da die Hauptkonfiguration bereits eine gleichnamige Verarbeitung enthält.

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

Dies ist die Struktur, die ich mir ausgedacht habe:

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

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

  • Ausführung 1.2.24.10 Für normal Anwendungen
  • Ausführung 1.4.26.17 Für gelang es Anwendungen

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

Vorteile der Verwendung der Erweiterung

Die Erweiterung ist der regulären Konfiguration sehr ähnlich. Um damit zu arbeiten, werden dieselben Arbeitstechniken verwendet wie bei der regulären Konfiguration. Erweiterungen werden in erster Linie erstellt, um die Durchführung von Änderungen am Programm zu erleichtern. Sie müssen keine „Codeteile“ mehr in bestimmte Module einfügen und neue Metadatenobjekte hinzufügen, sondern müssen lediglich eine Erweiterung zur Konfiguration hinzufügen.

Ein großer Vorteil der Verwendung von Erweiterungen ist Automatisches Update Hauptkonfiguration. Jetzt müssen die Supporteinstellungen für eine typische Konfiguration nicht mehr geändert werden.

Funktionen zum Einbetten eines Telefonie-Panels für 1C

Solche Funktionen stehen ab Version für Erweiterungen der Plattform zur Verfügung 8.3.9.1818 . Um dies zu nutzen, haben wir seit der Version den Kompatibilitätsmodus für die Erweiterung deaktiviert 8.3.9 noch nicht unterstützt. Dementsprechend ist es notwendig, den Kompatibilitätsmodus für die Hauptkonfiguration zu deaktivieren, andernfalls erscheint eine Fehlermeldung: „ Der Kompatibilitätsmodus der Konfigurationserweiterung ist größer als der Kompatibilitätsmodus der Hauptkonfiguration".

2) Wir fügen der Hauptkonfiguration eine Rolle hinzu MIKO_Softphone, wofür wir sämtliche Rechte entziehen.

Beim Hinzufügen eines neuen Metadatenobjekts, in diesem Fall einer Rolle, ist eine Aktualisierung des Verzeichnisses erforderlich MetadataObjectIdentifiers. Als wir diese Rolle zur Erweiterung hinzugefügt haben, wurde sie von den Standardkonfigurationen ignoriert, d. h. beim Aktualisieren des MetadataObjectIdentifiers-Verzeichnisses wurde die Rolle darin nicht angezeigt. Aus diesem Grund funktionierte der Profilmechanismus der Telefonie-Panel-Einstellungen nicht ordnungsgemäß und es erschien der Fehler: „ Der Metadatenobjektbezeichner für die Rolle MIKO_Softphone wurde nicht gefunden".

Darüber hinaus trat diese Situation nicht in allen Konfigurationen auf, sondern in „Handelsmanagement, 11.2.3.218“ Und „Komplexe Automatisierung, 2.0.3.222“ Beim Hinzufügen der Rolle zur Erweiterung selbst gab es keine Probleme. Um unserer Lösung eine gewisse Vielseitigkeit zu verleihen und einen störungsfreien 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 einfügen und in der Erweiterung ausleihen und dann die Einstellungen für diese Rolle in der Erweiterung implementieren.

Eine sehr wichtige Funktion ist die Tatsache, dass Sie die Erweiterung deaktivieren und die Rolle MIKO_softphone entfernen müssen, wenn Sie nach der Installation unserer Erweiterung das Panel gemäß unseren alten Anweisungen einbetten möchten. Wenn Sie die Erweiterung erneut verwenden möchten, müssen Sie zunächst die Rolle und dann die Erweiterung hinzufügen.

Fassen wir zusammen

Selbst durch die Möglichkeit, die Grundkonfiguration zu ändern und nur minimale Änderungen an der Konfiguration vorzunehmen, haben wir den Prozess der Einbettung eines Telefonie-Panels vereinfacht. Jetzt müssen Sie keine Änderungen an den Modulen der verwalteten Anwendung vornehmen, keine Verarbeitungs- und Subsysteme zur Konfiguration hinzufügen oder Rollen konfigurieren. 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 Telefonpanels für 1C mithilfe des Erweiterungsmechanismus finden Sie hier.

Stellen Sie Ihre Fragen über das Feedback-Formular.

© 2019. MIKO LLC Alle Rechte vorbehalten.

Arbeitsaufwand und Möglichkeiten 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 RUR

Eine Liste aller Änderungen in verschiedenen Versionen der Plattform finden Sie unter den folgenden Links:
Für Plattform 8.2:
http://downloads.v8.1c.ru/content/Platform/8_2_19_106/1cv8upd.htm

Bevor Sie mit der Übersetzung auf 8.3 beginnen, benötigen Sie:

Überprüfen Sie den kontrollierten Sperrmodus. Wenn „Automatisch“ verwendet wird, können bei der Migration auf 8.3 zusätzliche Kosten für den Wechsel in den verwalteten Sperrmodus anfallen.
Wenn Sie den Kompatibilitätsmodus mit 8.2.16 und höher verwenden, müssen Sie prüfen, ob die Tabellen neu strukturiert wurden
Bestimmen Sie, welche Arten von Clients verwendet werden (Thin, Thick, Web-Client)
Stellen Sie fest, ob es Maschinen gibt, auf denen Linux ausgeführt wird

Übersetzung der Konfiguration 8.1 → 8.2.13

Arbeitsaufwand: 54.000 Rubel.

Übersetzung der Konfiguration 8.2.13 → 8.2.16 (einschließlich Umstrukturierung)

Wichtige Änderungen:
Der Modus zum Speichern von Konstanten und Einstellungen von Akkumulationsregistern wurde geändert. Jedes Objekt verfügt über eine eigene Datenbanktabelle
Die Implementierung des verwalteten Sperrmechanismus wurde überarbeitet.
Für das technologische Log-Ereignis „TLOCK“ wird die Eigenschaft „Txt“ nur im Kompatibilitätsmodus mit Version 8.2.13 geschrieben
Der Einfluss des Debugging-Modus auf die Betriebsgeschwindigkeit im 1C:Enterprise-Modus für Thin Client, Thick Client, Server und externe Verbindung wurde reduziert.
Die Ausführung einer Abfrage der Form „ValueType(Field1) = ValueType(Field2)“ wurde optimiert, wenn „Field1“ und „Field2“ Werte eines Referenztyps enthalten.
Für verwaltete Formularfelder, die Attribute eines komplexen Typs anzeigen, wurde das Öffnen der Schnellauswahlliste in Fällen beschleunigt, in denen der komplexe Typ Referenztypen mit unterschiedlichen Schnellauswahleinstellungen enthält.
Für das neue unabhängige und nichtperiodische Informationsregister wird der Dimensionsindex geclustert

Änderungen, die Konfigurationsänderungen erfordern:

Wenn der Kompatibilitätsmodus deaktiviert ist, ist der Parameter „Period“ der Methode „Get()“ des periodischen Informationsregister-Managers erforderlich. Im Kompatibilitätsmodus mit Version 8.2.13 und Version 8.1 ist das Verhalten unverändert (die Methode kann ohne Angabe eines Parameters verwendet werden, das Ergebnis ist jedoch undefiniert).
Bei gleichzeitiger Verwendung der Methoden „SetValue()“ und „UseFromDataSource()“ des „DataLockElement“-Objekts wird eine Ausnahme ausgelöst. Im Kompatibilitätsmodus mit Version 8.2.13 hat sich das Verhalten nicht geändert (der durch die Methode „UseFromDataSource()“ festgelegte Wert hat Vorrang).
Das Speichern von Datenwerten, die keine Serialisierung unterstützen, wird nicht unterstützt. Im Kompatibilitätsmodus hat sich das Verhalten nicht geändert.
Wenn die Datenbank dateibasiert ist, muss die Infobase konvertiert werden. Nach Beginn der Konvertierung ist die Arbeit mit dieser Informationsbasis mit früheren Versionen der 1C:Enterprise 8-Plattform nicht mehr möglich. Wenn die Entwicklung über ein Konfigurations-Repository erfolgt, müssen Sie vor der Konvertierung der Infobase eine Kopie des Repositorys erstellen

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

Zunächst ist es notwendig, die Umstrukturierung testweise durchzuführen und die Ausführungszeit dieses Vorgangs zu messen.
Wenn Sie eine 1C-Serverversion verwenden, die älter als 8.2.19 ist, beispielsweise Version 8.3, können bei der Umstrukturierung folgende Fehler auftreten:

In diesem Fall müssen Sie Folgendes tun:
Installieren Sie einen separaten 1C-Server der Version 8.2.19 und stellen Sie die zu untersuchende Datenbank darauf bereit
Öffnen Sie die Datenbank im Konfigurator auf dem 1C-Server Version 8.2.19 und ändern Sie den Kompatibilitätsmodus auf „Nicht verwenden“.
Infobase-Tabellen neu strukturieren
Nachdem die Umstrukturierung abgeschlossen ist, verschieben Sie die Informationsbasis auf die ursprüngliche 1C-Serverversion 8.3

Die Kosten für die Übertragung der Konfiguration vom 8.2.13-Kompatibilitätsmodus in den 8.2.16-Modus (nicht kompatibler Modus 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.

Übersetzung der Konfiguration 8.2.16 → 8.3.10

Die Konfigurationsübersetzungsarbeit umfasst die folgenden Konfigurationsänderungen:

1. Beseitigen Sie Konflikte bei Eigenschaftsnamen. Ändern der Variablennamen, um sie an die neuen Eigenschaften anzupassen, die in 1C:Enterprise 8.3 erschienen sind.
2. Beseitigen Sie widersprüchliche Bildnamen. Umbenennen der Namen von Bildern mit Namen, die mit den Namen aus der Bildbibliothek übereinstimmen.
3. Verfeinerung des Codes beim Ändern der Eigenschaften der festen Struktur. Ersetzen der Angabe der Eigenschaften einer festen Struktur durch die Neuerstellung einer festen Struktur oder Ersetzen ihrer Verwendung durch einen ähnlichen „Struktur“-Typ.
4. Ersetzen der Platzierung nicht serialisierbarer Werte im temporären Speicher durch Code, der in 1C:Enterprise 8.3 unterstützt wird.
5. Ersetzen des Aufrufs der Methode „Show“ für verwaltete Formulardetails durch die Verwendung der Eigenschaften „CurrentElement“, „CurrentPage“ und der Methode „Activate“.
6. Ersetzen Sie Metadatenobjektnamen, die länger als 80 Zeichen sind, durch Namen mit maximal 80 Zeichen für Metadatenobjekte
7. Umbenennen von Methoden und Eigenschaften gemäß der Methodik für die Migration auf Version 8.3.
8. Verbesserung der Mechanismen für die Arbeit mit Auswahlen, bedingter Formatierung, Gruppierungen und Reihenfolge in dynamischen Listen.
9. Verfeinerung des Codes für Abfragen mit dem Schlüsselwort „GENERAL RESULTS“, entladen im
„Abfrageergebnis umgehen. Durch Gruppierung“, um die bisherige Arbeitslogik beizubehalten.
10. Änderungen in den Namen der COM-Objektklassen. Ersetzen der Namen „V82.COMConnector“ durch „V83.COMConnector“ und „V82.Application“ durch „V83.Application“.
11. Ablehnung im Programmcode des Ereignisses „Start of Selection From List“ für Eingabefelder im Modus der Auswahl aus einer Liste
12. Ablehnung im Programmcode der Eigenschaft „ChoiceList Button“ für Eingabefelder durch Setzen der Eigenschaft „Dropdown List Button“.
13. Ändern des Codes, um die Änderung des Typs des von der globalen Kontextmethode „SafeMode()“ zurückgegebenen Werts zu berücksichtigen.
14. Ändern des Codes, um eine Änderung des Ergebnisses einer Abfrage nach Konstanten zu berücksichtigen (beim Zugriff auf das Feld „Wert“ der Konstantentabelle, wenn die Konstante einen Wert vom Typ „Wertspeicher“, „UniqueIdentifier“ oder speichert „Externe DataSourceTableReference“.
15. Ersetzen der Konfigurationseigenschaft „MainRole“ durch „MainRoles“
16. Ablehnung der Eigenschaften „User“ und „Password“ für das Objekt „InternetProxy“ und Ersatz durch die Methoden „Set()“, „User()“, „Password()“.
17. Verfeinerung des Codes zur Unterstützung des Befehls „In Liste anzeigen“, entsprechend der Übergangsmethode zu Version 8.3.
18. Verfeinerung des Codes, um die bisherige Logik des Systembetriebs beizubehalten, wenn sich der Rückgabewert der Eigenschaft SystemInformation.OSVersion geändert hat,
19. Verfeinerung des Codes zur Beibehaltung der bisherigen Logik des Systems bei Verweigerung der Verwendung der Systemaufzählung OptionOpenWindow, die in Version 8.3 nicht mehr verfügbar ist.
20. Verfeinerung des Codes unter Berücksichtigung der Weigerung, modale Fenster zu verwenden.
21. Verbesserung des Codes zur Unterstützung des Webclients, nämlich Verweigerung von Serveraufrufen und Öffnen von Fenstern in „Vor dem Schließen“, Verweigerung von Serveraufrufen in „Beim Schließen“.
22. Verbesserung des Codes, um die korrekte Verwendung der Funktion RoleAvailable() zu ermöglichen, wenn die Funktion als Parameter an eine fehlende Rolle übergeben wird.
23. Für eine verwaltete Anwendung: ab Version 8.3.8 in Ereignishandlern einer verwalteten Anwendung BeforeSystemShutdown, WhenSystemShutdown, sowie in Ereignishandlern eines verwalteten Formulars, das sich im Schließmodus befindet, BeforeClosing, WhenClosing, Es ist verboten, Fenster zu öffnen und Serveraufrufe durchzuführen. Die Konfiguration muss verbessert werden, damit Formulare korrekt geschlossen werden können – ohne Serveraufrufe.
24. Variablennamenkonflikt: Sie können den Variablennamen FormParameters nicht in einem Formularmodul verwenden. Daher ist es notwendig, alle verwalteten Formularmodule, die Variablen mit dem Namen „FormParameters“ verwenden, zu ändern, indem diese Variablen umbenannt werden.

Der Preis für diese Arbeiten ist vorläufig und gilt für die meisten Konfigurationen. Vor Beginn der Arbeiten bei Vertragsabschluss prüfen wir die Konfiguration und Nach der Prüfung bestätigen wir den Preis und die Arbeitsbedingungen. Eine Überprüfung ist notwendig, da Konfigurationen sehr unterschiedlich und auch stark umgeschrieben sein können.

Arbeitsaufwand: 76.800 Rubel.

Eine Arbeitsvertragsvorlage kann heruntergeladen werden.

Die Kosten für die Übertragung der Konfiguration in den Kompatibilitätsmodus mit 8.3.10 können sein erhöht, Wenn:
Die Konfiguration verwendet verwaltete Formulare
Es ist notwendig, auf die Verwendung von Modalitäten zu verzichten
Es ist notwendig, die Funktionalität der Konfiguration im Linux-Betriebssystem aufrechtzuerhalten

Kolleginnen und Kollegen, hallo zusammen.

Neulich wurde ein Test-Enterprise Accounting veröffentlicht, bei dem der Kompatibilitätsmodus für Plattform 8.3.6 deaktiviert war.
Dies bedeutet, dass diese Version eine neue Engine verwendet, die Formulare auf eine neue Art und Weise rendert.
Darüber können Sie in „Through the Looking Glass“ nachlesen.

Neben den Standarderweiterungen sollten Sie auch Ihre eigenen Erweiterungen auf die neue Plattform umstellen.
Während des Übersetzungsprozesses habe ich mir eine kleine Checkliste bzw. Erinnerung erstellt, was zu tun ist.

Memo:


1. Übertragen Sie die Erweiterung auf eine neue Plattform

Ändern Sie dazu den Erweiterungskompatibilitätsmodus in den Konfigurationskompatibilitätsmodus.
Die Enterprise Accounting-Version verfügt über die folgenden Eigenschaften:

In der Erweiterung können Sie genau die gleichen Eigenschaften festlegen oder alle Kontrollkästchen deaktivieren.
Keine Kontrollkästchen bedeuten, dass die Erweiterung diese Eigenschaften beim Herstellen einer Verbindung nicht überprüft.
Wenn sich diese Eigenschaften dann in der Hauptkonfiguration ändern, wird die Erweiterung trotzdem gestartet:


2. Verbindungsprobleme beheben

Dazu starten wir die Konfiguration im Enterprise-Modus und prüfen, ob sie startet oder nicht.
Fehler, aufgrund derer die Erweiterung nicht verbunden werden konnte, können im Protokoll eingesehen werden
(Administration – Support und Wartung – Logbuch)
Wir interessieren uns für Veranstaltungen – „Sitzung. Fehler beim Anwenden der Konfigurationserweiterung:

Am häufigsten wird das Verbindungsproblem durch Entfernen unnötiger Details oder Objekte gelöst.

Die Hauptschwierigkeit besteht darin, dass die Erweiterung nicht alle Fehler auf einmal anzeigt (dieses Problem wurde übrigens in 8.3.9 behoben).
Daher ist es notwendig, die Konfigurationen nach der Behebung jedes Fehlers nacheinander auszuführen.
Damit Sie das Logbuch bequem starten können, fügen Sie es zu Ihren Favoriten hinzu:



3. Formulare in der Erweiterung aktualisieren

Klicken Sie dazu in jedem geänderten Formular auf „Formularerweiterung aktualisieren“
Mit diesem Befehl laden wir das Hauptkonfigurationsformular erneut in die Erweiterung.

Prinzipiell geht es auch ohne, dies ist aber notwendig, damit das Formular in der Erweiterung genauso aussieht wie in der Hauptkonfiguration.
In Version 3.0.44 wurden fast alle Formulare geändert, daher wäre es schön, diese Änderungen in die Erweiterung aufzunehmen.


4. Wir passen das Formular an die Regeln der neuen Engine an.

Ich empfehle Ihnen, den Artikel „Empfehlungen zur Anpassung von Formularen an 8.3.7“ zu lesen.
Es untersucht die Funktionen der neuen Engine und gibt konkrete Empfehlungen, wie sichergestellt werden kann, dass auf der neuen Plattform alles in Ordnung ist.

Ich habe mir folgende Vorgehensweise ausgedacht:

  • Wir entfernen alle Dekorationen, die zum Einrücken verwendet wurden.
    Stattdessen werden jetzt Gruppen verwendet.
  • Mal sehen, dass alles gut aussieht.
    Wenn etwas schief geht, schauen Sie sich den Artikel an.
    Wenn alles gut ist, geht es weiter.
  • Überprüfung der neuen Plattformeigenschaften„Combined“, „AutomaximumWidth“ und „AutomaximumHeight“.
    Achten Sie lediglich darauf, dass diese Eigenschaften auf die Standardeinstellungen der Plattform eingestellt sind und das Formular dadurch nicht auseinander bewegt wird.
mob_info