Automatische Ersetzung von Daten aus einem 1C-Dokument. So legen Sie die Hauptorganisation für die Vertretung in Dokumenten fest. Daten in die Datenbank eingeben

/
Buchhaltung für die Ukraine /
Arbeiten mit Dokumenten, Nachschlagewerken und Berichten

So legen Sie die Hauptorganisation für die Vertretung in Dokumenten fest

In diesem Abschnitt wird beschrieben, wie Sie eine primäre Organisation für die automatische Ersetzung in neuen Dokumenten einrichten.

Installation aus dem Verzeichnis

Im Verzeichnis der Organisationen (Menü „Unternehmen“ – „Organisationen“) ist die Hauptorganisation fett hervorgehoben. Dies bedeutet, dass beim Erstellen neuer Dokumente diese automatisch eingefügt werden.

Um eine andere Organisation zur Hauptorganisation zu machen, müssen Sie diese Organisation in der Liste auswählen und auf die Schaltfläche klicken Haupt einstellen im Befehlsfeld.

Connect Code Preoix Name l w 00000001 to Dobro 000000001 DB Do5ro5ut 00000006 DU Do st eka and installation 00000005 NF National S0000001 nsho Our organization" width="757" height="216" border="0">

NOTIZ
Die primäre Organisation wird in den Benutzereinstellungen gespeichert. Für jeden Benutzer wird die Hauptorganisation individuell angegeben.

Auswahl der Dokumente nach Hauptorganisation

In den Benutzereinstellungen (Menü „Service“ – „Benutzereinstellungen“) können Sie den Modus zur automatischen Auswahl von Dokumenten für die Hauptorganisation einstellen. Das bedeutet, dass in allen Zeitschriften und Dokumentenlisten nur Dokumente der primären Organisation angezeigt werden.

Die Auswahl der Dokumente in Journalen wird über das Flag gesteuert Buchhaltung für alle Organisationen. Nach der Installation werden in den Journalen Dokumente für alle Organisationen angezeigt. Wenn das Kennzeichen deaktiviert ist, werden in den Journalen nur Dokumente für die Hauptorganisation angezeigt.

Bei Bedarf kann die Hauptorganisation direkt in den Benutzereinstellungen in der Gruppe „Grundwerte für die Vertretung in Dokumenten und Verzeichnissen“ geändert werden.

Frage: Code in Feld 1c ersetzen


Hallo, sagen Sie mir bitte, in welches Feld ich ein Verfahren einfügen muss, das die Anzahl der Tage zwischen Datumsangaben zählt. Ich habe das Verfahren selbst gefunden, aber die Antwort auf diese Frage lautet Nein

Es gibt Felder – Check-in-Datum, Check-out-Datum und ein Mengenfeld, in dem die Differenz zwischen den ersten beiden Werten liegen soll
Zu welchem ​​Ereignis sollten Sie das Verfahren hinzufügen?

Antwort: Im „OnChange“-Ereignis des Feldes „Abreisedatum“:

Frage: Die automatische Datenersetzung funktioniert nicht

Antwort:

Vielen Dank an alle für eure Antworten:
1) 1C:Enterprise 8.3 (8.3.4.437), Buchhaltung für die Ukraine: Version 2.0.4.3.
2) Insbesondere für nsk1C: „Sie haben immer die Angewohnheit, dort zu suchen, wo Sie nicht müssen, in meiner Frage gibt es kein einziges Wort zum Grundsatz der Mehrwertsteuer – das ist erstens, zweitens, lesen Sie das Dekret zum Verbot von 1C-Produkten in der Ukraine sorgfältig durch, und.“ dann schreib doch mal deine Gedanken auf..“

Vielen Dank für Ihre Antwort, aber ich würde gerne genauer wissen, wo im Code dies festgelegt ist.

Frage: Eingabefeld und Enter am Ende


Verwaltete Formulare, Arbeiten in einem Webclient.
Situation: Den Scanner auf F7 + Barcode + Enter programmiert. Ich habe viele Optionen ausprobiert, aber der Code kann nicht über „ShowValueInput“ gelesen werden. Ich habe diese Option aufgegeben.
2. Ein Formular mit einem Eingabefeld erstellt. Mit F7 öffnet sich das Formular, der Code erscheint im Eingabefeld, geben Sie ein und drücken Sie ihn dann auch (im Textdokumentfeld überprüft). Ich versuche, das Ereignis „Ende der Texteingabe“ abzufangen, aber es funktioniert nicht, weil ... Es funktioniert, wenn Sie die Eingabetaste auf der Tastatur drücken. Das AutoFit-Event ist für mich nicht die beste Option, weil... Der Barcode kann manuell eingegeben werden und dann muss ich mir eine Art Krücke einfallen lassen, um die kleine Verzögerung zwischen den Klicks zu umgehen.
Sagen Sie mir bitte, gibt es einfachere Möglichkeiten?

Antwort:() Das Formular öffnet sich, der Code wird übermittelt – Ereignisse werden nicht verarbeitet

Frage: ACS-Bericht und Tabellenfeld


Ich erstelle einen Bericht mit ACS. Wie kann ich das Ergebnis in einem Tabellenfeld anzeigen? Nicht in einem Feld in einem Tabellenkalkulationsdokument, sondern in einem Tabellenfeld.

