1c Funktionsoptionen. Funktionale Optionen (1Cv82). Indirekte Zugangskontrolle

Funktionale Optionen Und Funktionsoptionsparameter- Dies sind 1C 8.3 (8.2) Konfigurationsobjekte, die zusammen einen Mechanismus für Funktionsoptionen darstellen. Der Funktionsoptionsmechanismus ist eine Funktionalität, mit der Sie den Funktionsumfang bestimmen können, den Benutzer benötigen.

Einfach ausgedrückt ist der Funktionsoptionsmechanismus ein Ein-/Ausschalter für verschiedene Funktionen in einer Konfiguration.

Warum müssen Sie möglicherweise die Funktionalität deaktivieren?

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

Oftmals können zusätzliche Funktionen die Arbeit der Mitarbeiter erschweren. Ein triviales Beispiel für die Verwendung von Funktionsoptionen in 1C: Die Datenbank speichert Aufzeichnungen für eine Organisation oder ein Lager. Warum sollte der Benutzer dann verpflichtet werden, diese Daten in allen Dokumenten auszufüllen?

Was steuern die Funktionsoptionen?

Zunächst einmal spiegelt sich die Verwendung funktionaler Optionen am bequemsten in der Benutzeroberfläche wider: Formulardetails, Befehlsformulare, allgemeine Schnittstelle – all dies kann mit funktionalen Optionen verknüpft werden. Je nach Wert der Funktionsoptionen können Sie die Anzeige von Daten in einem auf Basis von erstellten Bericht einschränken.

Objekt 1c „Funktionale Möglichkeiten“ - sollen Funktionalitäten in einer Anwendungslösung hervorheben, die während der Implementierung aktiviert (deaktiviert) werden können, ohne sich selbst zu ändern (zusammen mit Subsystemen bilden sie die 1C-Thin-Client-Schnittstelle). Sie sind Teil des funktionalen Optionsmechanismus.

Mechanismus für funktionale Optionen enthält zwei Metadatenobjekte:

  1. Funktionsoption;
  2. Parameter der Funktionsoptionen.

Weitere Details

Funktionelle Option stellt ein Metadatenobjekt dar, das die Zusammensetzung der Anwendungsschnittstelle direkt beeinflussen kann (sofern die Funktionsoption ihren Wert in einem booleschen Attribut speichert). Mit Objekten dieses Typs können Sie Elemente ausblenden, die sich auf nicht verfügbare Funktionen beziehen. Mit der Währungsbuchhaltungsoption können beispielsweise Währungen, das Feld „Währung von“ und die Spalte „Währungsbetrag“ in Berichten ausgeblendet werden.

Die Quelle des Werts einer Funktionsoption ist das als Speichereigenschaft ausgewählte Metadatenobjekt, beispielsweise könnte es sein.

Wenn der Wert einer Funktionsoption in einem Verzeichnisattribut oder einer Ressource gespeichert ist, sind zusätzliche Informationen erforderlich, die genau angeben, wie der Optionswert ausgewählt werden soll. Zu diesem Zweck wird ein separates Metadatenobjekt bereitgestellt - Parameter für funktionale Optionen.

Wir können sagen, dass die Parameter funktionaler Optionen die Koordinatenachsen des Werteraums funktionaler Optionen sind. Darüber hinaus kann ein Parameter von Funktionsoptionen für viele Funktionsoptionen gleichzeitig den Wert „seiner“ Koordinatenachse bestimmen.

[Zusammenbruch]

Funktionelle Optionen können Auswirkungen haben:

  1. zur Benutzeroberfläche:
    • global;
    • Details (einschließlich Spalten mit Formulardetails wie Wertetabelle oder ValueTree);
    • Formularbefehle;
  2. über Berichte, die mithilfe eines Datenkompositionssystems implementiert wurden;
  3. zu Algorithmen, die in einer integrierten Sprache geschrieben sind – es ist möglich, die Werte von Funktionsoptionen aus der integrierten Sprache zu erhalten und sie unter verschiedenen Bedingungen zu verwenden, um beispielsweise den Rechenaufwand zu reduzieren (siehe z. B. ).

AUFMERKSAMKEIT! Wenn die Client-Anwendung mit der Dateiversion der Infobase über den Webserver arbeitet, führt die Änderung der Funktionsoption erst nach einem Neustart des Webservers zu einer Änderung der Benutzeroberfläche (ein Neustart der Client-Anwendung führt nicht zu einer Änderung der Benutzeroberfläche).

