SharePoint List – Custom Progress Calculated Column

În SharePoint folosim de multe ori coloanele calculate în liste pentru a determina anumite valori pe baza altor coloane. De cele mai multe ori aceste operațiuni se rezumă la operațiuni simple de adunare, scădere, și în cazuri mai avansate la folosirea funcțiilor dedicate pentru a reprezenta starea unui element de listă. La această adresă aveți o listă destul de bogată de formule și funcții pentru câmpurile calculate.

Într-un proiect curent am descoperit cât de utilă pentru utilizatorii finali poate fi crearea unei liste de gestionare a activităților, un fel de plan de proiect care presupune execuția unor pași determinați/cunoscuți în ordinea lor.

Custom project list

Coloanele Step1, Step2, Step3 si Step4 sunt coloane de tip Choice și pot avea valorile? Not started, In progress sau Done! În funcție de starea fiecărei coloane se poate determina valoarea coloanei calculate Progress care are la bază următoare formulă:

=IF(AND(Step1="Done!";Step2="Done!";Step3="Done!";Step4="Done!");1;
(IF(AND(Step1="Done!";Step2="Done!";Step3="Done!";Step4="In progress");0,85;
(IF(AND(Step1="Done!";Step2="Done!";Step3="Done!");0,75;
(IF(AND(Step1="Done!";Step2="Done!";Step3="In progress");0,65;
(IF(AND(Step1="Done!";Step2="Done!");0,5;
(IF(AND(Step1="Done!";Step2="In progress");0,35;
(IF(Step1="Done!";0,25;
(IF(Step1="In progress";0,15;0)))))))))))))
))

Formula este în Romanian format. Pentru cei care o vor în Engleză trebuie să înlocuiască caracterul virgulă cu punct și apoi punct și virgulă cu virgulă.

În mod normal se spune că în coloanele calculate există o limitare de 7 IF-uri imbricate, dar se pare că în articolul Maximum number of IF statements in a Calculated Column? veți găsi o metodă de concatenare a mai multor IF-uri pentru a putea scrie formule mai complexe.

Următoarea etapă în proiectarea unei astfel de liste este aceea de a valida datele introduse în așa fel încât fiecare pas să înceapă abia după ce s-a finalizat cel anterior. Aici este o adevărată problemă pentru că în caseta Formula de la : List Settings : Validation Settings este permis doar un număr limitat de caractere, și trebuie găsită o altă metodă de a scrie funcția logică prin limitarea numărului de coloane introduse și a valorilor posibile de luat. De aceea eu am preferat să folosesc o funcție AND() de intercorelare cumulativă a rezultatului evaluării mai multor funcții logice IF().

Cam așa ar arăta formula de validare a listei:

=AND(
IF(Step1<>"Done!";Step2="Not started";OR(Step2<>"Not started";Step2="Not started"));
IF(Step2<>"Done!";Step3="Not started";OR(Step3<>"Not started";Step3="Not started"));
IF(Step3<>"Done!";Step4="Not started";OR(Step4<>"Not started";Step4="Not started"))
)

În traducere, dacă Step1 nu este finalizat, înregistrarea este validă doar dacă Step2=”Not started”. Dacă Step1 este finalizat (valoarea Done!) atunci pasul 2 poate avea orice stare diferită de Not started sau chiar egală cu aceasta. Este un artificiu și mie mi-a luat ceva timp să ajung la formulele acestea. Sper voi doar să beneficiați de ele ;)

În cazul în care doriți să testați live lista, o găsiți la adresa: http://portal.feaa.uaic.ro/Test/Lists/Custom%20Project/AllItems.aspx

Enjoy!

I lost a survey answers! #SharePoint stuff

Disclaimer

Microsoft does not recommend to work directly with SharePoint databases.

The Context

Often, in the current activity of a company, we need surveys to study the opinion of colleagues, employees or customers. Any such process requires a stage of questionnaire design, approval, testing and publishing. But, unfortunately, it may cause errors in the workflow approval. As we all know, the most common errors are typo mistakes.

The Mistake

The questionnaire is published, users began to fill in the data, possibly anonymous (no login), and someone noted that there was a mistake in the text. The temptation of the author or owner of the questionnaire is to go into the settings and change incorrect response options.

A classic mistake, because after the change, if you access the Graphical Summary of survey, we will see a situation like the following.

Rating Scale (a matrix of choices or a Likert scale)

As you see, even though the questionnaire is in Romanian language, there are several answers (134) and the percentage shown in the graphical representation is different from 100%.

Quick solution

When you change the options in a survey question, the old values are no longer displayed. The good news is that the data is in the database and can be extracted from there with a simple select statement.

1. Get the survey ID

Go into Survey Settings and copy from your browser’s address bar the last part of the URL. Sample: List=%7B8D291BD5-1C23-4C58-8CED-67E7D0914C2C%7D

