Pokročilé formátování seznamů v SharePointu
Po dlouhé době jsem se vrátil k platformě, která se mi poprvé dostala do rukou v její verzi Windows SharePoint Services 3.0. Už tehdy mě oslovila možnost snadného vytvoření firemního intranetu, ukládání dat do jednoduchých seznamů a možnost ukládání dokumentů včetně verzí a metadat do knihoven dokumentů.
Od začátku bylo možné SharePoint upravovat, avšak možnosti se časem měnily. Od „prostého“ vývoje v .NET pomocí Visual Studio, provádění úprav za pomoci SharePoint Designer, tvorbu custom formulářů v InfoPath, zavedení CSOM modelu až po všude přítomné PowerApps. Ovšem s nástupem moderní podoby SharePointu přišla ještě jedna možnost, poněkud skrytá ve stínu PowerApps. Jedná se o formátování pohledů a formulářů pomocí JSON definic a formulí.
Zadání bylo jednoduché:
- Existuje seznam „Nahlášené incidenty“, který se odkazuje do tří pomocných seznamů: BCStandard, AppsBA4 a AppsOstatni pomocí stejnojmenných polí.
- Podle vybrané hodnoty v poli „Typ aplikace“ zobrazit na formuláři pro editaci „Nahlášeného incidentu“ jedno z polí „BCStandard“, „AppsBA4“, „AppsOstatní“.
- Při uložení pak načíst z odkazovaného záznamu hodnotu v poli „Odpovědná osoba“ a propsat ji do pole řešitel.
- Nakonec upravit přehled tak, aby hodnota vybraná v některém ze sloupců „BCStandard“, „AppsBA4“ nebo „AppsOstatni“, byla zobrazena ve sloupci Aplikace přehledu.
Podmíněné zobrazení atributů na formuláři
Moderní formuláře v SharePointu umožňují customizace bez nutnosti rozsáhlého vývoje. Každý, kdo v týmu získal roli „Owner“, si při editaci položky v seznamu všimnul ikonek v pravém horním rohu formuláře.
První zleva zobrazuje nebo schovává možnost komentářů. Druhá obsahuje nástroje pro změnu chování formuláře. Pro řízení viditelnosti atributů nás bude zajímat volba Edit coluns.
Volba otevře dialog pro práci s viditelností atributů a jejich pořadím na formuláři. Pořadí je možné změnit prostým přetažením v seznamu. Měnit viditelnost je možné zaškrtnutím atributu. Ovšem to nejlepší se skrývá pod značkou tří svislých teček pod sebou u pravého okraje.
Po kliknutí na tuto značku se objeví nabídka s volbou Edit conditional formula.
Jejím výběrem se vyvolá dialog pro práci s podmíněnými výrazy. Výsledkem výrazu musí být hodnota „true“ pro zobrazení, nebo „false“ pro skrytí pole na formuláři.
V ukázce se kontroluje hodnota v atributu s internal name „Aplikace“. V případě, že se jeho hodnota rovná „AppsBA4“, atribut se na formulář zobrazí, jinak zůstane skryt. Kompletní dokumentaci lze najít zde Show or hide columns in a list form | Microsoft Docs.
Automatické nastavení řešitele
Zatímco podmíněné zobrazení atributů lze řešit přímo pomocí nástrojů SharePoint, u nastavení výchozí hodnoty je potřeba sáhnout po PowerAutomate. Samotné flow bude spouštěno při vytvoření nebo změně záznamu. Po svém spuštění zjistí, jaký typ aplikace byl zvolen, a podle toho v některém z odkazovaných číselníků dohledá odpovědnou osobu a doplní ji jako řešitele.
Jednoduché a jasné zadání však skýtá několik úskalí:
- Flow se spouští při změně záznamu a samo o sobě tento iniciační záznam i edituje. Bez vhodného ošetření by tak mohlo vzniknout nekonečné zacyklení, kdy změna by spustila flow. To by provedlo změnu, která by pak opět flow spustila…
- Záznam obsahuje povinné atributy a výběry, jejichž hodnotu je potřeba zachovat. Flow při použití akce Update item pro SharePoint požaduje vyplnění povinných údajů. U výběrů pak automaticky nastavuje výchozí hodnotu a nelze atribut ponechat prázdný, aby se neměnil.
- Je nutné si uvědomit, že uložení změny ve formuláři nastane ihned po opuštění atributu. Takže při změně obsahu 4 atributů na editačním formuláři se obsah uloží 4x.
Co nejdříve po spuštění se musíme vypořádat s rizikem zacyklení. Proto nejdřív pomocí aktivity přečteme, co se na formuláři od posledního uložení změnilo. Podmínkou pro správnou funkci je povolené verzování záznamu. V tomto směru jsou pro nás klíčové atributy:
- Until – určuje poslední uvažovanou změnu od verze označené v Since. Zde vložíme aktuální verzi změny.
- Since – říká, od kdy se má po změnách pátrat. Například od první verze nebo v posledních 3 verzích.
V našem případě je použit výraz, který:
- Zjistí, zda se nejedná o první verzi, pak since se bude rovnat until.
- Jestliže je aktuální verze větší než jedna, pak se since nastaví na hodnotu o 1 menší, než je aktuální verze. Tj. budeme zjišťovat změny, které nastaly při posledním uložení.
Následná podmínka už jen vyhodnotí, zda jde o změnu v některém ze sledovaných atributů (lookup polí, které se na základě typu aplikace zobrazují), nebo jde o založení nového záznamu. V takovém případě se spustí nastavení řešitele, jinak se neprovede nic.
Správné nastavení řešitele zajistí použití aktivity switch, která podle hodnoty typu aplikace zajistí načtení odpovídající hodnoty a nastavení správných atributů, včetně URL v atributu „Aplikace“, která bude odkazovat na záznam vybraný v některém z lookup polí, určeném typem aplikace.
Formátování SharePoint list view
Existuje několik způsobů, jak v pohledu zobrazit hodnotu z více atributů v jednom sloupci. Já jsem vytvořil atribut „Aplikace“ typu URL. Tento atribut je na formuláři skryt, avšak výše zmíněné flow do něj vložím odkaz na záznam vybraný v některém ze tří lookup polí. Bohužel standardní power automate aktivita „update item“ pro práci se SharePoint neumožňuje nastavit část popisu pro pole typu URL, takže místo názvu odkazované položky se v přehledu zobrazí její URL.
A právě v tomto případě přijde ke slovu další z kouzel moderního vzhledu SharePointu. Formátování pohledu.
Formátovat lze buď celé view, nebo konkrétní sloupec. V našem případě si místo sloupce „Název“ vybereme sloupec „Aplikace“ a klikneme na Advanced mode. Detailní popis použití JSON formátování naleznete zde Use view formatting to customize SharePoint | Microsoft Docs.
V Advanced mode se zobrazí pole pro editaci JSON definice formátování. V nadsázce musím říci, že pokud nepatříte mezi masochisty nebo netrpíte záchvaty sebepoškozování, pro editaci použijete nějaký normální editor, například VSCode, Notepad++ apod.
Skript v HTML kódu hledá element „a“ a upravuje jeho text a atributy. Zobrazovaný text je definován pomocí elementu „txtContent“. V jeho případě se podle hodnoty ve sloupci s internal name „Aplikace“ načte hodnota „text“ z jiného ze zobrazených sloupců ve view. Pro samotný odkaz se pak použije hodnota formátovaného sloupce.
Při tomto řešení je nutné ve view ponechat odkazované sloupce, avšak je možné je pomocí formátování například zúžit na nulovou šířku.
Pokročilé formátování
Zvolené řešení, na rozdíl od použití Power Apps pro úpravu formulářů, ponechává možnost přidávat nebo odebírat atributy seznamu bez nutnosti následné úpravy formuláře. Řešení by se dalo zlepšit například tím, že se URL místo výše popsaného formátování správně naplní už ve flow, a to za pomoci HTTP volání webového API SharePoint.
Na druhou stranu v oblasti úprav formulářů a pohledů existuje již jen málo, co by nebylo možné vytvořit. O možnostech formátování formulářů a pohledů se lze přesvědčit například zde:
Autor: Zdeněk Havel, Solution Architect
Kategorie
- 8 STEPS Business Consultation
- Audit nastavení bezpečnosti a ochrany dat
- Audit strategie digitální transformace společnosti
- Audit technologické strategie
- Automotive CRM
- BA4 Assets
- BA4 Banking
- BA4 Base
- BA4 Cars
- BA4 Commerce
- BA4 Controlling
- BA4 Correction Entries
- BA4 CRIBIS
- BA4 Czech Payroll
- BA4 Depository
- BA4 EDI
- BA4 eDocs
- BA4 Equipment Register
- BA4 FA Inventory
- BA4 Finance
- BA4 Government
- BA4 Item Statements
- BA4 Job Queue
- BA4 Logistics
- BA4 PBI Analytics
- BA4 Work Equipment
- Balíčky pro vývoj a služby Microsoft Azure
- Bezpečnost
- Budoucnost HR je digitální
- Citizen Development
- Cloud and Security Consulting
- Consents pro Dynamics 365
- CRIBIS Connector
- Customer Engagement
- Digitalizace
- DMS & ECM řešení pro vaši chytrou kancelář
- Document management pro SAP ERP
- Document Management System
- Dynamics 365 Finance a Dynamics 365 Supply Chain Management
- Energetika
- Enterprise Content Management
- Fleetman
- Holdingy
- Chemická výroba
- Kentico Xperience
- Komunikace a spolupráce
- Licenční poradenství a optimalizace
- LMS365
- Microsoft AI
- Microsoft Azure
- Microsoft Cloud
- Microsoft Copilots
- Microsoft Defender
- Microsoft Dynamics 365 Business Central
- Microsoft Dynamics 365 Customer Service
- Microsoft Dynamics 365 Finance & Operations
- Microsoft Dynamics 365 Marketing
- Microsoft Dynamics 365 Sales
- Microsoft Intune
- Microsoft Partner
- Microsoft Power Platform
- Microsoft Security
- Obchodní společnosti a velkoobchod
- Podnikové aplikace na Microsoft Power Platform
- Poradenství v oblasti bezpečnosti
- Poradenství v oblasti využití Microsoft Power Platform
- POS NG Retail
- Pricing Azure
- Professional Services
- Project Insights
- Projektový engineering a kusová výroba
- Real Estate & Development
- Real Estate Suite – Square2
- Retail a maloobchod
- ScanFlow Invoices
- Služby a poradenství k Microsoft 365
- Správa a zabezpečení pro školy
- SRM
- Státní správa a samospráva
- Talkey
- Video-analytické technologie a řešení
- Vývoj a služby Microsoft AZURE
- Workshopy k Microsoft 365
- Zabezpečení s Microsoft SECURITY
- Zdravotní pojišťovny
- Zdravotnictví
- Nezařazené
- Automotive
- Development
- HR
- Infor
- Konica Minolta IT Solutions Czech
- Microsoft 365
- Microsoft Dynamics 365
- Power Platform
- Produktivita 365
- Servisní organizace
- Strojírenství
- Vývoj softwaru na zakázku
- Yavica FlexProperty