Eigenschaften von Funktionsoptionen 1C

  • Speicher ist ein Feld, in dem Sie ein Objekt vom Typ Boolean auswählen müssen. Typischerweise werden Konstanten verwendet.
  • beim Empfang – das Flag ist für die Fähigkeit verantwortlich, den Wert einer Funktionsoption im privilegierten Modus zu empfangen.
  • Zusammensetzung – eine Liste von Objekten und Objektdetails, deren Sichtbarkeit ein-/ausgeschaltet wird, wenn eine Funktionsoption ein-/ausgeschaltet wird (wird über ein verwaltetes Formular gesteuert).

Abhängig von den Bedingungen einer bestimmten Implementierung ist es beispielsweise möglich, die Warenabrechnung nach Lager zu deaktivieren, sodass bei der Registrierung von Dokumenten für den Wareneingang das Feld Lager nicht im Dokumentformular angezeigt wird.

Merkmale der Verwendung von 1C-Funktionsoptionen:

  1. Funktionale Optionen können Werte jeglichen Typs haben (nicht unbedingt boolesche Werte).
  2. Wenn Sie eine neue Konstante hinzufügen, um eine Funktionsoption zu verwenden, achten Sie darauf, diese in das entsprechende Subsystem einzubinden und ihr Berechtigungen zuzuweisen.
  3. Die Arbeit mit Funktionsoptionen ist über die integrierte Sprache möglich, dank derer der Entwickler seine eigenen Algorithmen für die Werte von Funktionsoptionen erstellen kann.
  4. Der Befehlsschnittstellenbefehl wird von der Befehlsschnittstelle ausgeschlossen, wenn die Funktionsoption deaktiviert ist:
    • ein Attribut, das ein Befehlsparameter ist;
    • Befehlsparametertyp (wenn der Befehlsparametertyp zusammengesetzt ist, ist der Befehl nicht verfügbar, wenn alle Parametertypen deaktiviert sind).

AUFMERKSAMKEIT! Funktionsoptionen und ihre Parameter haben keinen Einfluss auf die Zusammensetzung der Datenbank: Alle Tabellen und Felder sind in der Datenbank vorhanden, unabhängig vom Status der Funktionsoptionen.

Einfluss funktionaler Optionen auf Formulardetails und Befehle:

  1. verwalteter Formulartyp<Вид>Objekt ( DirectoryObject, DocumentObject usw.) werden deaktiviert, wenn das entsprechende Objekt durch die Funktionsoption deaktiviert wird. Es werden nur die funktionalen Optionen analysiert, die keine Parameter haben.
  2. Grundlegende Attribute eines verwalteten Formulartyps DynamischeListe wird deaktiviert, wenn die Funktionsoption das Konfigurationsobjekt deaktiviert, das als Haupttabelle der dynamischen Liste angegeben ist. Es werden nur die funktionalen Optionen analysiert, die keine Parameter haben.
  3. Das Formularattribut eines Referenztyps ist deaktiviert, wenn das Konfigurationsobjekt, das diesen Typ bildet, durch eine funktionale Option deaktiviert ist. Das Formularattribut eines zusammengesetzten Typs ist deaktiviert, wenn die Funktionsoptionen alle konstituierenden Typen deaktivieren.
  4. Eine Formulartabelle wird deaktiviert, wenn sie Formularattributdaten anzeigt, die durch eine Funktionsoption deaktiviert sind.
  5. Es gibt keine Typen im Typauswahldialog (z. B. für Eingabefelder, die mit Attributen eines komplexen Typs verknüpft sind), wenn die Konfigurationsobjekte, die diese Typen bilden, durch eine funktionale Option deaktiviert sind. Informationen zu Typen, die durch Funktionsoptionen deaktiviert sind, werden auf der Clientseite zwischengespeichert und nach 20 Minuten oder während eines Methodenaufrufs gelöscht UpdateInterface().

AUFMERKSAMKEIT! Im Gegensatz zur Befehlsschnittstelle werden die Werte der Funktionsoptionsparameter nur für eine bestimmte Instanz des Formulars festgelegt.

Erstellen eines Parameters für funktionale Optionen

Ein Funktionsoptionsparameter wird mithilfe des 1C-Konfigurationsobjekts „Funktionsoptionsparameter“ erstellt.

[Zusammenbruch]

Dies kann im Konfigurationsfenster durch Hinzufügen eines neuen Objekts erfolgen.

Parametereigenschaften für funktionale Optionen:

  • Verwendung – richtet eine Reihe von Objekten ein, deren Werte bestimmen, wie der Wert einer Funktionsoption ausgewählt werden soll. Die Liste der verfügbaren Objekte umfasst Verzeichnisse und Informationsregisterdimensionen. Für jeden Funktionsoptionsparameter in dieser Liste können Sie ein Verzeichnis (aus der gesamten Verzeichnisliste) und eine Dimension jedes Informationsregisters auswählen.