Antwort: Ein Tabellendokumentfeld ist ein Formularelement (in dem Daten angezeigt werden), das zum Tabellendokumentattribut (Formular) gehört.
Sie schreiben einen Wert in ein Tabellenkalkulationsdokument und das Tabellendokumentfeld zeigt diesen Wert für Sie an.
Wie kann ich dort den Wert schreiben?

Frage: Die Fokussierung auf das Feld funktioniert seltsamerweise


Selbstgeschriebene Konfiguration auf 1C (8.3.8.2088), verwaltete Formulare, Taxi-Schnittstelle.

Ich hänge das OnChange-Ereignis mit dem folgenden Code an das Feld an:

1C
1 2 3 4 StandardProcessing = False ; SelectionData = NewValueList; Auswahldaten. Add(Object.Number) ;

Ich habe am Ende der Texteingabe einen Code eingefügt

Alles funktioniert, aber irgendwie ist es schief.

Das Element wird fokussiert, aber irgendwie nur zur Hälfte, wie im Bild zu sehen ist:

Es wurde nach dem Code:

Das heißt, der gelbe Rahmen und das Felddesign sind verschwunden. Es funktioniert, aber es ist nicht schön, es fällt ins Auge.

Antwort: Kurz gesagt, wenn sich die Zahl ändert, erscheint ein Beschriftungsformular, in das die Person den Grund für die Änderung einträgt. Wenn die Person das Formular einfach schließt, wird der alte Wert zurückgegeben und der Fokus bleibt auf dem Feld. Gibt es noch andere Ideen, wie man das am besten macht?

Frage: Formulartabellenfeld


Guten Tag.
Es gibt ein Standard-Artikelauswahlformular (ut11), in dem nicht der Name, sondern nur die Artikelnummer angezeigt wird!

Ich habe versucht, die Standardformulareinstellungen wiederherzustellen – ohne Erfolg, das Feld/die Spalte wird nicht angezeigt.

Konfigurator:

Auf den Feldern herrscht Lärm. Die Liste ist auf „Immer verwenden“ eingestellt.
Sogar das Debuggen von OnFormCreate() und OnOpen() zeigt das

Elements.ListAdvancedSearchNomenclature.SubordinateElements

verfügbar, alles ist im Sichtbarkeits- und Zugänglichkeitsmodus, es gibt keine funktionalen Optionen!

Ich habe versucht, mein eigenes Feld mit demselben Pfad zu den Daten hinzuzufügen – es wird auch nicht angezeigt!
Eine Stunde ist vergangen, aber das Feld wird nicht angezeigt. Bitte helfen Sie

Antwort:

dann oh! Ich habe es gerade geschafft, das Namensfeld in eine andere Gruppe zu ziehen, aber es wurde nicht sichtbar.
und auf dem ersten Knopf war es noch nicht wiederhergestellt, ich war mir sicher, dass es dir helfen würde.

Frage: Wie kann ich bei der Auswahl eines Verzeichniselements den Code anstelle des Namens anzeigen?


Es gibt eine Registerkarte. Teil enthält es ein Feld vom Typ Verzeichnislink. Wie kann ich bei der Auswahl eines Elements in diesem Feld den Attributcode anstelle des Namens anzeigen? (verwaltete Formulare)

Antwort: Tklwegsd,))) Ja, genau das ist die Frage

Nachricht von Polax

Können Sie das Feld „Code“ nicht einfach zur Tabelle hinzufügen?

Frage: Auswahlfeld Auswahl im SKD-Bericht


Hallo Leute, ich habe eine Frage. Ich möchte das Auswahlauswahlfeld im Bericht anzeigen, aber etwas hält mich davon ab. Ich brauche Ihren Rat ...

Für das Feld haben die Gegenparteien den folgenden Code eingegeben, es wird eine interne Auswahl getroffen, aber wie kann man die Vergleichsansicht für das Feld auf der linken Seite anzeigen und mit Benutzern verknüpfen?

1C
1 2 3 4 5 6 7 8 9 10 11 Prozedur UsersOnChange(Element) Exportparameter = ComposerSettings. Einstellungen. Datenparameter. Finden Sie ParameterValue(NewDataCompositionParameter("Users") ); Parameter. Wert = Benutzer; Parameter. Verwendung = True ; Auswahlelement = Settings Composer. Einstellungen. Auswahl. Elemente. Hinzufügen(Typ( „Auswahlelement für die Datenzusammensetzung“) ); Auswahlelement. CompareView = DataCompositionComparisonView. Gleich; Auswahlelement. LeftValue = NewDataCompositionField( „Verantwortlich für ResponsiveRequest“); Auswahlelement. RightValue = Benutzer; Ende des Verfahrens

Antwort: Dethmont, entferne ich den Code, da ist nur noch das Zutrittskontrollsystem und das Auswahlfeld auf dem Formular – ein leerer Bericht...

Hinzugefügt nach 1 Stunde 50 Minuten
Dethmont Ich habe herausgefunden, warum es bei der Auswahl eines Zutrittskontrollsystems einen leeren Bericht gab, es gab eine Bedingung in der Zfür Benutzer – ich habe ihn gelöscht und alles hat funktioniert. Danke für die Tipps)

Frage: Ist es möglich, die Zusammensetzung von Feldern in einer dynamischen Liste ohne Code zu ändern?


