Taikoma
„SharePoint“, esantis „Microsoft 365“ „SharePoint“, esantis „Microsoft 365 Small Business“

prie Justin Joyce, LANtek

Pastaba: Šis straipsnis yra "SharePoint" galutiniams vartotojams skirto pranešimų rinkinio dalis, gauta iš ketverių metų tinklaraščio "Gaukite tašką ".

Apžvalga: pasirinktinės senėjimo ataskaitos be kodo

Viena iš dažnai pageidaujamų "SharePoint" svetainės funkcinių dalių yra skirstymo pagal terminus ataskaita, skirta užduotims arba sąrašo elementams. Kitaip tariant, kiek dienų/mėnesių praėjo nuo tada, kai šis sąrašo elementas buvo paskutinį kartą modifikuotas?

Ant paviršiaus tai atrodo labai paprasta užklausa. Galų gale, turime elementų sukūrimo ir modifikavimo datas, turime galimybę saugoti pasirinktines datas, kai įvykių priėmimo priemonėse atliekami tam tikri elementų pakeitimai. Turime apskaičiuojamųjų stulpelių, kuriuose galime įtraukti į "Excel" panašias formules, kad galėtumėte dirbti su savo informacija. Tai atrodo gana tiesiai į priekį pasiūlymas. Pasirenkame datos lauką, sukuriame apskaičiuojamąjį stulpelį, tada formulę darome pagal [DateField] – [Today] eilutes. Ak, ne taip greitai, nors! Kaip žino visi, kurie bandė atlikti šią "paprastą" užduotį, bandydami apskaičiuotame stulpelyje naudoti kažką panašaus į [Šiandien] sukelia problemų. Pabandykite įterpti [Šiandien] į apskaičiuojamojo stulpelio formulės lauką, gausite klaidos pranešimą, panašų į šį:

Klaidos pranešimas

Kodėl taip yra? Na, tai turi daryti su apskaičiuotų stulpelių skaičiavimu.

Paimkime paprastą formulę kaip pavyzdį:

= IF( [1stulpelis]<=[2stulpelis], "Gerai", "Ne gerai")

Visa tai reiškia, kad jei 1stulpelis yra mažesnis arba lygus 2stulpelis, tada rodyti Gerai, kitu atveju rodyti Netinkamai. Tai gana tipiška pagrindinė apskaičiuoto stulpelio formulė ir ji daro bazinę prielaidą apie sąrašo elementą, kuriame yra šie stulpeliai: 1stulpelis ir 2stulpelis niekada nebus galima keisti be įvykio Naujinti sąrašo elemente.

Taip yra, apskaičiuojamieji stulpeliai bus perskaičiuoti tik tada, kai sąrašas atnaujinamas (arba sukuriamas), nes jie daro prielaidą, kad jūsų apskaičiuojama informacija yra pačiame elemente. Tai sukelia problemą, kai bandote naudoti elementą, kuris keičiasi nepriklausomai nuo elemento laukų, pvz., šiandienos datos.

Dabar aš ne susitikime, kur jie nusprendė, kad tai yra taip, kad apskaičiuojamieji stulpeliai funkcionuotų, tačiau, jei man teko padaryti išsilavinęs spėjimas aš manau, kad jie veikia taip veiklos. Įsivaizduokite, jei turėjote kelių tūkstančių elementų sąrašą, kuriame buvo apskaičiuojamasis stulpelis, kuriame turėjo būti "tiesioginis" naujinimas. Tai reikštų, kad tam tikras mechanizmas, galbūt laikmačio užduotis, turėtų pakartoti kiekvieną elementą, kuriame taip dažnai buvo apskaičiuojamasis stulpelis ir atnaujinti jo reikšmę. Tai gali būti labai apmokestinti našumo požiūriu, nes didesnių diegimų atveju ši užduotis gali nuolat veikti ir keisti dalykus. Tai tik mano spėjimas, bet tai daro gana prasmės šiek tiek, jei manote apie tai.

Čia yra keletas pasiūlymų dėl panašių sprendimų, kurie apima apgaulingą "SharePoint" priėmimą į šiandienos reikšmę, pirmiausia sukuriant stulpelį, pavadintą Šiandien, tada įtraukiant jį į formulę, tada ją panaikinant. Visa tai yra gerai ir gerai, tačiau atminkite, ką sakiau apie tai, kai atnaujinami apskaičiuojamieji stulpeliai. Ši reikšmė pasikeis tik tada, kai elementas bus atnaujintas, o tai reiškia, kad jūsų reikšmės netrukus bus neteisingos, ypač skaičiuojant dieną.

