Získejte data z tabulkové části dokumentu 1c. Jak získat data z tabulkové části dokumentů? Jak programově vyplnit podrobnosti řádku tabulky

Za účelem účtování peněz a zboží se v podnikání široce používají různé tabulky. Téměř každý dokument je tabulka.

V jedné tabulce je uvedeno zboží k odeslání ze skladu. Další tabulka uvádí povinnosti platit za toto zboží.

Proto v 1C zaujímá práce s tabulkami přední místo.

Tabulky v 1C se také nazývají „tabulkové části“. Adresáře, dokumenty a další je mají.

Dotaz po provedení vrátí tabulku, ke které lze přistupovat dvěma různými způsoby.

První - rychlejší - výběr, získávání řádků z něj je možné pouze v pořádku. Druhým je nahrání výsledku dotazu do tabulky hodnot a poté k němu náhodný přístup.

//Možnost 1 – sekvenční přístup k výsledkům dotazu

//získejte stůl
Select = Query.Run().Select();
// projdeme všechny řádky výsledku dotazu v pořadí
Zatímco Select.Next() Loop
Zpráva(Výběr.Název);
EndCycle;

//Možnost 2 – nahrání do tabulky hodnot
Request = New Request("SELECT Name FROM Directory.Nomenclature");
//získejte stůl
Tabulka = Query.Run().Unload().
//dále můžeme také procházet všechny linky
Pro každý řádek z cyklu tabulky
Report(String.Name);
EndCycle;
//nebo libovolně přistupovat k řetězcům
Řádek = Stůl.Find("Lopata", "Jméno");

Důležitou vlastností je, že v tabulce, která se získá z výsledku dotazu, budou všechny sloupce striktně zapsány. To znamená, že vyžádáním pole Název z adresáře Nomenklatura obdržíte sloupec typu String s povolenou délkou maximálně N znaků.

Tabulka na formuláři (tlustý klient)

Uživatel pracuje s tabulkou při jejím umístění na formulář.

Základní principy práce s formuláři jsme probrali v hodině na a v hodině na

Položme tedy tabulku na formulář. Chcete-li to provést, můžete tabulku přetáhnout z panelu Ovládací prvky. Podobně můžete z nabídky vybrat Form/Insert Control.

Data mohou být uložena v konfiguraci - pak je třeba vybrat existující (dříve přidáno) tabulková část konfigurační objekt, jehož formulář upravujete.

Klikněte na tlačítko "..." ve vlastnosti Data. Chcete-li zobrazit seznam tabulkových částí, musíte rozbalit větev Objekt.

Když vyberete tabulkovou část, 1C sám přidá sloupce do tabulky ve formuláři. Řádky zadané uživatelem do takové tabulky se automaticky uloží spolu s referenční knihou/dokumentem.

Ve stejné vlastnosti Data můžete zadat libovolný název a vybrat typ Tabulka hodnot.

To znamená, že byla vybrána libovolná tabulka hodnot. Nebude automaticky přidávat sloupce, ani se automaticky neukládá, ale můžete si s ním dělat, co chcete.

Kliknutím pravým tlačítkem na tabulku můžete přidat sloupec. Ve vlastnostech sloupce můžete zadat jeho název (pro referenci v kódu 1C), záhlaví sloupce ve formuláři, spojení s atributem tabulkové části (druhé - pokud není vybrána libovolná tabulka, ale tabulková část).

Ve vlastnostech tabulky ve formuláři můžete určit, zda uživatel může přidávat/odstraňovat řádky. Pokročilejším formulářem je zaškrtávací políčko Pouze zobrazení. Tyto vlastnosti je vhodné použít pro organizaci tabulek určených k zobrazování informací, ale ne k úpravám.

Chcete-li tabulku spravovat, musíte ve formuláři zobrazit panel příkazů. Vyberte položku nabídky Formulář/Vložit ovládací/Příkazový řádek.

Ve vlastnostech panelu příkazů zaškrtněte políčko Automatické vyplňování, aby se tlačítka na panelu zobrazovala automaticky.

Tabulka na formuláři (tenký/spravovaný klient)

Na ve zvládnutelné formě Tyto kroky vypadají trochu jinak. Pokud potřebujete umístit tabulkovou část na formulář, rozbalte větev Objekt a přetáhněte jednu z tabulkových částí doleva. To je vše!

Pokud potřebujete umístit tabulku hodnot, přidejte nový atribut formuláře a v jeho vlastnostech určete typ – tabulka hodnot.

Chcete-li přidat sloupce, použijte nabídku pravým tlačítkem myši na tento atribut formuláře, vyberte Přidat sloupec atributu.

Potom také přetáhněte tabulku doleva.

Aby tabulka měla panel příkazů, ve vlastnostech tabulky vyberte hodnoty v části Použití – Umístění panelu příkazů.

Nahrání tabulky do Excelu

Jakoukoli tabulku 1C umístěnou ve formuláři lze vytisknout nebo nahrát do Excelu.

Chcete-li to provést, klepněte pravým tlačítkem myši na volný prostor v tabulce a vyberte Seznam.

Ve spravovaném (tenkém) klientovi lze podobné akce provádět pomocí položky nabídky Všechny akce/Zobrazit seznam.

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

  • Adresáře
  • Dokumentace
  • Zprávy 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 období, ve kterém má uživatel tento moment kurzor je umístěn. 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 sekce 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, kterou 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 TableField.
  • Nový řádek- booleovský. Obsahuje hodnotu Skutečný, pokud je přidán nový řádek tabulková část a Lhát, pokud uživatel začal upravovat již existující řádek.
  • Kopírování- 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; //Mám aktuální linka tabulková část
TechString. Účetnictví = Účtové osnovy. Samonosné. Požadovaný účet;
Konec procedury

Home Pro začínající vývojáře Učíme se programovat

Jak získat data z tabulkové části dokumentů?

Zvažte například situaci, kdy potřebujete získat všechny položky položek uvedené v tabulkové části Zboží dokumenty Prodej zboží a služeb.

K tomu můžete použít žádost s následujícím textem:

VYBERTE RŮZNÉ Prodej zboží a služeb Nomenklatura AS Nomenklatura Z Dokument Prodej zboží a služeb

Jako zdroj uvádíme tabulkovou část dokumentů – tabulku Doklad o prodeji zboží a služeb. Výstupní pole deklarujeme jako pole Nomenklatura, který je součástí zdrojové tabulky. Kromě toho, protože stejná položka produktu přirozeně může být v dokumentech přítomna více než jednou, používáme ROZLIČNÝ získat pouze odlišné řádky ve výstupní tabulce dotazu.

Vytvořme si například zpracování Seznam produktů, kde je dokument vybrán Prodej zboží a služeb a kliknutím na příslušné tlačítko se v okně zprávy zobrazí seznam neopakujících se položek nomenklatury obsažených v tabulkové části tohoto dokumentu.

Abychom omezili výběr položek pouze na položky z tabulkové části konkrétního dokladu, používáme parametr Odkaz ve stavu v žádosti ( KDE...):

VYBERTE RŮZNÉ Prodej zboží a služeb Nomenklatura AS Nomenklatura Z Dokument JAK Prodej zboží a služeb Zboží KDE Prodej zboží a služeb Zboží