Guten Tag allerseits. Ich habe ein sauberes Formular, darauf befindet sich eine dynamische Liste mit einer benutzerdefinierten Abfrage, in der es eine Tabelle (ein Verzeichnis, auch die Haupt-DS-Tabelle), ein Link-Feld und Merkmale gibt.

Felder mit Merkmalen können sofort zur Selektion, Sortierung, Gestaltung und zur Gruppierung verwendet werden. Alles arbeitet. Es ist jedoch nicht möglich, es einfach als zusätzliches Feld auszuwählen (so dass es neben dem Link in einer separaten Spalte erscheint). Es ist klar, dass dies alles irgendwie mit Hilfe von Code geschieht, aber ohne Code geht das wirklich nicht?
Viele benutzerdefinierte Datenlayoutelemente, die im Formular platziert werden können, aber es gibt keine Möglichkeit, einfach ein Feld hinzuzufügen? Oder mache ich etwas falsch?

Antwort: Im Allgemeinen konnte ich die Spalten nicht hinzufügen (ohne Code), unabhängig davon, wie ich sie im Datenkompositor bearbeitet habe. Dies ist höchstwahrscheinlich unmöglich, da nicht das ds-Formularattribut für die Spalten verantwortlich ist, sondern das Formularelement, das logisch ist. Der Linker steuert die Daten – das Formularelement – ​​die Anzeige (einschließlich Spalten).
Das heißt, ohne die untergeordneten Elemente des Formularelements programmgesteuert zu vergrößern, können Sie sie nicht ändern.
Danke an alle.

Frage: Eingabe basierend auf dem Nachrichtenfeld in PM ist nicht ausgefüllt


Kollegen helfen. Keine typische Eingabe basierend auf dem Dokument in ZUP 2.5, Nachricht – das Feld in der PM ist nicht ausgefüllt, obwohl es ausgefüllt ist – Typ Datum. Code in der Füllverarbeitung.
Wenn Sie die Daten über das Formular eingeben, wird Folgendes ausgeführt:

Antwort: OMG, er hat bei einem anderen Feld geflucht – es ist nur so, dass diese Spalte ausgeblendet war.) Wenn sie in der Benutzeroberfläche ausgefüllt wird, wird sie aus dem Feld „Startdatum“ kopiert

Unsere Aufgabe ist folgende. Wir speichern jetzt den Preis eines Artikels in einem separaten Informationsregister. Wenn wir ein Dienstleistungsdokument erstellen oder ändern und einen beliebigen Artikel zum tabellarischen Teil hinzufügen, möchten wir, dass der aktuelle Preis dieses Artikels, der aus dem Informationsregister stammt und dem Datum des Dokuments entspricht, sofort in das Dokument eingefügt wird.

Dazu müssen wir zwei Dinge tun.

Schreiben Sie zunächst eine bestimmte Funktion, die den aktuellen Preis des Artikels zurückgibt, und rufen Sie dann diese Funktion in dem Moment auf, in dem der Artikel dem Dokument hinzugefügt wird, und ersetzen Sie den Preis des Artikels, den diese Funktion in das Dokument zurückgibt.

Da wir einen solchen „Dienst“ höchstwahrscheinlich nicht nur in diesem Dokument, sondern auch in anderen Dokumenten benötigen, die Nomenklatur im tabellarischen Teil enthalten, werden wir die Funktion an einer „öffentlich zugänglichen“ Stelle platzieren – in einem gemeinsamen Modul.

Im Konfiguratormodus

Funktion, die den Preis eines Artikels zurückgibt

Zuerst erstellen wir die Funktion RetailPrice(), die uns den aktuellen Verkaufspreis des Artikels zurückgibt, und platzieren ihn im allgemeinen Konfigurationsmodul.

Öffnen wir den Konfigurator im Zweig „Allgemeine allgemeine Module“, fügen wir ein neues Konfigurationsobjekt „Module“ hinzu und nennen es „WorkWithDirectories“.

Wir sehen, dass für das Modul standardmäßig das Kontrollkästchen „Server“ aktiviert ist. Dies bedeutet, dass Instanzen dieses Moduls nur serverseitig kompiliert werden.

Aktivieren wir das Kontrollkästchen Server aufrufen, damit Exportprozeduren und Funktionen dieses Moduls vom Client aufgerufen werden können (Abb. 9.9).

Platzieren wir den folgenden Text darin (Listing 9.1).

Lassen Sie uns diese Funktion erklären.

Um den Verkaufspreis zu ermitteln, übergeben wir der Funktion zwei Parameter:

CurrentDate ist ein Parameter vom Typ „Datum“, der den Punkt auf der Zeitachse definiert, an dem wir am Einzelhandelspreiswert interessiert sind.

Im Hauptteil der Funktion erstellen wir zunächst ein Auswahlhilfsobjekt.

Dies ist eine Struktur, die eine Auswahl nach Registerdimensionen enthält. Mit seiner Hilfe stellen wir fest, dass wir an Registereinträgen interessiert sind, bei denen die Dimension des Nomenklaturregisters gleich der Referenz auf das an die Funktion übergebene Verzeichniselement ist.

Der Name des Strukturschlüssels („Nomenklatur“) muss mit dem Namen der im Konfigurator angegebenen Registerdimension übereinstimmen und der Wert des Strukturelements (Nomenklaturelement) gibt den für diese Dimension gewählten Wert an.