Mačiau kitus, naudojančius protingą "JavaScript", kad įrašytų reikšmes į puslapį. Tai taip pat veiktų, bet aš esu gana daug kategoriškai prieš kliento scenarijų, kai galima išvengti.

Įgyvendinimas:

Taigi, ką daryti? Apskaičiuoti stulpeliai nėra klausimas, kaip vadinamosios "kintamos" funkcijos, pvz., Šiandien. Gali būti, kad galėtume sukurti tam tikrą pasirinktinį kodą, kad galėtume tuo pasirūpinti, pvz., vykdyti apskaičiuojamą stulpelį, laikmačio užduotį arba suplanuotą procesą ir atnaujinti kiekvieną elementą, kuriam reikia atlikti šį skaičiavimą. Tai duoda mums grįžti prie efektyvumo aš minimas paskutinėje pastraipoje problemą, nors, ir papildomai tai yra trapus sprendimas, kuris būtų labai specifinės svetainės / sąrašo / stulpelio klausimą. Be šių dviejų rūpesčių, jūs taip pat turite eiti rasti Nerdy vaikinas, pavyzdžiui, pats, kad žino, kaip kodas ir įtikinti jį sukurti šį sprendimą už jus. Tačiau yra paprastesnis būdas!

Jei turite teises kurti laukus ir redaguoti puslapius savo svetainėje ir turite šiek tiek žinių apie XSLT ir rodinių kūrimą, galite sujungti XSL šabloną, kurį galima įtraukti į sąrašo rodinį ir ištikimai apskaičiuoti jūsų reikšmę kiekvieną kartą, kai pageidavote. Šis scenarijus pašalina mūsų susirūpinimą dėl našumo ir nereikalauja pasirinktinio kodo, kad būtų sukurtas ir įdiegtas naudojant sprendimą.

Puikus. Kaip tai padaryti?

  1. Sukurkite arba pasirinkite lauką, kuris veiks kaip mūsų šaltinis. Tai turi būti datos tipas.

  2. Sukurkite mūsų lauką, kuris veiks kaip skaičiuojamos reikšmės vietos rezervavimo ženklas.

  3. Įtraukite abu šiuos laukus į turinio tipą ir įtraukite tą turinio tipą į sąrašą.

  4. Sukurkite to sąrašo rodinį, kuriame būtų šaltinio ir vietos rezervavimo ženklo stulpeliai.

  5. Nusiųskite XSL šabloną į stilių biblioteką.

  6. Nustatykite sąrašo rodinio puslapio dalies ypatybę XSL saitas vartotojo sąsajoje.

  7. Pavyko!

Susipažinkime su naudojimo atvejo pavyzdžiu ir susipažinkime su įdiegimu. Mūsų klientas pageidavo peržiūrėti pagrindinį sąrašą, kuriame būtų nurodoma, kiek laiko konkretus sąrašo elementas sėdėjo prie savo būsenos. Šiame sąraše buvo pasirinktinis svetainės turinio tipas, išvestas iš elemento tipo ir įtrauktas į sąrašą. Vietoje jau buvo įvykių priėmimo priemonė, fiksuojanti kiekvieną kartą, kai buvo pakeistas sąrašo elemento būsenos laukas ir įrašytas tos datos stulpelis, pavadintas "Datos būsena pakeista". Visa tai laidų nereikia, ir gali būti padaryta su bet kurios datos lauką (tai tik taip atsitinka tai mūsų įgyvendinimo, bet nedvejodami eksperimentuoti). Minimumas, kurio jums reikės, yra šaltinio datos laukas ir vietos rezervavimo ženklo laukas, kuriame laikomas skaičiavimas (daugiau apie tai kitoje pastraipoje), įtrauktas į jūsų sąrašą, nors siūlyčiau naudoti svetainės stulpelius ir svetainės turinio tipus, jei šį sprendimą norėsite naudoti kitose svetainės vietose.

Taigi, turime šaltinio datą, kurią galime naudoti skaičiuodami pagal šiandienos datą. Dabar galime sukurti pasirinktinį svetainės stulpelį, kurį naudosime kaip mūsų apskaičiuotos reikšmės konteinerį. Šiuo atveju pasirinkau naudoti apskaičiuojamąjį stulpelį, nes jo nebus galima keisti naujose arba redaguoti elementų formose, tačiau jį galima pasirinkti rodyti rodiniuose, nes nenorime, kad vartotojai į šį stulpelį įves pasirenkamas reikšmes. Gali būti painu, kodėl jis nerodomas rodiniuose ir t. t.

