Pavel Novotný

.NET Framework, SharePoint, Dynamics CRM, RC Helicopters, Honda VFR CrossRunner

SharePoint: návod jak zjistit ve které knihovně je nejvíce položek/dokumentů

Stačí nad obsahovou databází SharePointu vykonat dotaz:

select webs.Title,webs.FullUrl, tp_Title,tp_ServerTemplate,UserDataCount,DocsCount
from AllLists left outer join
(select tp_ListId, COUNT(*) as UserDataCount from AllUserData
group by tp_ListId ) E On E.tp_ListId = AllLists.tp_ID
left outer join
(select ListId, COUNT(*) as DocsCount from dbo.Docs
group by ListId ) P ON AllLists.tp_ID = P.ListId
left outer join Webs ON AllLists.tp_WebId = Webs.id
order by DocsCount desc

výsledek:

image

SQL LINQ vs. Guid.Empty

Nikdy jsem na to zatím nenarazil, nebo si toho minimálně nevšimnul, ale v LINQ dotazu platí následující:

Guid.Empty != new Guid("00000000-0000-0000-0000-000000000000")

konkrétní příklad:

var a = query.Where(row => row.InvoiceId == Guid.Empty);

var b = query.Where(row => row.InvoiceId == new Guid("00000000-0000-0000-0000-000000000000"));

logicky bych čekal, že výsledek bude identický, tedy a i b budou obsahovat kolekci identických objektů, ale výsledek je ten, že a obsahuje prázdnou kolekci, b obsahuje všechny záznamy kde je InvoiceId rovno Guid.Empty, což je sice to samé, LINQ to ale zjevně interpretuje jinak a první příklad je tedy nefunkční, respektive nevrací očekáváné výsledky.

Na otázku PROČ jsem nenašel žádnou smysluplnou odpověď. BUG?

SharePoint 2013 – ve znamení zásadních koncepčních změn

Stále ještě není SharePoint 2013 v RTM verzi, některé změny jsou však již definitivní a velká část z nich také ovlivní dosavadní chápání vývoje na této platformě, nejen vždy pozitivně. Architektura zůstává v podstatě bez změn, stále je SP strukturovaný jako farma, webová aplikace, kolekce webů, weby, servisní aplikace, joby atd. Dokonce i UI je z pohledu vývojáře nezměněné, pořád se staví všechno na ribbonu a CustomActions – velký důraz je nyní ale kladen na asynchronní zpracování na klientské straně, tedy přímo v browseru – nový typ aplikací pro SharePoint 2013 nemá přístup k serverovému API, veškeré akce probíhají na klientské straně – a to včetně renderingu webpart – to samozřejmě zásadním způsobem boří dosud zažité způsoby vývoje v .NET/C#, nynější verze nutí vývojáře k javascriptu, REST, JSON, potažmo WCF – což pro jednoduché aplikace může znamenat nepodstatné zvýšení pracnosti.

Více...

CRM 2011: User does not have send-as privilege. (ErrorCode: -2147203059) exception.

V CRM 2011 je defaultně zakázáno odesílání emailů, kde zvolený odesílatel je jiný uživatel než aktuálně přihlášený. To samo o sobě je logické, pokud však potřebujete udělat pracovní proces, který generuje emaily a automaticky je rovnou I odesílá, narazíte hned na tento problém, kdy uvnitř workflow vznikne výjimka s chybovým hlášením User does not have send-as privilege. (ErrorCode: -2147203059).

Cesty jak z toho ven jsou dvě:

Více...

HTML5 MasterPage (V5) pro SharePoint 2010

Kyle Schaeffer vytvořil a dal k dispozici jednoduchou SharePoint MasterPage  postavenou na HTML5 a CSS3, nazval jí v konvenci SharePointu jako “v5.master”, určitě stojí za shlédnutí pro inspiraci. Šablona používá responsivní design, tedy vzhled, který se automaticky přizpůsobuje velikosti displaye zařízení uživatele.

http://kyleschaeffer.com/sharepoint/v5-responsive-html5-master-page/

Zobrazení pro desktopy/notebooky:

v5-large

Zobrazení pro tablety:

Více...