In der zweiten Zeile kontaktieren wir den Manager des Preisinformationsregisters (Information Registers.Prices) und führen die Methode GetLast() aus, die uns die Ressourcenwerte des neuesten Registereintrags zurückgibt, der dem an die Funktion übergebenen Datum entspricht ( CurrentDate) und die Werte der Registerdimensionen (Selection).

Die GetLast-Methode gibt eine Struktur mit Ressourcenwerten zurück, die in der Variable ResourceValues ​​​​gespeichert ist. Im Allgemeinen kann ein Register mehrere Ressourcen haben. Es gibt nur eine Ressource in unserem Register, aber eine Struktur, die ein einzelnes Element enthält, wird trotzdem zurückgegeben.

Daher erhalten wir in der nächsten Zeile den gesuchten Verkaufspreis, indem wir einfach den Namen der benötigten Registerressource durch einen Punkt angeben (ResourceValues.Price) und ihn zurückgeben, wenn die Funktion ausgeführt wird.

Jetzt muss diese Funktion irgendwann in der Ausführung des Dokuments aufgerufen werden.

Aufrufen einer Funktion beim Auswählen eines Artikels und Ausfüllen des Preises im Dokument

Die Aufgabe, vor der wir stehen, ist also die Folgende. Beim Bearbeiten des Servicebereitstellungsdokuments müssen wir sicherstellen, dass das Feld „Preis“ automatisch ausgefüllt wird, nachdem der Benutzer einen Service auswählt. Darüber hinaus sollte der Preis der Dienstleistung anhand des Erstellungsdatums des Dokuments ermittelt werden.


Suchen wir im Konfigurator nach dem Dokument „Service Provision“ und öffnen wir dessen Formular „Dokumentformular“.

Doppelklicken Sie auf das Formularelement List of ItemsNomenclature oder öffnen Sie per Rechtsklick die Eigenschaftenpalette dafür (Kontextmenüpunkt Eigenschaften). Wenn wir zum Ende der Liste scrollen, finden wir das OnChange-Ereignis, das auftritt, nachdem sich ein Feldwert geändert hat.

Klicken Sie im Eingabefeld auf den Öffnen-Button B mit dem Lupensymbol.

Das System erstellt eine Vorlage für die Handlerprozedur für dieses Ereignis in unserem Formularmodul und öffnet die Registerkarte „Formulareditor-Modul“.

Fügen wir den folgenden Text hinzu (Listing 9.2).

Lassen Sie uns den Inhalt des Handlers kommentieren.

Die erste Zeile des Handlers kennen Sie bereits aus den Prozeduren Artikelmenge bei Änderung und Artikelpreis bei Änderung. Zuerst holen wir uns die aktuelle Zeile des tabellarischen Teils des Dokuments, da wir sie später benötigen, und speichern sie in der Variablen TabularPart Row.

Dann rufen wir unsere RetailPrice()-Funktion aus dem allgemeinen Modul Arbeiten mit Verzeichnissen auf.

Als ersten Parameter übergeben wir dieser Funktion das Datum des Dokuments, für das wir den Preis ermitteln möchten. Wir erhalten das Dokumentdatum aus dem Hauptformularattribut – Object.Date.



Die Funktion gibt den letzten Preiswert zurück und wir weisen diesen Wert dem Feld „Preis“ in der aktuellen Zeile des tabellarischen Teils des Dokuments (TabularPartRow.Price) zu.

Beachten Sie, dass die Prozedur „Item List NomenclatureOnChange()“ selbst im Formularmodul auf der Clientseite zu arbeiten beginnt, da es sich um einen Handler für das interaktive Ereignis des Formulars handelt. Beim Erstellen einer Vorlage für diese Prozedur platzierte die Plattform automatisch die Kompilierungsanweisung &OnClient vor der Beschreibung der Prozedur.

Anschließend wird die Funktion RetailPrice() aufgerufen. Da diese Funktion auf der Client-Seite nicht zu finden ist, wird die Ausführung auf das gemeinsame Modul „Arbeiten mit Verzeichnissen“ verlagert, das auf dem Server läuft. Nach Abschluss der Funktion wird der Programmcode weiterhin auf dem Client ausgeführt.

Warum wurde in diesem Fall ein solcher „Trick“ angewendet? Warum war es notwendig, die Codeausführung auf den Server zu übertragen?

Tatsache ist, dass jegliche Arbeit mit der Datenbank (Daten lesen, schreiben) nur auf dem Server möglich ist. In diesem Fall mussten wir für einen Artikel die neuesten Daten aus dem Informationsregister lesen.

Solche Aktionen können nur auf dem Server ausgeführt werden. Wenn Sie im Syntaxassistenten nach der Beschreibung der Methode GetLast() des Informationsregisters suchen, werden Sie feststellen, dass diese Methode nur auf dem Server, im Thick Client und verfügbar ist im externen Anschluss.

Der Thick-Client und die externe Verbindung sind Legacy-Plattform-Clientanwendungen, die aus Kompatibilitätsgründen mit Legacy-Anwendungslösungen vorhanden sind.

Wir entwickeln eine völlig neue Anwendungslösung, die in einem Thin Client oder einem Web Client funktioniert. Um Daten aus der Datenbank zu erhalten, müssen wir in unserem Fall daher die Codeausführung auf den Server übertragen, dort die erforderlichen Daten empfangen und diese Daten an den Client zurückgeben. Das haben wir getan.

