Wie öffne ich ein Formular eines vorhandenen Objekts? Wie fülle ich programmgesteuert ein neues Dokumentformular aus und öffne es? 1c Öffnen Sie das Formular eines vorhandenen Dokuments.
Das programmgesteuerte Öffnen von Formularen in einer verwalteten 1C-Anwendung unterscheidet sich erheblich vom Öffnen in einer regulären Anwendung. Schauen wir uns zunächst die alte Methode an. Es besteht darin, ein Formular zu erhalten und es dann in einem normalen oder normalen Format zu öffnen Modaler Modus(Beim Öffnen im modalen Modus blockiert das Formular das Programm).
GetForm() . Offen()
Dies ist die langsamste Methode zum Öffnen von Formularen. Sie können das Formular jedoch vor dem Öffnen programmgesteuert verarbeiten. Um den Code zu verarbeiten, müssen Sie ein wenig ändern:
Form = GetForm( „Dokument. Empfang von Waren und Dienstleistungen. Dokumentformular“)
;
//Hier führen wir Aktionen mit dem Formular aus
Bilden. Offen();
Es ist zu berücksichtigen, dass bei Erhalt des Formulars eine weitere Ereignisprozedur ausgeführt wird WhenCreatedOnServer.
Schauen wir uns andere Methoden an, mit denen Sie Formulare in einer verwalteten 1C-Anwendung schneller und bequemer öffnen können. Abhängig von der konkreten Situation können unterschiedliche Methoden zum Einsatz kommen.
1. So öffnen Sie ein Objektformular in einer verwalteten Anwendung, wenn ein Link dazu vorhanden ist.
In diesem Fall ist alles äußerst einfach.
RefLink = Verzeichnisse. Nomenklatur. FindByCode("000000001" );
OpenValue(RefLink) ;
2. So öffnen Sie das Auswahlformular und erhalten dann den ausgewählten Wert.
Dafür gibt es eine Funktion EnterValue(). Die Funktion hat 3 Parameter:
- Die Variable, in die der ausgewählte Wert geschrieben wird;
- Ein Hinweis, der im Auswahlfenster angezeigt wird;
- Beschreibung der Typen der ausgewählten Werte. Es kann mehrere Typen geben. In diesem Fall werden Sie aufgefordert, einen Typ auszuwählen, bevor Sie einen bestimmten Wert auswählen.
Als Ergebnis der Ausführung der Funktion öffnet sich das Standardauswahlformular für ein Objekt des angegebenen Typs.
Variablenwert;
Array= neues Array;
Array. Hinzufügen(Typ( „DirectoryLink.Nomenclature“)
)
;
Array. Hinzufügen(Typ( „DirectoryLink. Gegenparteien“)
)
;
TypeDescription= new TypeDescription(Array) ;
Res = EnterValue(Value, "Hint" , TypeDescription) ;
Mit früheren Methoden konnten Sie nur die Standardformulare für Objekte öffnen (Objektformular oder Auswahlformular). Wenn Sie öffnen müssen freie Form, dann können Sie die Funktion verwenden OpenForm().
Diese Funktion hat einige Parameter. Schauen wir uns einige davon an:
- Formularname— Hier können Sie eine der Standardobjektformen auswählen, zum Beispiel Auswahlformular oder Listenformular. Oder ein bestimmtes Formular, das von den Entwicklern erstellt wurde.
- Optionen— ermöglicht es Ihnen, es auf das Formular im Formular zu übertragen Strukturen Geben Sie vor dem Öffnen einige Parameter ein und bestimmen Sie so die Ausgabedaten. Parameter können beliebige Daten sein, die vom Client an den Server übergeben werden können. Die beim Öffnen des Formulars übergebenen Parameter können in der Prozedur verarbeitet werden WhenCreatingOnServer() beim Öffnen des Formulars.
- Formularöffnungsmodus– hat 3 Optionen: unabhängig, die gesamte Schnittstelle blockieren, das Eigentümerformular blockieren.
Schauen wir uns an, wie die Funktion verwendet wird OpenForm() in verschiedenen Situationen.
3. So öffnen Sie das Formular eines vorhandenen Objekts
Jedes Formular verfügt über ein Schlüsselattribut. Es ist in der Liste der Formulardetails fett hervorgehoben und wird normalerweise aufgerufen Ein Objekt in Form von Elementen von Nachschlagewerken und Dokumenten. Andere Objekte können einen anderen Namen haben. Um ein Formular eines vorhandenen Objekts zu öffnen, müssen Sie einen Parameter an das zu öffnende Formular übergeben Schlüssel mit dem Wert als Referenz auf ein Objekt.
&OnClient
Prozedur Command1 (Befehl)
Parameter= neue Struktur;
Parameter. Insert("Key" , FindC() );
OpenForm(, Parameter) ;
EndProzedur
&Auf dem Server
Funktion FindC();
Rückgabeverzeichnisse. Gegenparteien. FindByRequisites („TIN“, „745107734623“)
EndFunction
4. So öffnen Sie ein neues Objektformular
Hier genügt eine einfache Funktion OpenForm() ohne irgendwelche Parameter.
&OnClient
Prozedur Command1 (Befehl)
OpenForm( „Verzeichnis. Gegenparteien. Objektform“)
;
EndProzedur
5. So öffnen Sie ein neues Objektformular und füllen es basierend auf etwas aus
Sie müssen einen Parameter übergeben Base, dessen Wert ein Verweis auf das füllende Basisobjekt ist. Dadurch wird der Vorgang gestartet ProcessFill().
&OnClient
Prozedur Command1 (Befehl)
Parameter= neue Struktur;
Parameter. Insert("Base", LinkToBuyerAccount) ;
OpenForm( „Dokument. Verkauf von Waren und Dienstleistungen. Objektform“, Parameter) ;
EndProzedur
In diesem Beispiel wird ein Dokument erstellt Verkauf von Waren und Dienstleistungen und ausgefüllt auf der Grundlage einer Rechnung zur Zahlung an den Käufer, deren Link übermittelt wurde.
6. So öffnen Sie ein Formular und legen eine Auswahl fest
Die Auswahl auf 1C-Formularen kann einfach oder komplex sein. Eine einfache Auswahl beinhaltet Ausdrücke wie Organisation = Horns and Hooves LLC. Eine komplexe Auswahl umfasst andere Vergleichsarten, z. Auf der Liste. In diesem Artikel betrachten wir die Organisation der einfachen Auswahl, und der komplexen Auswahl wird ein separater Artikel gewidmet.
Um eine einfache Auswahl zu organisieren, müssen Sie einen Parameter mit einem Schlüssel an das zu öffnende Formular übergeben Auswahl, ist der Wert eine Struktur, in der der Schlüssel der Name des dynamischen Listenfelds und der Wert die gesuchten Daten sind.
Öffnen wir zum Beispiel das Verzeichnislistenformular GTD-Nummern und treffen Sie dort eine Auswahl nach Eigentümer - Verzeichniselement Nomenklatur.
&OnClient
Prozedur Command1 (Befehl)
Parameter= neue Struktur;
Auswahl = neue Struktur;
Auswahl. Insert("Owner", LinkToNomenclature) ;
Parameter. Einfügen("Auswahl", Auswahl) ;
OpenForm( „Verzeichnis.GTD-Nummern.Listenformular“, Parameter) ;
EndProzedur
7. So öffnen Sie das Formular zur Eintragung in das Informationsregister
Dazu benötigen Sie den Auskunftsregister-Eintragsschlüssel.
Aufnahmeschlüssel— Dies sind die Werte aller Messungen und die Periode (wenn das Register periodisch ist). Das heißt, ein Datensatzschlüssel ist der Parameter, anhand dessen ein Datensatz eindeutig identifiziert werden kann.
Der Öffnungsalgorithmus ist wie folgt:
- Wir tragen die Datensatz-Schlüsseldaten mit den notwendigen Werten in die Struktur ein.
- Die resultierende Struktur platzieren wir in einem Array.
- Wir erstellen einen Datensatzschlüssel aus dem Array.
- Wir übergeben einen Parameter an das sich öffnende Formular Schlüssel mit dem Datensatzschlüssel aus Schritt 3 als Wert.
&OnClient
Prozedur Command1 (Befehl)
Parameter= neue Struktur;
KeyParameters= neue Struktur;
Schlüsselparameter. Insert("Nomenclature", LinkToNomenclature) ;
Schlüsselparameter. Insert("PriceType", LinkToPriceType) ;
Schlüsselparameter. Einfügen("Zeitraum", Datum) ;
KeyArray = Neues Array;
KeyArray. Add(KeyParameters) ;
EntryKey = Neu( „Information RegisterRecord Key.PricesNomenclature“, KeyArray) ;
Parameter. Insert("Key", RecordKey) ;
OpenForm( „Informationsregister. Preise der Nomenklatur. Aufzeichnungsformular“, Parameter) ;
EndProzedur
Wie öffne ich ein Formular eines vorhandenen Objekts?
Beim Öffnen eines Formulars eines vorhandenen Objekts müssen Sie neben dem Namen des Formulars auch das Objekt angeben, dessen Formular geöffnet werden soll. Hierzu nutzen Sie den Formularparameter Schlüssel und einen Link zu dem für uns interessanten Objekt.
Wenn Sie beispielsweise aus dem Formular „Liste der Organisationen“ das Formular der Organisation öffnen müssen, auf der sich der Cursor befindet, können Sie dies wie folgt tun:
Wir übergeben Formularparameter in Form einer Struktur, wobei der Name des Strukturelements dem Namen des Formularparameters entspricht und der Wert der Wert ist, auf den wir den Formularparameter setzen möchten.
Wenn Sie nicht das Hauptformular, sondern ein beliebiges Formular eines im Konfigurator erstellten Objekts öffnen möchten, geben Sie anstelle des Standardnamens des Hauptformulars (ObjectForm) das Wort Formular gefolgt von einem Punkt an – den Namen des Formulars, das in erstellt wurde Der Konfigurator.
Zum Beispiel:
ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = New Structure("Key", ReferenceToDirectoryElement); OpenForm("Directory.Organizations.Form.UniversalObjectForm",FormParameters);
Es ist zu beachten, dass Sie eine einfachere Methode verwenden können, wenn zusätzlich zu einem Link zu einem Objekt keine Parameter an das zu öffnende Formular übergeben werden müssen und das Hauptformular des vorhandenen Objekts benötigt wird - Öffnen Sie das Formular mit dem Verfahren OpenValue():
OpenValue(Items.List.CurrentRow);
Diese Methode ist weniger vielseitig, spart aber in manchen Fällen Zeit und Mühe. Im betrachteten Fall kann beispielsweise eine solche Zeile die gesamte dreizeilige Prozedur ersetzen, die wir zuvor geschrieben haben.
Bei der Anwendung dieses Verfahrens ist jedoch Vorsicht geboten. In einigen Fällen kann es zu zusätzlichen Aufrufen des Servers kommen, beispielsweise wenn Sie ein hierarchisches Verzeichniselementformular öffnen müssen. Bei diesem Verfahren ruft die Plattform zusätzlich den Server auf, um festzustellen, ob es sich bei einem Element um eine Gruppe handelt oder nicht, da für das Element und für die Gruppe unterschiedliche Formulare geöffnet werden müssen.
Gleichzeitig können diese Informationen dem Entwickler innerhalb seines Algorithmus im Voraus bekannt sein, und mit der Funktion OpenForm() kann der Entwickler das gewünschte Formular ohne zusätzliche Aufrufe an den Server öffnen und dabei sofort den Standardnamen des Hauptformulars angeben bilden.
![mob_info](https://mapstr.ru/wp-content/themes/kuzov/pic/mob_info.png)