Přidání řádku do tabulkové části dokumentu 1s 8.3. Klávesové zkratky: obecné akce

Pro předchozí příklad můžete přidat následující řádky kódu:

Form Elements.TableField1.AddRow(); page = FormElements.TableField1.CurrentRow; p.První = 3; p.Second = "Mouka"; p.Množství = 350;

Jak určit počet řádků v tabulce hodnot za 1s 8?

countRows = tabulka.Mnozstvi(); Report("Počet řádků v tabulce hodnot tabulky = " + počet řádků);

Výsledek:

Počet řádků v tabulce hodnot tabulky = 3

Jak odstranit řádek v tabulce hodnot za 1 s 8?

rowTable = tabulka; table.Delete(rowTable);

Jak sbalit tabulku hodnot v 1s 8?

Kolaps:

table.Collapse("Druhá", "Množství");

Po konvoluci dostaneme:

Jak seřadit tabulku hodnot v 1s 8?

Seřadit podle druhého a třetího sloupce:

tabulka.Sort("Druhá, Množství");

Jak umístit pole tabulky na řádek v 1c 8?

Na druhém řádku:

Form Elements.TableField1.CurrentRow = tabulka;

Tisknutelná forma za 1 s 8

Nejprve vytvoříme rozvržení (název oblasti: vyberte požadované řádky rozvržení, ve vlastnostech do pole Název zadejte název oblasti) a poté jej zobrazíme v tabulkovém dokumentu:

Proměnná CommandPanel1Print(Button) td, rs, rs1, rozložení, kód, název, jmen; kód = 0; layout = GetLayout("Produkty"); header = layout.GetArea("Header"); header.Parameters.datta = CurrentDate(); pc = layout.GetArea("pc"); pc1 = layout.GetArea("pc1"); td = New TabularDocument; td.Output(cap); nomen = Adresáře.Nomenklatura; výběr = nom.VybratHierarchicky(); while fetch.Next() kód smyčky = kód + 1; if sample.ThisGroup = True then pc1.Parameters.code = code; pc1.Parameters.name = selection.Name; td.Output(rs1); else rs.Parameters.code = kód; rs.Parameters.name = selection.Name; td.Withdraw(rs); endIf; endCycle; atd.ViewOnly = True; td.Show("Adresář ""Nomenklatura"""); Konec procedury

Mezi základní schopnosti programovacího jazyka obvykle patří práce s čísly a řetězci. Obvykle jsou tyto funkce pevně zakódovány do kódu kompilátoru (nebo jsou implementovány „základní“ třídy programovacího jazyka).

V 1C je schopnost práce s řetězci naprogramována v samotné platformě. Dnes se podíváme na funkce práce s řetězci 1C v programech ve vestavěném jazyce 1C.

Hodnota řádku 1C

1. Začneme tím nejjednodušším. Vytvoření proměnné a přiřazení konstantní hodnoty řetězce vypadá takto v 1C:

Proměnná = "Ahoj světe!";

Pokud potřebujete zadat znak citace v konstantní hodnotě řetězce 1C, musíte jej zdvojnásobit „“

Proměnná = "Ahoj světe"!;

2. Zalomení řádku 1C lze zadat dvěma způsoby najednou. První je použití symbolu |

Proměnná = "Dobrý den,
| svět! ";

Druhým je použití systémového výčtu Symbols. Umožňuje přidat zalomení řádků 1C a další netisknutelné znaky, jako je TAB.

Proměnná = "Ahoj" + Symboly.PS + "mír!";

3. Konfigurace v 1C lze vyvíjet nejen pro jeden jazyk (ruštinu, angličtinu nebo jiný) - ale současně pro několik jazyků. V tomto případě je aktuálně používaný jazyk vybrán ve spodní části okna 1C.

Seznam jazyků se nachází v konfiguračním okně ve větvi Obecné/Jazyky. Každý jazyk má krátký identifikátor jako např ru nebo Ing.

Je jasné, že při programování takové konfigurace mohou být 1C linky i vícejazyčné. K tomu je možné vytvořit takový 1C řádek zadáním skrz; možnosti podle identifikátoru jazyka:

Proměnná = "ru=""Ahoj světe! ""; en=""Ahoj světe! """;

Pokud použijete takto vytvořenou čáru 1C jako obvykle, bude to, co je v ní napsáno. Aby jej systém rozdělil na dvě možnosti a použil požadovanou, musíte použít funkci НStr():

//správné pro dvojjazyčné konfigurace
Report(NStr(Proměnná));

Rekvizity s vedením typu 1C

Atribut je pole v adresáři/dokumentu 1C. Od proměnné v programu v jazyce 1C se liší tím, že u atributu je přesně uveden její typ (číslo, řetězec 1C atd.). Pokud si potřebujete osvěžit paměť, co je to rekvizita, podívejte se na lekci.

Pokud zadáte typ atributu - řádek 1C, musíte dodatečně zadat parametry.

1C řádky mají neomezenou délku (označuje se jako délka = 0) a omezenou délku, udávající přesný počet znaků. 1C řádky neomezené délky jsou uloženy v samostatné SQL tabulce, takže jejich použití je méně produktivní než omezené.

