Fügen Sie dem tabellarischen Teil des Dokuments 1s 8.3 eine Zeile hinzu. Hotkeys: allgemeine Aktionen

Für das vorherige Beispiel können Sie die folgenden Codezeilen hinzufügen:

Form Elements.TableField1.AddRow(); page = FormElements.TableField1.CurrentRow; p.First = 3; p.Second = "Mehl"; p.Menge = 350;

Wie ermittelt man die Anzahl der Zeilen in einer Wertetabelle in 1s 8?

countRows = table.Quantity(); Report("Anzahl der Zeilen in der Tabelle mit Tabellenwerten = " + Anzahl der Zeilen);

Ergebnis:

Anzahl der Zeilen in der Tabelle mit Tabellenwerten = 3

Wie lösche ich eine Zeile in einer Wertetabelle in 1s 8?

rowTable = Tabelle; table.Delete(rowTable);

Wie reduziere ich eine Wertetabelle in 1s 8?

Zusammenbruch:

table.Collapse("Second", "Quantity");

Nach der Faltung erhalten wir:

Wie sortiere ich eine Wertetabelle in 1s 8?

Sortieren Sie nach der zweiten und dritten Spalte:

table.Sort("Second, Quantity");

Wie positioniere ich ein Tabellenfeld in einer Zeile in 1c 8?

In der zweiten Zeile:

Formularelemente.TableField1.CurrentRow = Tabelle;

Druckbare Form in 1s 8

Zuerst erstellen wir ein Layout (Name des Bereichs: Wählen Sie die erforderlichen Zeilen des Layouts aus, geben Sie in den Eigenschaften im Feld Name den Namen des Bereichs ein) und zeigen Sie es dann in einem Tabellenkalkulationsdokument an:

Prozedur CommandPanel1Print(Button) Variable td, rs, rs1, Layout, Code, Name, Nomen; Code = 0; layout = GetLayout("Produkte"); header = layout.GetArea("Header"); header.Parameters.datta = CurrentDate(); pc = layout.GetArea("pc"); pc1 = layout.GetArea("pc1"); td = Neues tabellarisches Dokument; td.Output(cap); nomen = Verzeichnisse.Nomenklatur; Selection = nom.SelectHierarchically(); while fetch.Next() Schleifencode = Code + 1; Wenn sample.ThisGroup = True, dann pc1.Parameters.code = code; pc1.Parameters.name = Auswahl.Name; td.Output(rs1); sonst rs.Parameters.code = code; rs.Parameters.name = Auswahl.Name; td.Withdraw(rs); endIf; endCycle; etc.ViewOnly = True; td.Show("Verzeichnis ""Nomenklatur"""); Ende des Verfahrens

Zu den grundlegenden Fähigkeiten einer Programmiersprache gehört normalerweise die Arbeit mit Zahlen und Zeichenfolgen. Normalerweise sind diese Funktionen fest im Compiler-Code codiert (oder die „Basis“-Klassen der Programmiersprache werden implementiert).

In 1C ist die Fähigkeit, mit Strings zu arbeiten, in der Plattform selbst programmiert. Heute werden wir uns die Funktionen der Arbeit mit 1C-Strings in Programmen in der integrierten 1C-Sprache ansehen.

Linienwert 1C

1. Beginnen wir mit dem Einfachsten. Das Erstellen einer Variablen und das Zuweisen eines konstanten String-Werts sieht in 1C so aus:

Variable = „Hallo Welt!“;

Wenn Sie ein Anführungszeichen in einem konstanten 1C-String-Wert angeben müssen, müssen Sie es verdoppeln „“

Variable = "Hallo Welt"!;

2. Der Zeilenumbruch 1C kann auf zwei Arten gleichzeitig angegeben werden. Das erste ist die Verwendung des Symbols |

Variable = „Hallo,
| Welt! ";

Die zweite Möglichkeit besteht darin, die Systemaufzählung „Symbole“ zu verwenden. Sie können damit sowohl 1C-Zeilenumbrüche als auch andere nicht druckbare Zeichen wie TAB hinzufügen.

Variable = „Hallo“ + Symbols.PS + „Frieden!“;

3. Konfigurationen in 1C können nicht nur für eine Sprache (Russisch, Englisch oder eine andere) entwickelt werden, sondern gleichzeitig für mehrere Sprachen. In diesem Fall wird die aktuell verwendete Sprache unten im 1C-Fenster ausgewählt.

Die Liste der Sprachen befindet sich im Konfigurationsfenster im Zweig Allgemein/Sprachen. Jede Sprache hat eine kurze Kennung, z ru oder eng.

Es ist klar, dass 1C-Leitungen bei der Programmierung einer solchen Konfiguration auch mehrsprachig sein können. Zu diesem Zweck ist es möglich, eine solche 1C-Linie zu erstellen, indem Sie „through“ angeben. Optionen nach Sprachkennung:

Variable = "ru=""Hallo Welt! ""; en=""Hallo Welt! """;

Wenn Sie die so gebildete 1C-Zeile wie gewohnt verwenden, ist es das, was darin steht. Damit das System es in zwei Optionen aufteilt und die gewünschte verwendet, müssen Sie die Funktion НStr() verwenden:

//korrekt für zweisprachige Konfigurationen
Report(NStr(Variable));

Requisiten mit Linientyp 1C

Das Attribut ist ein Feld im 1C-Verzeichnis/Dokument. Sie unterscheidet sich von einer Variablen in einem Programm in der 1C-Sprache dadurch, dass für das Attribut ihr Typ genau angegeben ist (Zahl, 1C-String usw.). Wenn Sie Ihre Erinnerung daran auffrischen müssen, was eine Requisite ist, schauen Sie sich die Lektion an.

Wenn Sie den Attributtyp angeben - Zeile 1C, müssen Sie zusätzlich die Parameter angeben.

1C-Zeilen gibt es in unbegrenzter Länge (angezeigt als Länge = 0) und begrenzter Länge, die die genaue Anzahl der Zeichen angibt. 1C-Zeilen unbegrenzter Länge werden in einer separaten SQL-Tabelle gespeichert, sodass ihre Verwendung weniger produktiv ist als die begrenzter.

Deshalb hat die Verwendung von 1C-Strings unbegrenzter Länge ihre Grenzen – ihre Verwendung ist nicht überall möglich. Es ist beispielsweise nicht als Dokumentnummer, Referenzcode oder Maßeinheit zulässig.

Arbeiten mit 1C-Saiten

Es gibt mehrere integrierte Funktionen der 1C-Plattform für die Arbeit mit Strings.

  • AbbrLP („Unglaublich, aber wahr!“)
    Entfernt zusätzliche Leerzeichen aus der 1C-Zeile. Kann auch zum Konvertieren beliebiger Typen in eine 1C-Zeichenfolge (z. B. Zahlen) verwendet werden.
  • Variable = „Vasya“ + AbbrLP(“ plus“) + „Olya“; //es wird „Vasya plus Olya“ geben
    Ein Beispiel für die Summierung mehrerer 1C-Stringwerte. Das Ergebnis ist eine Zeile 1C.
  • Variable = Lev("Musik", 2); //wird „Mu“ sein
    Variable = Medium("Musik", 2, 2); //Es wird eine „Bedrohung“ geben
    Variable = Rights("Music", 2); //es wird „ka“ geben
    Verschiedene Möglichkeiten, einen Teilstring aus einem 1C-String zu erhalten.
  • Variable = Find("Music", "zy"); //es werden 3 sein
    Suchen Sie nach einer Teilzeichenfolge in Zeichenfolge 1C, beginnend mit Zeichen 1.
  • Variable = StrLength("Music"); //es werden 6 sein
    Gibt die Anzahl der Zeichen in der 1C-Zeile zurück.
  • Report("Hallo") //im Nachrichtenfenster am unteren Rand des 1C-Fensters
    Alert("Hallo") //Popup-Dialog
    Status("Hallo") //in der Statusanzeigezeile unten links
    .

Objekte zur Linie 1C bringen

Wie Sie wissen, ist XML derzeit das beliebteste Format für den Austausch strukturierter Informationen. Sogar die neuesten Versionen von MS Office Word und Excel speichern Dateien in diesem Format (docx bzw. xlsx, ändern Sie die Erweiterung in zip, öffnen Sie sie in einem Archivierungsprogramm).

Die 1C-Plattform für den Datenaustausch bietet mehrere Optionen, von denen die wichtigste auch XML ist.

1. Die einfachste Methode ist die Verwendung der Funktion Abbreviation() oder String(). Sie können die Funktion REPRESENTATION() im Anfragetext verwenden. Das Ergebnis ihrer Aktion ist dasselbe: Sie generieren eine Zeichenfolgendarstellung eines beliebigen 1C-Objekts für den Benutzer.

Bei einem Verzeichnis ist dies standardmäßig der Name. Für ein Dokument – ​​Dokumentname, Nummer und Datum.

2. Jedes 1C-Objekt (mit Einschränkungen) kann in XML konvertiert werden und umgekehrt. Der Konvertierungsprozess wird Serialisierung genannt.

StringViewXml = XMLString(Value); //XML vom 1C-Wert abrufen
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //den 1C-Wert aus der XML-Zeichenfolge abrufen, Sie müssen den 1C-Typ angeben, der empfangen werden soll