Im 1C:Enterprise-Modus

Sehen wir uns nun an, wie unser Dokument funktioniert.

Starten wir 1C:Enterprise im Debug-Modus und öffnen Sie das Preisinformationsregister.

Für den Philips-Transistor fügen wir einen neuen Preis mit einer anderen Nummer hinzu (Abb. 9.10).

Öffnen wir nun das Dokument Servicebereitstellung Nr. 1. Wie Sie sich erinnern, haben wir mit diesem Dokument gerade einen solchen Transistor „verbraucht“.

Lassen wir das Datum des Dokuments unverändert und wiederholen die Auswahl des Transistors in der Spalte Nomenklatur des tabellarischen Teils des Dokuments. Der Transistorpreis wird automatisch auf den 01.07.2009 gesetzt. Dies ist der letzte Preiswert zum Belegdatum (Abb. 9.11).

Ändern wir nun das Datum des Dokuments auf den 13.07.2009 und wiederholen die Auswahl des Transistors noch einmal. Es wird ein neuer Preiswert festgelegt, spätestens für dieses Datum (Abb. 9.12).

Somit erscheint im Dokument der Preis der Leistung, der zum Zeitpunkt der Erstellung des Dokuments aktuell war.


Kontrollfragen

1. Was ist der Zweck des Informationsregister-Konfigurationsobjekts?

2. Welche Funktionen bietet das Konfigurationsobjekt „Informationsregister“?

3. Was sind die Hauptunterschiede zwischen dem Informationsregister und dem Akkumulationsregister?

4. Welche Felder bestimmen den Eindeutigkeitsschlüssel des Akkumulationsregisters?

5. Was ist ein periodisches Informationsregister und was ist ein unabhängiges Informationsregister?

6. So erstellen Sie ein periodisches Informationsregister.

7. Was ist die Leitdimension eines Registers?

8. So erhalten Sie die Ressourcenwerte der neuesten Registrierungseinträge mithilfe der integrierten Sprache.

Aufgabe 1. Erstellen einer Dropdown-Liste

1. Öffnen Sie die Datei Ex03_1.xlsx.

2. Auf einem Blatt Preis Es gibt eine Warentabelle mit Preisen.

3. Benennen Sie die Sortimente mit dem Produktnamen ( Produkt) und Preistabelle ( Tisch) (Bild 1). Bereichsnamen werden zur weiteren Verwendung in Formeln und zur Vereinfachung der Arbeit mit Bereichen angegeben. Der Bereichsname kann über das Feld „Zellenname“ festgelegt werden oder den Befehl im Kontextmenü auswählen Vergeben Sie einen Namen(Natürlich muss in dem einen oder anderen Fall zuvor ein Zellbereich ausgewählt werden, wie in Abbildung 1 dargestellt).

Bild 1

4. Auf dem Verkaufsblatt in der Spalte Produktname Erstellen Sie eine Dropdown-Liste und füllen Sie sie mit Daten.

Um eine Dropdown-Liste zu erstellen, müssen Sie die Zellen auswählen (Sie können mehrere gleichzeitig haben), in denen Sie eine Dropdown-Liste erhalten möchten, und auf der Registerkarte auswählen Daten Taste Datenprüfung (Figur 2).

Figur 2

Auf der ersten Registerkarte Optionen aus der Dropdown-Liste Datentyp Wähle eine Option Aufführen und in die Zeile eingeben Quelle= und der Name des Bereichs mit den erforderlichen Daten (d. h. =Produkt) (Figur 3). Klicken OK.

Das Ergebnis der Erstellung einer Dropdown-Liste ist in Abbildung 4 dargestellt.

Wenn sich die Wertemenge in der Quelle ändern kann, ist es besser, Daten in der Mitte der Liste einzufügen oder zu entfernen.

Figur 3

Figur 4

Einführung in die Funktionen MATCH und INDEX

Die Funktionen MATCH und INDEX werden hauptsächlich zum automatischen Ersetzen von Daten aus einem bestimmten Bereich in einer Tabelle verwendet.

Funktionssyntax

MATCH(lookup_value, array, match_type)

Array ist ein Block, der aus einer Spalte oder einer Zeile besteht.

Match_type ist die Zahl -1, 0 oder 1.

Wenn match_type gleich 1 ist, dann ist die Funktion SUCHEN findet den größten Wert, der kleiner ist als Lookup-Wert oder gleichwertig damit. Gesehen Array müssen in aufsteigender Reihenfolge bestellt werden.

Wenn match_type gleicht 0, Das MATCH-Funktion findet den ersten Wert, der genau dem Argument entspricht suchwert. Gesehen Array kann gestört sein.

Wenn match_type gleich -1 ist, dann ist die Funktion SUCHEN findet den kleinsten Wert, der größer ist als suchwert, oder gleichwertig damit. View_array müssen in absteigender Reihenfolge bestellt werden.

Wenn match_type weggelassen wird, wird davon ausgegangen, dass es gleich ist 1 .

Funktion SUCHEN gibt die Position des gesuchten Werts im Array zurück, nicht den Wert selbst.

Funktion INDEX hat zwei Formen. Wir werden nur eines betrachten.