Proto má použití 1C strun neomezené délky svá omezení – není možné je použít všude. Není například povoleno jako číslo dokumentu, referenční kód nebo měření.

Práce se strunami 1C

Platforma 1C má několik vestavěných funkcí pro práci se strunami.

  • AbbrLP („Neuvěřitelné, ale pravdivé!“)
    Odstraní nadbytečné mezery z řádku 1C. Lze také použít k převodu libovolných typů na řetězec 1C (například čísla).
  • Proměnná = "Vasya" + AbbrLP(" plus") + "Olya"; //bude "Vasya plus Olya"
    Příklad sečtení několika hodnot řetězce 1C. Výsledkem bude jeden řádek 1C.
  • Proměnná = Lev("Hudba", 2); //bude "Mu"
    Proměnná = Medium("Hudba", 2, 2); //bude tam "hrozba"
    Proměnná = Rights("Hudba", 2); //bude "ka"
    Různé možnosti pro získání podřetězce z řetězce 1C.
  • Proměnná = Najít("Hudba", "zy"); //budou 3
    Vyhledejte podřetězec v řetězci 1C počínaje znakem 1.
  • Proměnná = StrLength("Hudba"); //bude 6
    Vrátí počet znaků na řádku 1C.
  • Report("Ahoj") //v okně zpráv v dolní části okna 1C
    Alert("Ahoj") //vyskakovací dialogové okno
    Status("Ahoj") //v řádku zobrazení stavu vlevo dole
    .

Přiveďte objekty na řádek 1C

Jak víte, v současnosti je nejpopulárnějším formátem pro výměnu strukturovaných informací XML. I nejnovější verze MS Office Word a Excel ukládají soubory v tomto formátu (docx, respektive xlsx změní příponu na zip, otevřete v archivátoru).

Platforma 1C pro výměnu dat poskytuje několik možností, z nichž hlavní je také XML.

1. Nejjednodušší metodou je použití funkce Abbreviation() nebo String(). V těle požadavku můžete použít funkci REPRESENTATION(). Výsledek jejich akce je stejný – vygenerují pro uživatele řetězcovou reprezentaci libovolného 1C objektu.

U adresáře to bude ve výchozím nastavení jeho název. U dokumentu – název dokumentu, číslo a datum.

2. Jakýkoli objekt 1C (s omezeními) lze převést do XML a naopak. Proces převodu se nazývá serializace.

StringViewXml = XMLString(Value); //získání XML z hodnoty 1C
Hodnota1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypStringXml); //získáte hodnotu 1C z řetězce XML, musíte zadat typ 1C, který má být přijat

3. Existuje vlastní způsob platformy 1C, jak převést jakýkoli objekt 1C na řetězec. To migrovalo z verze 1C 7.7. Tomuto formátu nerozumí jiné programy, ale ostatní 1C mu rozumí, což usnadňuje jeho použití pro výměnu mezi databázemi 1C.

Řádek = ValueInRowInt(Value1C); //získáme řetězec 1C z hodnoty 1C
ValueVFile("C:\MyFile.txt", Hodnota1C); //další možnost, z hodnoty 1C získáme soubor s uloženým řetězcem
Hodnota1C = ValueFromStringInt(String); //zpět z řádku 1C
Hodnota1C = ValueFile("C:\MyFile.txt"); //zpět ze souboru

Úprava 1C řádků na formuláři

Kromě práce s 1C řetězci v programu v jazyce 1C bych si samozřejmě přál, aby je uživatel mohl upravovat. K tomu existuje několik možností:

1. Nejjednodušší způsob je požádat o vstup linky 1C na vyžádání. Tato metoda se používá při výuce programování 1C, v životě se používá mnohem méně často (ale používá se!).

Proměnná = "";
Řádek = EnterValue(Proměnná, "Zadejte celé jméno");

2. Pro zobrazení detailů objektu 1C (adresář/dokument) nebo detailů formuláře (viz) se nejčastěji používá vstupní pole. Toto je nejběžnější nástroj v 1C pro uživatele pro práci s editačními poli.

3. Možnosti vstupního pole lze rozšířit (viz vlastnosti vstupního pole, klikněte na něj pravým tlačítkem, více podrobností):

  • Zaškrtávací políčko Režim víceřádkových úprav
  • Zaškrtávací políčko Pokročilé úpravy (dostupné, pokud je zaškrtnuté předchozí políčko)
  • Zaškrtávací políčko Režim hesla (viz).

4. Pokud by vám nestačily všechny možnosti vstupního pole, je zde vestavěný editor. Chcete-li jej přidat do formuláře, musíte přidat pole textového dokumentu do nabídky Ovládací prvek formuláře/vložit. V jeho vlastnostech můžete určit jeho provozní režim – vlastnost Extension.

Pole textového dokumentu nelze přímo přiřadit k datům. Je nutné napsat funkci do obsluhy události OnOpen() formuláře (viz):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //zde ValueString je text přijatý například z atributu

A v obslužné rutině ukládání - například v tlačítku Uložit - přidejte uložení:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueŘádek zde je atribut, kam uložíme hodnotu