3. Es gibt eine eigene Möglichkeit der 1C-Plattform, jedes 1C-Objekt in einen String umzuwandeln. Es wurde von Version 1C 7.7 migriert. Dieses Format wird von anderen Programmen nicht verstanden, aber andere 1C-Programme verstehen es, was die Verwendung für den Austausch zwischen 1C-Datenbanken erleichtert.

Row = ValueInRowInt(Value1C); //String 1C aus Wert 1C abrufen
ValueVFile("C:\MyFile.txt", Value1C); //eine weitere Option, wir erhalten eine Datei mit einer gespeicherten Zeichenfolge aus dem 1C-Wert
Value1C = ValueFromStringInt(String); //zurück von Zeile 1C
Value1C = ValueFile("C:\MyFile.txt"); //zurück aus der Datei

Bearbeiten von 1C-Zeilen im Formular

Neben der Arbeit mit 1C-Strings in einem Programm in der 1C-Sprache möchte ich natürlich, dass der Benutzer diese bearbeiten kann. Hierfür gibt es mehrere Möglichkeiten:

1. Der einfachste Weg besteht darin, bei Bedarf die Eingabe einer 1C-Leitung anzufordern. Diese Methode wird beim Unterrichten der 1C-Programmierung verwendet; im Leben wird sie viel seltener verwendet (aber sie wird verwendet!).

Variable = "";
Row = EnterValue(Variable, „Geben Sie den vollständigen Namen ein“);

2. Um die Details eines 1C-Objekts (Verzeichnis/Dokument) oder Formulardetails (siehe) anzuzeigen, wird am häufigsten ein Eingabefeld verwendet. Dies ist das gebräuchlichste Tool in 1C, mit dem der Benutzer mit Bearbeitungsfeldern arbeiten kann.

3. Die Möglichkeiten des Eingabefeldes können erweitert werden (siehe Eigenschaften des Eingabefeldes, Rechtsklick darauf, weitere Details):

  • Kontrollkästchen Mehrzeiliger Bearbeitungsmodus
  • Kontrollkästchen „Erweiterte Bearbeitung“ (verfügbar, wenn das vorherige Kontrollkästchen aktiviert ist)
  • Kontrollkästchen Passwortmodus (siehe).

4. Wenn Ihnen alle Möglichkeiten des Eingabefelds nicht ausreichen, gibt es einen integrierten Editor. Um es dem Formular hinzuzufügen, müssen Sie ein Textdokumentfeld zum Menü „Formular/Einfügesteuerelement“ hinzufügen. In seinen Eigenschaften können Sie seinen Betriebsmodus festlegen – die Extension-Eigenschaft.

Ein Textdokumentfeld kann nicht direkt mit Daten verknüpft werden. Es ist notwendig, eine Funktion in den OnOpen()-Ereignishandler des Formulars zu schreiben (siehe):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //hier ist ValueString der Text, der beispielsweise vom Attribut empfangen wird

Und fügen Sie im Speicherhandler – zum Beispiel in der Schaltfläche „Speichern“ – eine Speicherung hinzu:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //WertDie Zeile hier ist das Attribut, in dem wir den Wert speichern

5. In 1C Version 8.2.11 ist in verwalteten Formularen eine neue Option zur Darstellung einer 1C-Zeile erschienen – das Feld „Formatiertes Dokument“.


Ähnlich wie das Feld eines Textdokuments müssen Sie es beim Öffnen festlegen und beim Speichern selbst mit dem Programm notieren.

  • Fügen Sie im 1C-Objekt, dessen Form wir erstellen (Verzeichnis, Dokument, Verarbeitung usw.), ein Attribut vom Typ „Wertspeicher“ hinzu
  • In der Funktion OnReadOnServer() setzen wir den Text aus dem Attribut

    //hier ist das Attribut das hinzugefügte Attribut des 1C-Objekts
    //hier ist FormattedDocument der Name des Felds im Formular zur Bearbeitung
    &Auf dem Server

    FormattedDocument = CurrentObject.Attributes.Get();
    Ende des Verfahrens

  • In der Funktion BeforeWritingOnServer() oder über die Schaltfläche schreiben wir den Text aus dem Feld

    &Auf dem Server
    Vorgehensweise beim ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Ende des Verfahrens

Für viele Objekte in 1C gibt es tabellarische Teile:

  • Verzeichnisse
  • Dokumentation
  • Berichte und Bearbeitung
  • Kontenpläne
  • Charakteristische Typenpläne
  • Berechnungstyppläne
  • Geschäftsprozesse und Aufgaben

Mit tabellarischen Teilen können Sie eine unbegrenzte Menge strukturierter Informationen zu einem Objekt speichern.

Schauen wir uns einige Techniken zum Arbeiten mit tabellarischen Teilen an.

So umgehen Sie den tabellarischen Teil

Um den Tabellenteil zu durchlaufen, können Sie eine Schleife verwenden Für jede