INDEX(Tabelle; Zeilennummer; Spaltennummer)

Diese Funktion wählt aus einem rechteckigen Block (Tabelle) ein durch Zeilen- und Spaltennummern angegebenes Element aus, und diese Nummern werden ab dem oberen linken Element des Blocks gezählt.

Schauen wir uns anhand konkreter Beispiele an, wie diese Funktionen funktionieren.

Aufgabe 2. Einführung in die MATCH-Funktion

Bestimmen Sie mit der Funktion MATCH() die Position des Produkts mit dem Namen „Joghurt“ im Sortiment Produkt. Dafür:

1. in einem E-Book Ex03_1.xlsx gehe zum Blatt Preis und platzieren Sie den Blattcursor in einer beliebigen freien Zelle;

2. Geben Sie die Formel =MATCH("Yoghurt";Product;0) in diese Zelle ein, d.h. Mit dieser Funktion geben wir an, dass wir das Element „Joghurt“ (der Textwert in Funktionen wird immer in Anführungszeichen angegeben) im Bereich finden müssen Produkt, passender Typ 0 – genaue Übereinstimmung;

3. Drücken Sie die Eingabetaste. Als Ergebnis sollten Sie die Zahl 7 erhalten (Abbildung 5).

Abbildung 5

In der Tat, wenn man sich die Reichweite anschaut Produkt, dann entspricht die Position des Joghurts dieser Figur. Es ist zu beachten, dass die Position des Werts im Array, d. h. in einem bestimmten Bereich, gezählt vom Beginn des Bereichs. Es stellt sich heraus, dass, wenn wir am Anfang der Datentabelle eine neue Zeile hinzufügen, der Wert „Joghurt“ auf Zeilennummer 8 verschoben wird, aber der Bereich Produkt beginnt mit dem Wert „Milch“, daher entspricht die Position von Joghurt ab Beginn des Bereichs in jedem Fall der Zahl 7 (Abbildung 6).

Abbildung 6

Bitte beachten Sie, dass als Wert für die Funktion MATCH() entweder der Wert selbst oder der Name der Zelle angegeben werden kann, in der sich dieser Wert befindet. Beispielsweise liefert der Eintrag =MATCH(A7;Product;0) das gleiche Ergebnis wie die Verwendung des Eintrags =MATCH("Yogurt";Product;0).

Aufgabe 3. Einführung in die INDEX-Funktion

Erinnern wir uns daran, dass die Funktion INDEX() aus einem rechteckigen Block (Tabelle) ein durch die Zeilen- und Spaltennummern angegebenes Element auswählt und diese Zahlen ab dem oberen linken Element des Blocks gezählt werden.

Verwenden Sie die Funktion INDEX(), um in einem Bereich zu suchen Produkt Element an der fünften Position. Dafür:

1. in einem E-Book Ex03_1.xlsx auf einem Blatt Preis Platzieren Sie den Blattcursor in einer beliebigen freien Zelle.

2. Geben Sie in diese Zelle die folgende Funktion ein =INDEX(Produkt;5). Drücken Sie Enter. Das Ergebnis ist in Abbildung 7 dargestellt.

Abbildung 7

Beachten Sie, dass wir nur die Bereichswerte und die Zeilennummer für die INDEX-Funktion angegeben haben. Wir haben die Spaltennummer nicht angegeben. Dieser Parameter ist optional, wenn wir nach einem Wert in einer Tabelle (Bereich) suchen, die aus einer Spalte besteht. Wenn wir einen Wert in einer Tabelle (Bereich) finden müssen, die aus mehreren Spalten besteht, muss in der Formel für eine genauere Suche nach dem Wert die Spaltennummer angegeben werden.

Geben Sie in die neue Zelle die Formel =INDEX(Tabelle;8;2) ein. Als Ergebnis erhalten Sie die Kosten für Schinken (Abbildung 8).

Abbildung 8

Automatische Datenersetzung

Wenn Sie mit einer Dropdown-Liste arbeiten, können Sie die Dateneingabe in die Tabelle automatisieren. Beispielsweise gibt es eine Preisliste, die die Namen der Waren und deren Preise enthält. Sie können die Auswahl des Produktnamens aus der Liste und die automatische Ersetzung des Produktpreises in der Abschlusstabelle organisieren.

Die automatische Ersetzung von Daten aus einer Nachschlagetabelle basiert auf der kombinierten Verwendung der Funktionen INDEX und MATCH.

Aufgabe 4. Kombinieren der Funktionen MATCH und INDEX

Im E-Book Ex03_1.xlsx auf einem Blatt Verkäufe in einer Kolumne Preis, unter Verwendung von MS Excel-Funktionen, ermöglichen die automatische Ersetzung der Warenkosten aus dem Blatt Preis, abhängig vom Wert, der aus der Dropdown-Liste auf dem Blatt ausgewählt wurde Verkäufe.

1. Platzieren Sie den Arbeitsblattcursor in Zelle C2 und geben Sie die folgende Formel ein:

2. Drücken Sie die Eingabetaste. Als Ergebnis erhalten Sie in Zelle C2 den Preis des Produkts, dessen Name in der nebenstehenden Spalte angegeben ist (Abbildung 9). Wenn Sie einen anderen Produktnamen aus der Dropdown-Liste auswählen, ändert sich der Preiswert entsprechend.