5. Ve verzi 1C 8.2.11 se ve spravovaných formulářích objevila nová možnost pro reprezentaci řádku 1C - pole Formátovaný dokument.


Podobně jako pole textového dokumentu si jej musíte nastavit při jeho otevření a zapsat si jej při ukládání sami pomocí programu.

  • V objektu 1C, jehož formulář vytváříme (adresář, dokument, zpracování atd.) - přidejte atribut s typem Value Storage
  • Ve funkci OnReadOnServer() nastavíme text z atributu

    //zde Atribut je přidaný atribut objektu 1C
    //zde FormattedDocument je název pole ve formuláři pro úpravy
    &Na serveru

    FormattedDocument = CurrentObject.Attributes.Get();
    Konec procedury

  • Ve funkci BeforeWritingOnServer() nebo pomocí tlačítka napíšeme text z pole

    &Na serveru
    Postup při ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Konec procedury

Tabulkové části existují pro mnoho objektů v 1C:

  • Adresáře
  • Dokumentace
  • Reporty a zpracování
  • Účtové osnovy
  • Charakteristické typové plány
  • Plány typu kalkulace
  • Obchodní procesy a úkoly

Tabulkové části umožňují ukládat neomezené množství strukturovaných informací patřících k jednomu objektu.

Podívejme se na některé techniky práce s tabulkovými částmi.

Jak obejít tabulkovou část

K procházení části stolu můžete použít smyčku Pro každého

Pro každý řádek z tabulkové části cyklu

Report(String. Atribut TabularPart) ;

EndCycle ;

Při každé iteraci do proměnné Čára přenese se další řádek tabulkové části. Hodnoty podrobností řádku lze získat výrazem Line.AttributeName.

Jak získat a obejít vybrané řádky tabulkové části

Chcete-li zobrazit informace z tabulkové části objektu, použijte prvek formuláře Pole tabulky. Chcete-li povolit možnost vybrat více řádků v poli tabulky, musíte nastavit hodnotu Násobek na jeho pozemku Režim výběru.

Chcete-li získat seznam vybraných řádků, použijte následující kód:

K iteraci vybranými řádky se používá smyčka. Pro každého:

SelectedRows = FormElements. TableFieldName. SelectedRows;

Pro každý řádek z vybraných řádků smyčka

//obsah smyčky

EndCycle ;

Jak programově vybrat řádky tabulkové části (pole tabulky) a zrušit jejich výběr

Chcete-li programově zrušit výběr řádků pole tabulky:

Prvky formuláře. TableFieldName. Vybrané řádky. Průhledná() ;

Chcete-li programově vybrat všechny řádky pole tabulky:

Pro každý CurrentRow From TabularPart Loop
Prvky formuláře. TableFieldName. SelectedLines. Add(CurrentRow) ;
EndCycle ;

Jak vyčistit část stolu

TabularPart. Průhledná() ;

Jak získat aktuální řádek sekce tabulky

Aktuální řádek je časová osa, na které má uživatel aktuálně kurzor. Chcete-li jej získat, musíte získat přístup k ovládacímu prvku na formuláři, který je přidružen k tabulkové části.

Pro běžné formuláře bude kód vypadat takto:

Prvky formuláře. TableFieldName. CurrentData;

Pro spravované formuláře:

Elementy. TableFieldName. CurrentData;

Jak přidat nový řádek do části tabulky

Přidání nového řádku na konec části tabulky:

NewRow = TablePart. Add() ;

Přidání nového řádku kamkoli do části tabulky (následující řádky budou posunuty):

NewRow = TablePart. Vložit (index)
//Index - číslo přidaného řádku. Číslování řádků začíná od nuly.

Nový řádek. Props1 = "Hodnota" ;

Jak programově vyplnit podrobnosti řádku tabulky

Pokud potřebujete programově vyplnit podrobnosti řádku sekce tabulky, který přidal uživatel, musíte použít obslužnou rutinu události sekce tabulky Při zahájení úprav.

Procedura vytvořená handlerem má tři parametry:

  • Živel- obsahuje ovládací prvek TabularField.
  • Nový řádek- booleovský. Obsahuje hodnotu Skutečný, pokud je přidán nový řádek tabulky, a Lhát, pokud uživatel začal upravovat již existující řádek.
  • kopírovat- booleovský. Obsahuje hodnotu Skutečný, pokud uživatel zkopíruje řádek, a Lhát v jiných případech.

Podívejme se na příklad. Řekněme, že potřebujeme vyplnit podrobnosti tabulkové části ÚčetÚčet, v případě přidání nového řádku. Při úpravě existujícího řádku nemusíte měnit účetní účet.

Postup TabularPartAtStartEditing(prvek, nový řádek, kopie)

//Pokud uživatel upraví existující řádek, neuděláme nic
Pokud NE NewRow Then
Vrátit se;
EndIf;

//Pokud je řádek nový, nastavte účetní účet
TechString = Položka. CurrentData; //Získání aktuálního řádku tabulkové části
TechString. Účetnictví = Účtové osnovy. Samonosné. Požadovaný účet;
Konec procedury