Für jede Zeile aus dem tabellarischen Teil des Zyklus

Report(String. TabularPart-Attribut) ;

EndCycle ;

Bei jeder Iteration in die Variable Linie die nächste Zeile des tabellarischen Abschnitts wird übertragen. Die Werte der Zeilendetails können durch den Ausdruck ermittelt werden Line.AttributeName.

So erhalten und umgehen Sie ausgewählte Zeilen des tabellarischen Teils

Um Informationen aus dem tabellarischen Teil des Objekts anzuzeigen, verwenden Sie ein Formularelement Tabellenfeld. Um die Möglichkeit zu aktivieren, mehrere Zeilen in einem Tabellenfeld auszuwählen, müssen Sie den Wert festlegen Mehrere auf seinem Grundstück Auswahlmodus.

Um eine Liste der ausgewählten Zeilen zu erhalten, verwenden Sie den folgenden Code:

Eine Schleife wird verwendet, um die ausgewählten Zeilen zu durchlaufen. Für jede:

SelectedRows = FormElements. TableFieldName. Ausgewählte Zeilen;

Für jede Zeile aus der Schleife „Ausgewählte Zeilen“.

//Schleifeninhalt

EndCycle ;

So wählen Sie programmgesteuert Zeilen eines tabellarischen Teils (Tabellenfelds) aus und heben deren Auswahl auf

So heben Sie die Auswahl von Zeilen eines Tabellenfelds programmgesteuert auf:

Formularelemente. TableFieldName. Ausgewählte Zeilen. Klar() ;

So wählen Sie alle Zeilen eines Tabellenfelds programmgesteuert aus:

Für jede CurrentRow From TabularPart-Schleife
Formularelemente. TableFieldName. Ausgewählte Zeilen. Add(CurrentRow) ;
EndCycle ;

So löschen Sie den Tabellenteil

TabularPart. Klar() ;

So erhalten Sie die aktuelle Zeile eines Tabellenabschnitts

Die aktuelle Zeile ist die Zeitleiste, in der sich der Benutzer aktuell befindet. Um es zu erhalten, müssen Sie auf das Steuerelement im Formular zugreifen, das dem tabellarischen Teil zugeordnet ist.

Für reguläre Formen sieht der Code so aus:

Formularelemente. TableFieldName. Aktuelle Daten;

Für verwaltete Formulare:

Elemente. TableFieldName. Aktuelle Daten;

So fügen Sie einem Tabellenabschnitt eine neue Zeile hinzu

Hinzufügen einer neuen Zeile am Ende des Tabellenabschnitts:

NewRow = TablePart. Hinzufügen() ;

Hinzufügen einer neuen Zeile an einer beliebigen Stelle im Tabellenabschnitt (nachfolgende Zeilen werden verschoben):

NewRow = TablePart. Einfügen(Index)
//Index – Nummer der hinzugefügten Zeile. Die Zeilennummerierung beginnt bei Null.

Neue Zeile. Props1 = "Wert" ;

So geben Sie die Details einer Tabellenzeile programmgesteuert ein

Wenn Sie die Details einer Tabellenabschnittszeile, die vom Benutzer hinzugefügt wird, programmgesteuert ausfüllen müssen, müssen Sie den Tabellenabschnitts-Ereignishandler verwenden Beim Starten der Bearbeitung.

Die vom Handler erstellte Prozedur verfügt über drei Parameter:

  • Element- enthält ein Kontrollelement TabularField.
  • Neue Zeile- Boolescher Wert. Enthält Wert WAHR, wenn eine neue Tabellenzeile hinzugefügt wird, und Lüge, wenn der Benutzer mit der Bearbeitung einer bereits vorhandenen Zeile begonnen hat.
  • Kopieren- Boolescher Wert. Enthält Wert WAHR, wenn der Benutzer die Zeile kopiert, und Lüge in anderen Fällen.

Schauen wir uns ein Beispiel an. Nehmen wir an, wir müssen die Details des tabellarischen Abschnitts ausfüllen KontoKonto, falls eine neue Zeile hinzugefügt wird. Wenn Sie eine bestehende Zeile bearbeiten, müssen Sie das Buchhaltungskonto nicht ändern.

Prozedur TabularPartAtStartEditing(Element, NewRow, Copy)

//Wenn der Benutzer eine vorhandene Zeile bearbeitet, unternehmen wir nichts
Wenn NICHT NewRow, dann
Zurückkehren;
EndIf ;

//Wenn die Zeile neu ist, legen Sie das Buchhaltungskonto fest
TechString = Artikel. Aktuelle Daten; //Die aktuelle Zeile des tabellarischen Teils abrufen
TechString. Buchhaltung = Kontenpläne. Selbsttragend. Erforderliches Konto;
Ende des Verfahrens