Dabar, kai jau turime svetainės stulpelį, galime jį įtraukti į savo turinio tipus, kurie bus naudojami mūsų sąraše. Tada turime sukurti savo rodinį, kuris vėliau bus pritaikytas mūsų XSLT. Įsitikinkite, kad sukūrėte standartinį rodinį, kuriame yra šaltinio datos stulpelis ir naujas apskaičiuojamasis stulpelis, kuris veiks kaip apskaičiuotos reikšmės vietos rezervavimo ženklas.

Dabar turime viską, ko reikalaujame, kad palaikytume savo pasirinktinę senėjimo ataskaitą. Visa tai išlieka kuriant mūsų XSL šabloną, nusiunčiant jį į svetainės stilių biblioteką ir susiejant jį su mūsų sąrašo rodiniu. XSL šablone, kurį naudosime, bus kai kurie įprasti "SharePoint" sugeneruoti keitimai, skirti rodiniui generuoti, taip pat mūsų pasirinktiniai keitimai, naudojami perrašyti tam tikras šio parametro dalis ir mums apskaičiuoti norimą reikšmę.

Suteikiant kreditą ten, kur turi būti kreditas, XSL šablonai, skirti atlikti faktinius skaičiavimus, kuriuos naudoju šiam sprendimui, buvo mielai pateikti "swirch" MSDN forumuose:http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomization/thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/

Atsisiųskite XSL stilių aprašą (aging.zip), kurį pateikiau čia:https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9!104

Atidarę šią parinktį savo mėgstamoje teksto rengyklėje pamatysite daug įprastų "SharePoint" XSL keitimų rodiniams generuoti, jei slenkate žemyn iki 357 eilutės, matysite pasirinktinių šablonų, kuriuos įtraukiau į keitimus, pradžią, pirmasis yra "DateDiff" šablonas, po kurio seka "calculate-julian-day" ir "FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status". Tai yra trys mūsų šablonai, kurie atliks ir parodys mūsų skaičiavimus mūsų rodiniuose. Jei naudosite kitus laukų pavadinimus, nei buvo nurodyta anksčiau šiame straipsnyje, turėsite peržiūrėti šiuos šablonus ir pakeisti nuorodas į kitus pavadinimus. Atminkite, kad šiuo tikslu norėsite naudoti lauko VIDINĮ pavadinimą, o ne rodomą pavadinimą.

Kai būsite patenkinti, kad šablonas parengtas naudoti, eikite į stilių biblioteką ir nusiųskite jį į aplanką "XSL stilių aprašai", tada nukopijuokite saitą į failą. Tai leis mums lengvai keisti jį vėliau arba įtraukti jį į kitas svetainės dalis, kaip prašome.

Tada eikite į sąrašą ir pasirinkite anksčiau šiame straipsnyje sukurtą rodinį. Meniu Svetainės veiksmai spustelėkite Redaguoti puslapį.

Komanda Redaguoti puslapį meniu Svetainės veiksmai

Raskite sąrašo rodinio puslapio dalį puslapyje ir atidarykite puslapio dalies meniu spustelėdami mažą rodyklę žemyn, esančią viršutiniame dešiniajame kampe. Šiame meniu pasirinkite Redaguoti puslapio dalį.

Komanda Redaguoti puslapio dalį puslapio dalies meniu

Taip naršyklės lango dešinėje pusėje bus atidarytas puslapio dalies meniu.

Meniu Žiniatinklio dalis

Spustelėkite sekcijos "Įvairūs" + ir raskite ypatybę "XSL saitas".

XSL saito ypatybė puslapio dalies meniu

Įklijuokite saitą į XSL failą stilių bibliotekoje, kurią nukopijavote anksčiau (tai gali būti santykinis arba absoliutus saitas).

XSL failo saitas įklijuotas

Spustelėkite Gerai, kad įrašytumėte keitimus, tada puslapio viršuje esančioje juostelėje "Puslapis" spustelėkite mygtuką "Stabdyti redagavimą".

Mygtukas Stabdyti redagavimą skirtuke Puslapis

Jei viskas sukonfigūruota tinkamai, dabar turėtumėte matyti skaičius stulpelyje "Dienos būsenos".

Dienos būsenos stulpelyje – rodomas skaičius

Ir galiausiai, štai kaip tai atrodytų su kai kuriais testo duomenimis apie įvairias datas:

Senėjimo ataskaita, kurioje rodomi testo duomenys

Suvestinė:

Čia yra: gražiai suformatuotas, patikimas ir našesnis būdas sukurti senėjimo ataskaitą programoje "SharePoint"., visiškai be kodo. Tai turi nemažai potencialių paraiškų išskyrus vieną naudojimo atveju mes ištirti čia. Kitas įprastas šio tipo ataskaitos scenarijus yra jį pridėti prie užduočių sąrašo, kad matytumėte, kiek praėjo nuo užduoties sukūrimo vienu žvilgtelėjimu.