Abbildung 9

3. Duplizieren Sie diese Formel mithilfe der Autovervollständigungsmarkierung an das Ende der Tabelle (Abbildung 10).

Abbildung 10

Lassen Sie uns diese Formel entschlüsseln. Diese Formel beginnt mit der MATCH-Funktion, die es uns ermöglicht, die Position des Werts aus Zelle B2 im Arbeitsblatt zu ermitteln Verkäufe im Sortiment Produkt aus Sicht Preis und Präzisionstyp 0. Wenn Sie beispielsweise die in Abbildung 10 dargestellte Produktliste verwenden, sucht die Suchfunktion nach der Position von Brot, dessen Name in Zelle B2 der Spalte angegeben ist Produktname im Sortiment Produkt auf einem Blatt Preis. Diese Position ist gleich 3. Daher ist die von uns eingegebene Formel im Computerspeicher

=INDEX(Tabelle, MATCH(B2, Produkt, 0), 2)

wird das Formular annehmen

=INDEX(Tabelle,3,2)

Parameter „3“ ist das Ergebnis der SEARCH-Funktion.

Als nächstes kommt die INDEX-Funktion ins Spiel, die im Bereich sucht Tisch auf einem Blatt Preis der Wert, der sich am Schnittpunkt der dritten Zeile und der zweiten Spalte befindet. (Bitte beachten Sie, dass der Bereich Tisch besteht aus zwei Spalten). Dieser Wert entspricht den Kosten des Produkts, in diesem Fall Brot = 27.

Aufgabe 5. Gestaltung des Abschlusstisches

Auf einem Blatt Verkäufe in einer Kolumne Menge Geben Sie beliebige Werte ein. Berechnen Sie die Werte in einer Spalte Gesamt.

Aufgabe 6. Unabhängige Aufgabe

Öffne die Datei Frames.xls . Es ist erforderlich, Gehaltsänderungen auf einem Blatt zu automatisieren Personal .

Beispielsweise ist es notwendig, einen Teil der Manager zu versetzen und leitende Manager oder Berater zu Verladern zu übertragen. Sie müssen diesen Vorgang für vier Mitarbeiter durchführen. Mit der Position sollte sich auch das Gehalt ändern.

Erstellen Sie ein neues Blatt und benennen Sie es Zustand .

Auf Blatt kopieren Zustand Säulen Berufsbezeichnung Und Gehalt.

Entfernen Sie doppelte Mitarbeiter. Dafür:

1. Wählen Sie die Spalten Position und Gehalt aus.

2. Auf der Registerkarte Daten drück den Knopf Duplikate entfernen .

3. Entfernen Sie das Häkchen aus der Spalte Gehalt.

4. Klicken Sie auf die Schaltfläche OK.

Um die Position auf dem Blatt ändern zu können Personal Erstellen Sie in der Positionsspalte eine Dropdown-Liste. In diesem Fall müssen Sie auch das offizielle Gehalt ändern. Dazu automatisieren wir diesen Prozess, sodass bei einem Positionswechsel Excel selbst das Gehalt ändert. Dazu nutzen wir die Funktionen: SEARCH und INDEX.

Richtlinien

1. Wählen Sie auf dem Blatt aus Zustand Auswahl an Positionen. Geben Sie dem ausgewählten Bereich einen Namen Berufsbezeichnung.

2. Wählen Sie auf dem Blatt aus Zustand Gehaltsspanne. Geben Sie dem ausgewählten Bereich einen Namen Gehalt.

3. Auf einem Blatt Mitarbeiter in der Spalte Gehalt Geben Sie die Formel ein, nach der auf dem Arbeitsblatt gesucht werden soll Zustand im Sortiment Berufsbezeichnung Position, die der Position des Mitarbeiters entspricht, und dann aus dem Bereich Gehalt Blatt Zustand ein der gefundenen Stelle entsprechendes Gehalt eingefügt.

4. Stellen Sie nach Eingabe der Formel sicher, dass das resultierende Gehalt tatsächlich dem Gehalt der Position des Mitarbeiters aus dem Blatt entspricht Zustand.

5. Ändern Sie das Gehalt von Ch. Buchhalter auf Blatt Zustand. Prüfen Sie, ob sich das entsprechende Gehalt auf dem Blatt geändert hat Mitarbeiter.

Lassen Sie uns das folgende Problem lösen. Es ist erforderlich, dass beim Erstellen oder Ändern eines Leistungserbringungsdokuments und beim Hinzufügen eines Leistungsspektrums zum tabellarischen Teil sofort der aktuelle, aus dem Informationsregister entnommene und dem Datum des Dokuments entsprechende Preis eingefügt wird.

Dazu benötigen Sie:

    Schreiben Sie eine RetailPrice-Funktion, die den aktuellen Preis zurückgibt.

    Rufen Sie die Funktion auf, wenn dem Dokument ein neues Element hinzugefügt wird.

Da eine solche Funktion möglicherweise in Zukunft benötigt wird, werden wir sie an einem „öffentlich zugänglichen“ Ort schreiben – in einem gemeinsamen Modul.

1. Erstellen Sie eine Funktion Endverbraucherpreis im Zweig „Allgemein“ – Allgemeine Module mit dem Namen Arbeiten mit Verzeichnissen. Flagge setzen Serveraufruf(damit Exportprozeduren und Funktionen dieses Moduls vom Client aus aufgerufen werden können) (Abb. 71a).