AUFMERKSAMKEIT! Sie können nicht dasselbe Metadatenobjekt in mehreren Funktionsoptionsparametern verwenden.

Mit der Veröffentlichung der 1C:Enterprise 8.2-Plattform erschien ein neues Objekt im Konfigurationsbaum – „Funktionelle Möglichkeiten“. Es wird in allen Standardkonfigurationen, die auf verwalteten Formularen basieren, aktiv eingesetzt und dient der Vereinfachung der Anzeige einzelner Details und Objekte in der Benutzeroberfläche. In Ihrer Konfiguration gibt es beispielsweise ein Modul zum Austausch mit externen Webdiensten. Dieses Modul nutzt eine Reihe von Details in Dokumenten, Registern und einzelnen Komponenten in Subsystemen. Das Modul ist optional und nicht für jedes Unternehmen notwendig. Da nicht jeder ein Modul benötigt, ist es logisch, dass es auch nicht immer notwendig ist, alle damit verbundenen Elemente/Felder anzuzeigen.

In älteren Versionen der Plattform erforderte die Lösung solcher Probleme das Schreiben von zusätzlichem Code, der in allen abhängigen Abschnitten aufgerufen werden musste. Wenn wir beispielsweise bestimmte Formulardetails ausblenden mussten (je nach Einstellungswert), mussten wir beim Öffnen des Formulars den entsprechenden Code aufrufen. Das war nicht sehr praktisch und in den meisten Fällen verzichteten die Entwickler auf solche Dinge.

Es ist gut, wenn Sie nur Felder in Form von Dokumenten ausblenden müssen, aber wir können auch Registerformulare haben, mit denen auch eine Benutzerinteraktion möglich ist. Das Schreiben einer universellen Anzeigesteuerungsfunktion ist ziemlich schwierig und erfordert zusätzliche Zeit, die nie ausreicht.

Funktionale Optionen sollen diese und viele andere Schwierigkeiten lösen, die mit der Anzeige von Oberflächenelementen/der Zusammensetzung verfügbarer Objekte in der Benutzeroberfläche verbunden sind. In diesem Hinweis werde ich keine Beispiele für die Verwendung des Hauptzwecks von Funktionsoptionen betrachten, sondern die Aufmerksamkeit auf ihre Verwendung auf nicht standardmäßige Weise lenken. Es mag vielen fortgeschrittenen Entwicklern bekannt sein, aber ich bin völlig zufällig auf diese Methode gekommen. Genauer gesagt wurde es von der Praxis der Programmierung in JavaScript inspiriert.

Fall Nr. 1: eine funktionale Option als Hülle über andere Objekte

Das erste nicht standardmäßige Merkmal funktionaler Optionen ist die Möglichkeit, Wrapper zu erstellen. Schauen wir uns das einfachste Beispiel an – Konstanten. Sie fügen beispielsweise einer Konfiguration mit einer großen Anzahl von Benutzerrollen eine neue Konstante hinzu. Damit Benutzer auf den Wert einer Konstante zugreifen können, müssen Sie Leserechte für die entsprechenden Rollen festlegen. Wenn die Rechte nicht festgelegt sind, können Benutzer den Wert nicht abrufen. Wenn es viele Rollen gibt und diese nicht von der Basisrolle geerbt werden, müssen Sie Zeit damit verbringen, die entsprechenden Kontrollkästchen zu aktivieren.

Eine Funktionsoption kann dieses Problem eleganter lösen. Die Idee ist folgende: Erstellen Sie eine Konstante (z. B. ). Wir übertragen keine Rechte daran. Erstellen Sie eine gleichnamige Funktionsoption und geben Sie diese in der Eigenschaft an "Lagerung" geben eine Konstante an „Möglichkeit zur Datenspeicherung“. Wir haben auch die Flagge gesetzt „Privilegierte Behandlung bei Erhalt“.

Das war's, jetzt schreiben wir überall im Code, wo Sie auf eine Konstante verweisen müssen, so:

Da wir die Option auf den privilegierten Modus eingestellt haben, müssen wir keine zusätzlichen Rechte für die Konstante angeben. Natürlich besteht keine Notwendigkeit, diese Technik in allen denkbaren und unvorstellbaren Situationen anzuwenden. Denken Sie daran, dass die richtige Rechteverteilung der Schlüssel zum Seelenfrieden ist. Benutzen Sie den Trick nur in wirklich notwendigen Fällen.

Fall Nr. 2. Zusätzliche Abstraktionsebene