Smagaus žiūrėjimo!

--Justin

Justin Joyce, LANtek

Komentarai

Trūksta veiksmų 2012-10-08 3:51 Ok aš po veiksmus, bet ten turi būti kažkas trūksta - kaip bus XSL žinoti, kurią datą naudoti, arba kurį lauką pridėti dienų, nes į? neapykantos, kai bus praleisti veiksmai.

Be kodekso, sutarta! 2012-08-30 12:12 Sutinku - nemanau, kad tai tikrai skaičiuojami kaip "nėra kodo".Įdomu tai, kad per kai kuriuos SharePoint prisukimo, aš darbo apskaičiuojamasis stulpelis naudojant Šiandien ... nežinote, kaip ar kodėl, nes aš negaliu gauti tai padaryti dar kartą, bet vienas vis dar ten ir veikia.

Apskaičiuojamojo stulpelio "Dienų būsena" formulė? 2012-05-02 7:39 Justin – kokia formulė naudojama apskaičiuojamajam svetainės stulpeliui "Dienos esant būsena" (vietos rezervavimo ženklo stulpelis)? Ar tai buvo "=šiandien"?

SharePoint 2007 2011-12-02 11:29 Šiuo metu nebandau taikyti šio sprendimo "SharePoint 2007", tačiau aš į jį ieškau. Deja, per vartotojo sąsają puslapio dalyje nėra "XslLink" ypatybės.

Puikus skelbimas 11/30/2011 9:53 AM Labas Didžiosios Post.Naudoju "SharePoint 2007".Neturiu Misc skyriaus, kaip nurodyta anksčiau.Ar turite SP2007 konfigūracijos veiksmų? Ačiū.

Re: No-code solution: Displaying the days since a SharePoint list item was last changed 2011-10-11 08:24 Sveiki, Krisai.puiki rasti! I'm going to imtis, ką paskelbtas vėliau šiandien atrodo ir pažiūrėkite, ar aš galiu padaryti šį sprendimą šiek tiek patikimesnis.Džiaugiuosi, kad jums patiko paštu, ir aš labai džiaugiuosi, kad jums pavyko rasti sprendimą į Europos datos formatą. :) -Justin

Europos datos formatų sprendimas 2011-10-11 06:45 Sveiki vėl Justin, FYI, radau sprendimą problemai, kurią minėjau anksčiau šiame puslapyje;https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Europos datos formatai 2011-10-07 3:59 Sveiki, Justinai, Tai tikrai geras sprendimas ačiū, ir tik dalykas, aš praleido paskutines dvi dienas ieškojau rūšiuoti! Tačiau aš turiu šiek tiek problemų su juo ir aš tikėjausi, kad galėtų man padėti.I've altered your code slightly to calcultate the number of days until something happens, o than since, by switching the variables in the last line of the "DateDiff" function; <xsl:value-of select="$JulianToday - $JulianStartDate"></xsl:value-of> Tačiau aš tik galėtų gauti jį caclulate skirtumas teisingai pusę laiko. Taigi, pavyzdžiui, su šia data (formatuokite dd/MM/mmmm); 2011-30-12 Ji teisingai skaičiuoja, bet naudodama šią datą (tuo pačiu formatu) 2011-12-10 Ji apskaičiuoja lyg 2011 m. gruodžio 10 d., o ne 2011 m. spalio 12 d.Bandžiau paprasčiausiai pakeisti dienos ir mėnesio reikšmių pozicijas kintamajame "JulianStartDate", kaip čia; <xsl:with-param name="Month" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'yyyyMdd'),7,2)"/> <xsl:with-param name="Day" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'yyyyMdd'),5,2)"/> Ir tai ištaisė problemą su antrąja data, tačiau tai buvo neteisinga pirmąją datą! Aš taip pat bandė pakeisti FormatDateTime skambučius naudoti Europos LCIDs ir įvairių pakeitimų paskutinio parametro FormatDateTime (pvz., ddMMyyyy, MMddyyyy) su atitinkamais pataisymais dalinės eilutės padėties parametrus be sėkmės.Aš labai vertiname bet kokį patarimą galite pasiūlyti.Ačiū Chris

Be kodo 2011-09-21 04:27 Nemanau, kad XSL gali būti "ne kodas" sprendimas, kaip suprasti XSL kalba yra ne visiems - tačiau tai nėra susiję su programavimu. Be to: Nice sprendimas, ačiū!

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.