Reis. 71a. Allgemeine Moduleigenschaften

2. Platzieren Sie den folgenden Text im Modul.

Funktion RetailPrice(CurrentDate,ServiceNomenclatureElement)Export

//Erstelle eine Hilfsobjektauswahl

Selection = Neue Struktur("Service Nomenclature",Service Nomenclature Element);

//Aktuelle Registry-Ressourcenwerte abrufen

ResourceValues=InformationRegisters.Prices.GetLast(CurrentDate, Selection);

ReturnResourceValue.Price;

EndFunction

Lassen Sie uns die Funktion erklären.

Um den Verkaufspreis zu erhalten, müssen Sie der Funktion zwei Parameter übergeben:

    Aktuelles Datum– ein Parameter vom Typ Datum, der den Punkt auf der Zeitachse definiert, an dem wir am Wert des Einzelhandelspreises interessiert sind.

Diese Struktur enthält Auswahl nach Registermessungen. Mit seiner Hilfe wird die erforderliche Dimension des Nomenclature of Services-Registers ermittelt, die der Referenz auf das an die Funktion übergebene Verzeichniselement entspricht.

Strukturschlüsselname („H Nomenklatur der Dienstleistungen") muss mit dem Namen der im Konfigurator angegebenen Registerdimension und dem Wert des Strukturelements ( Element der Nomenklatur der Dienstleistungen) gibt den für diese Dimension ausgewählten Wert an.

Die zweite Zeile enthält einen Aufruf an den Informationsregistermanager Preise ( Informationsregister. Preise) und Methodenausführung RunLast(), die den Ressourcenwert des aktuellsten Registereintrags zurückgibt, der dem an die Funktion übergebenen Datum entspricht ( Aktuelles Datum) und Messwerte registrieren Auswahl.

Methode Bekomme das neuste gibt eine Struktur zurück, die Ressourcenwerte enthält, die in einer Variablen gespeichert werden Ressourcenwerte.

In der nächsten Zeile erhalten wir den erforderlichen Verkaufspreis, indem wir den Namen der gewünschten Registerressource durch einen Punkt getrennt angeben ( ValueResources.Price) und geben Sie es zurück, wenn die Funktion ausgeführt wird.

Das. Diese Funktion kann zu einem bestimmten Zeitpunkt aufgerufen werden.

Muss geöffnet werden Dokumentformular zur Ausführung von Dienstleistungen(es wurde früher erstellt). IN Formularmodul notwendig Vorgehensweise beim Ändern hinzufügen.

Doppelklicken Sie dazu auf das Formularelement Liste der Artikel und Leistungen (Abb. 71b).

Reis. 71b. Elemente des Serviceleistungsdokuments

Im Eigenschaftenfenster im Ereignis Wenn es sich ändert Erstellen Sie einen Event-Handler mit folgendem Text:

&OnClient

Vorgehensweise Liste der Nomenklaturen Service beim Ändern (Element)

//Die nächste Zeile des Tabellenabschnitts abrufen

TabularPart Row = Elements.List of Nomenclature.CurrentData;

//Preis festlegen

TabularPart Row.Price = Arbeiten mit Directories.RetailPrice(Object.Date, TabularPartLine.Service);

Ende des Verfahrens

Lassen Sie uns die Funktion erklären.

Die erste Zeile ist bereits bekannt: Zuerst erhalten wir die aktuelle Zeile des tabellarischen Teils des Dokuments, weil Wir werden es später brauchen und in einer Variablen speichern RowTabularPart.

Dann rufen wir die Funktion auf Endverbraucherpreis() aus einem gemeinsamen Modul Arbeiten mit Verzeichnissen.

Der erste Parameter an die Funktion ist die Übergabe des Datums des Dokuments, für das Sie den Preis ermitteln möchten. Das Dokumentdatum erhalten wir aus den Hauptdetails des Formulars - Objekt.Datum.

Die Funktion gibt den letzten Preiswert zurück und dieser Wert wird dem Feld Preis in der aktuellen Zeile des tabellarischen Teils des Dokuments zugewiesen ( RowTabularPart.Price).

Bitte beachten Sie, dass das Verfahren Liste der NomenklaturenServiceWhenChanged() beginnt im Formularmodul auf der Clientseite zu arbeiten, weil Dies ist der interaktive Ereignishandler des Formulars. Beim Erstellen einer Vorlage für diese Prozedur platziert die Plattform automatisch eine Kompilierungsanweisung vor der Prozedurbeschreibung &OnClient.

Dann rufen wir die Funktion auf Endverbraucherpreis(). Weil Wird diese Funktion auf der Client-Seite nicht gefunden, wird die Ausführung an das allgemeine Modul übergeben Arbeiten mit Verzeichnissen, das auf dem Server läuft. Nach Abschluss der Funktion wird der Programmcode weiterhin auf dem Client ausgeführt.

Sehen wir uns die oben genannten Schritte an und starten Sie die Anwendung im 1C: Enterprise-Modus. Lassen Sie uns mit der entwickelten Konfiguration arbeiten.

DATEN IN DIE DB EINGEBEN

1. Tragen Sie in den Antrag mindestens 8 Dokumente zur Leistungserbringung ein.

gastroguru 2017