Ich weiß nicht, wie ich diese Methode korrekter nennen soll, aber in meinen Augen klingt es genau so. Schauen wir uns das vorherige Beispiel an. Wir haben immer noch die gleiche ständige „Fähigkeit, Daten zu speichern“. Wir arbeiten damit mit der gleichnamigen Funktionsoption als Wrapper.

Stellen Sie sich nun vor, wir wollten die Konstante loswerden und auf die Verwendung eines Verzeichnisses umsteigen. Ein typisches Szenario zur Lösung eines solchen Problems (wenn wir nur eine Konstante verwenden) wäre die Ausführung eines globalen Suchtools, um den Zugriff auf die Konstante zu erkennen. Ich möchte Sie daran erinnern, dass wir die Konstante wie folgt behandeln sollten, wenn wir keine funktionale Option als Wrapper verwenden:

Constants.Ability toSaveData.Get();

Wir finden alle Aufrufe und ersetzen sie durch den Pfad zum neuen Speicherobjekt. Stimmen Sie zu, das ist ziemlich unpraktisch. Wenn wir den vorherigen Fall verwendet haben (Verwendung einer Funktionsoption als Wrapper), müssen wir zum „Verschieben“ nur zu den Eigenschaften der Funktionsoption gehen und die Eigenschaft ändern "Lagerung". Geben Sie zum Beispiel dort an "Verzeichnis" oder „Informationsregister“. Es sind keine Spiele mit globaler Suche erforderlich. Der Code für den Zugriff auf den Wert einer Konstante über eine Funktionsoption bleibt derselbe:

GetFunctionalOption("DataSavingAbility");

Mechanismus für funktionale Optionen ist eines der Entwicklungswerkzeuge. Es ermöglicht Ihnen, in der Konfiguration die Funktionalität zu definieren, die je nach den Anforderungen einer bestimmten Organisation während der Implementierung verwendet werden darf oder nicht.

Die Funktionsweise des Mechanismus basiert auf zwei Konfigurationsobjekten:

  • Funktionelle Option
    Konfigurationsobjekte und ihre Details können mit funktionalen Optionen verknüpft werden, die einer Anwendungslösung hinzugefügt werden. Zum Beispiel mit der Funktionsoption Lagerbuchhaltung Sie können die Requisiten verlinken Lager dokumentieren Warenannahme. Wenn Sie diese Funktionsoption dann im 1C:Enterprise-Modus aktivieren, wird das Feld Lager wird in allen Dokumentformularen angezeigt. Wenn Sie es ausschalten - Feld Lager wird nicht angezeigt. Mehr lesen...
  • Funktionsoptionsparameter
    Funktionale Optionen können mit Parametern verwendet werden. So kann beispielsweise das Erscheinungsbild eines bestimmten Formulars vom Wert des im Formular ausgewählten Parameters abhängen. Zum Beispiel durch den Funktionsoptionsparameter Währungsbuchhaltung Vielleicht Organisation. Dann, je nachdem welche Organisation im Formular ausgewählt ist, das Feld Währung der gegenseitigen Abrechnungen wird ausgeblendet oder angezeigt. Mehr lesen...

Funktionale Optionen sind allgemeine Konfigurationsobjekte. Sie sind Teil des Funktionsoptionsmechanismus und ermöglichen Ihnen die Auswahl von Funktionen in einer Anwendungslösung, die während der Implementierung aktiviert/deaktiviert werden können, ohne die Anwendungslösung selbst zu ändern.

Abhängig von den Bedingungen einer bestimmten Implementierung ist es beispielsweise erforderlich, die Warenabrechnung nach Lagern zu deaktivieren. Damit bei der Vorbereitung von Dokumenten für den Wareneingang das Feld Lager wurde im Dokumentformular nicht angezeigt.

Zu diesem Zweck kann in der Konfiguration eine Funktionsoption definiert werden Lagerbuchhaltung, gespeichert in einer Typkonstante Boolescher Wert.

Dieser Funktionsmöglichkeit können verschiedene Konfigurationsobjekte bzw. deren Details zugeordnet werden. Sie können das Attribut beispielsweise mit dieser Funktionsoption verknüpfen Lager dokumentieren Warenannahme.

Anschließend können Sie diese Funktionsoption während der Implementierung in einer bestimmten Infobase im 1C:Enterprise-Modus aktivieren oder deaktivieren.

Die Plattform schaltet die Anzeige aller relevanten Oberflächenelemente (Felder, Befehle, Listenspalten, Berichtselemente) automatisch ein und aus. In unserem Fall wird das Feld ausgeblendet oder angezeigt Lager in allen Dokumentenformen Warenannahme.