4D Write Pro: Dynamické vyplňování tabulek pomocí výběrů entit a kolekcí

Automaticky přeloženo z Deepl

Jako vývojáři často vytváříme složité a pokročilé dokumenty 4D Write Pro. Můžeme vytvářet tabulky, které je třeba vyplnit ze zdroje dat, a nemusíme si být jisti přesnými řádky a sloupci. Ruční vyplňování tabulek daty je pokaždé pracné. Vyslyšeli jsme vás a právě zde přichází kontext dat jako neocenitelná možnost, která otevírá svět ORDA a objektově orientovaného vývoje dokumentů 4D Write Pro.

Nyní je možné definovat „datový zdroj“ pro tabulky aplikace 4D Write Pro. Ať už se jedná o výběr entit nebo kolekci, tento „datový zdroj“ bude automaticky zásobovat řádky těchto tabulek.

Pojďme se ponořit do podrobností!

Dynamické plnění tabulek výběry entit a kolekcemi

Obrázek vydá za 1000 slov.

Tato funkce umožňuje vytvářet dokumenty, jako je tento:

Po dokončení je lze exportovat (jako PDF, Docx nebo jakýkoli jiný dostupný exportní formát.), tisknout, upravovat atd. Podívejme se krok za krokem, jak postupovat!

Tabulka, řádek záhlaví, řádek „Šablona“, další řádky

V dokumentu 4D Write Pro může nyní tabulka obsahovat jeden nebo více řádků záhlaví. Řádek, který bezprostředně následuje za záhlavím, bude považován za šablonový řádek, který se bude opakovat a vyplňovat obsahem prvků datového zdroje. Následující řádky (pokud existují) budou automaticky „posunuty“ směrem dolů a mohou obsahovat další informace, případně i na základě datového zdroje tabulky. Původní dokument použitý k vygenerování výše uvedené sestavy vypadá takto:

blank

První rámeček nahoře je vyplněn informacemi poskytnutými kontextem dat. Pokud nejste s tímto konceptem obeznámeni, důrazně doporučujeme si nejprve přečíst tento příspěvek na blogu. Podívejme se, jak je definována samotná tabulka.

V tomto případě tabulka obsahuje tři části (podrobněji později):

  • První řádek byl definován jako záhlaví.
  • Druhý řádek je řádek šablony.
  • Následující řádky obsahují další informace na základě datového zdroje tabulky a výpočtů.

PŘIŘAZENÍ ZDROJE DAT K TABULCE

Jak již název napovídá, zdroj dat poskytuje data tabulce. Proto by tento zdroj dat měl být vzorcem, jehož výsledkem je buď výběr entit, nebo kolekce. Pokud tomu tak není (vzorec přece může vracet cokoli), výsledek vzorce je sice stále přístupný v tabulce (viz níže), ale jako šablona nebude použit žádný řádek.

Dva způsoby, jak postupovat

#1: DEFINUJTE DATOVÝ ZÁSOBNÍK S POUŽIVATELSKÝM ROZHRANÍM

Uživatelské rozhraní bylo upraveno tak, aby bylo možné vzorec přímo spojit s tabulkou.

Představme si tabulku „Firma“ propojenou s tabulkou „Zaměstnanci“ prostřednictvím odkazu „zaměstnanci“. Pokud je entita Firma přístupná prostřednictvím kontextu v dokumentu, pak „zaměstnanci“ budou datovým zdrojem tabulky.

Vzorec spojený s tabulkou může být This.data.company.employees.

blank

blank

… kde This.data (kontext) bude poskytnut (později) programováním:

$context:=New object("company";$company) // $company is a company entity
WP SET DATA CONTEXT(WParea;$context)

#2: DEFINUJTE ZDROJ DAT PROGRAMOVÁNÍM

Zdroj dat lze nastavit také pomocí jediného řádku kódu.
Každá tabulka nyní může obsahovat nový atribut, který lze definovat pomocí příkazu WP SET ATTRIBUTES.

WP SET ATTRIBUTES($table;wk data source;Formula(This.data.company.employees))

JAK DEFINOVAT OBSAH ŘÁDKŮ?

Jakmile je datový zdroj tabulky definován, je čas vyplnit řádky!

Nové atributy jsou k dispozici díky klíčovému slovu This, které vychází z položek datasource.

V řádku šablony můžete použít This.item.xxx, kde xxx (příjmení, adresa, PSČ…) budou atributy aktuální entity, ke které chcete přistupovat, například This.item.name nebo This.item.age. Můžete také přistupovat k indexu položky ve výběru (nebo kolekci) pomocí atributu This.itemIndex

blank

Po výpočtu (pomocí WP COMPUTE FORMULAS) lze vypočítané řádky zobrazit tak, jak je vidět v úvodu.

Další atributy tabulky!

Některé další atributy lze také použít kdekoli v tabulce, obvykle v následujících řádcích.

This.table.datasource vrací vzorec spojený s tabulkou. Přesto bude pravděpodobně lepší použít This.tableData,, jehož hodnotou je již vyhodnocený výsledek tohoto vzorce (obvykle kolekce nebo výběrová entita).

To samozřejmě optimalizuje zpracování a zajišťuje konzistenci dokumentu.

Z tohoto posledního atributu (tableData) lze díky vzorcům, jako jsou tyto, snadno vypočítat součty, průměry a minimální či maximální hodnoty:

This.tableData.min(age)
This.tableData.average(salary)

blank

Ještě více atributů?

Byly přidány nové atributy, které jsou dosažitelné v jakékoli tabulce (i bez definovaného zdroje dat). Umožní vám přístup k:

  • Samotná tabulka používá This.table,
  • Aktuálnímu řádku pomocí This.row,
  • Aktuální číslo řádku pomocí This.rowIndex.

TISK plných sestav ve čtyřech řádcích kódu!

Jakmile je tento druh dokumentu vytvořen, lze jej použít jako šablonu.

For each ($company; $companies)
  WP SET DATA CONTEXT($template; New object("company"; $company))
  WP PRINT($template) // (before printing, expressions will be recomputed by default)
End for each 

PŘIZPŮSOBENÍ SESTAV, SEZNAMŮ ATD.

Můžete také použít šablonu, jejíž tabulky byly naplněny hodnotami z datového zdroje. Budete moci zvýrazňovat řádky, měnit barvy a styly, a dokonce odstraňovat nebo přidávat prázdné řádky!

Nejlépe to uděláte tak, že dokument nejprve zmrazíte, aby všechna vložená data byla nyní běžnými řádky a textem. Zmrazení dokumentu není povinné, ale musíte si být vědomi, že všechny vaše úpravy budou ztraceny, pokud dojde k přepočítání vzorců.

A konečně, pokud je třeba dokument uložit (nejen vytisknout nebo exportovat), pak byste měli použít kopii svých šablon, abyste nepřišli o samotné šablony.

MyWorkingDocument :=WP New($template))

Závěr

Tato nová funkce umožňuje generovat dokumenty ze šablon. Jejich obsah může vycházet z ORDA s minimem programových řádků.

Tyto dokumenty lze exportovat jako PDF, Docx, eMail. Lze je také použít jako vylepšení formulářů seznamů a výběru tisku.

Automatické generování dokumentů je nyní výrazně usnadněno, ať už se jedná o faktury, katalogy nebo soupisy.

Další podrobnosti najdete v dokumentačním centru(zde a tam). A jako vždy se můžete ozvat na fóru 4D.

Roland Lannuzel
- Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.