You need only the string with bold into my sample. %7B = { and %7D = }

2. Identify the content database for your current site.

On a SharePoint server run in PowerShell: Get-SPContentDatabase -site <URL>

Sample result:

Id               : 7c750508-9196-4821-9670-59ea2cc03efd
Name             : P_PortalFEAA_Content
WebApplication   : SPWebApplication Name=P_Portal
Server           : bdsrv-02
CurrentSiteCount : 2

3. Get data back!

On database server open SQL Server Management Studio and open a new query window and run the next SQL statement:

SELECT *
  FROM [P_PortalFEAA_Content].[dbo].[UserData]
  where tp_ListId = ‘8D291BD5-1C23-4C58-8CED-67E7D0914C2C’
 

You will obtain a list of records with all your answers. Select all records, Copy and Paste into an Excel worksheet and manipulate data as you want.

Now all the answers are “back”.

Learnings

Never modify variants of questions from a survey after it has been published!

Dynamics CRM Server 2011 + SharePoint 2013

Integrarea este unul din conceptele care ne aduce cele mai chinuitoare experiențe tehnice. Geeks se găsesc la tot pasul gata pentru a partaja experiențele lor și a te ajuta să hecărești o integrare, dar în ”producție” nu poți merge cu astfel de ”soluții”. Ceea ce spune producătorul că merge, cu aia trebuie să te prezinți la client. Câteodată… :)

Acest articol este mai mult o colecție de concepte și legături vis-a-vis de integrare dintre cele două platforme. Am pornit de la necesitatea de business prin care stăpânul nostru Clientul poate să se integreze cât mai bine cu aplicația ta CRM, care teoretic este doar a ta. Având totuși tehnologii web la bază și CRM 2011 și SharePoint 2013 atunci putem lua în considerare faptul că le putem integra mai mult.

Așa cum pare înțelept am pornit de la specificațiile Microsoft Dynamics CRM 2011 System Requirements and Required Components  unde se specifică foarte clar că există o integrare între cele două la nivel de document management.

În articolul CRM 2011 and SharePoint 2010 Integration – Part 1 veți găsi pas cu pas modul în care se configurează suportul de documente din CRM pe SharePoint. După același tutorial am realizat și implementarea în 2013. Cei care vor fi curioși sau interesați, în partea a doua a articolului veți descoperi că se poate, în mod artizanal, configura și partea de raportare a datelor din CRM în SharePoint prin Excel Services. În partea a treia a integrării deja se intră în zona SF a programării, teritoriu, la care am rămas la IF-THEN-ELSE.

Așadar, nimic despre clienți și modul în care se pot ei integra cu CRM-ul firmei prin intermediul unui portal.

Legătura între cele două sisteme se configurează din setările CRM:

image

În SharePoint fiind necesară soluția crmlistcomponent pe care o puteți descărca și în limba română. Din cauza diferențelor de pachete lingvistice între CRM, SharePoint și soluție bibliotecile de documente le-am creat în Engleză. În figură puteți identifica principalele biblioteci de documente partajate între SharePoint și un cont de CRM.

image

Primul pas care at trebui realizat este crearea de șabloane (template-uri) pentru fiecare tip de document de pe bibliotecile respective în așa fel încât să putem crea documentații noi în mod rapid pentru fiecare client în parte.

Sigur vă puteți considera puțin ghinioniști dacă primiți un astfel de mesaj în CRM.

image

Asta înseamnă că trebuia să alegeți să lucrați cu SharePoint 2010. :)

Un alt pas în integrare, măcar la nivel de gestiune de documente este aceea de a publica SharePoint-ul în Extranet și a le permite clienților să lucreze pe documente comune cu noi, documente pe care le putem urmări ulterior din SharePoint sau CRM.

Practic, mai este mult de lucru pentru a integra cele două produse.

Pentru cei care doresc să realizeze un portal cu clienții, fără SharePoint, pot încerca una din soluțiile de mai jos:

1. La adresa Customer Portal Accelerator for Microsoft Dynamics CRM am găsit o soluție de Portal pentru clienți dezvoltată pe comunitatea Codeplex, dar care nu are nici o legătură cu SharePoint, dar este gratuită, chiar dacă destul de alambicată de configurat. Un alt minus este că nu are localizare în limba română.

2. În ”magazinul” Dynamics am găsit Customer Portal for Microsoft Dynamics CRM 2011  care folosește o soluție proprietară Microsoft pentru integrarea cu Clienții. Pare de încredere, dar prezentarea video este deplorabilă. De asemenea, nu este specificat în mod public prețul.

În loc de concluzie… cine vrea un CRM, are. Cine vrea mai mult trebuie să-și bată capul cu configurările! :)

Blog la WordPress.com.

SUS ↑