10 janvier 2012

INFOPATH 2010 : Optimiser les performances du code managé

Aujourd'hui, voici un petit article concernant l'optimisation de vos formulaires InfoPath comprenant du code managé.
Il peut arriver que vous ayez des actions assez longues à réaliser sur le XML de votre formulaire.
Je penses notamment à l'ajout automatique de lignes dans une section extensible.

Les vues InfoPath étant liées directement au XML, une modification dans ce dernier entraine une mise à jour de la vue.
Pour s'abstenir de ce genre de comportement, il est possible d'utiliser la méthode DisableAutoUpdate.
Cette méthode permet d'attendre la fin des modifications du XML avant de rafraichir la vue InfoPath (ce qui permet de gagner un gain non négligeable de performances).

Pour se faire, il faut utiliser la méthode de la manière suivante:

// Décorrelation de la vue avec le XML
this.CurrentView.DisableAutoUpdate();

// Modification sur le XML (par exemple ajout de 100 lignes dans un tableau extensible)
...

// Corrélation de la vue avec le XML
this.CurrentView.EnableAutoUpdate();


Vous pourrez trouver un article du MSDN concernant cette méthode à cette adresse:
http://msdn.microsoft.com/en-us/library/microsoft.office.infopath.view.disableautoupdate(v=office.11).aspx

Attention toutefois à bien repositionner le "EnableAutoUpdate() à la fin du traitement sous peine d'avoir de sérieux dysfonctionnements dans le formulaire...

8 janvier 2012

SharePoint 2010 : Changer l'ordre des propriétés utilisateur

En utilisant SharePoint 2010, on est souvent amené à travailler avec le service applicatif "Profil Utilisateur".
Il est possible d'enrichir les propriétés avec des propriétés personnalisées.
L'interface se présente de la manière suivante:


Les petite flêches bleus permettent de remonter ou descendre les propriétés dans le profil utilisateur.
Cela permet même de les déplacer à travers différentes catégories (Informations de base, Détails,...).

Autant dire que si vous souhaitez déplacer une propriété que vous venez de rajouter vers le haut du profil utilisateur, il va falloir vous armer de patience.
Heureusement, il existe une commande powershell permettant de positionner les propriétés exactement à l'emplacement que vous souhaitez.
La commande PowerShell se présente de la manière suivante:
$mySite = "http://mysite"
$site = Get-SPSite $mySite
$context = Get-SPServiceContext $site
$upConfigManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager($context)
$profilePropertyManager = $upConfigManager.get_ProfilePropertyManager()
$upConfigManager.GetProperties().SetDisplayOrderByPropertyName("PutYourInternalPropertyName", PositionNumber)
$upConfigManager.CommitDisplayOrder();

Il suffira de changer dans ce script l'url du site, le nom interne de la propriété et la position à laquelle placer la propriété.

SHAREPOINT 2010 : Recherche sur propriété

Aujourd'hui un petit post sur la recherche dans SharePoint et un petit problème de configuration auquel j'ai du faire face.
Considérons qu'un utilisateur veut réaliser une recherche d'utilisateurs sur une propriété "Numéro de téléphone".
Dans ce cas la, la syntaxe de la recherche SharePointvveut que l'on écrive la requête suivante "WorkPhone:0559*".
Malheureusement cette requête ne renvoie aucun résultat avec la configuration native de la recherche.

Cela provient d'un défaut de paramètrage de la recherche SharePoint.
Pour pouvoir chercher de cette façon, il faut que la propriété "WorkPhone" soit désignée en tant que FullTextQueriable.
Pour cela, il faut utiliser le code PowerShell suivant:

$app=Get-SPEnterpriseSearchServiceApplication "Search Service Application"
$mp=Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $app -Identity WorkPhone
$mp.FullTextQueriable=$true
$mp.Update()

Ensuite il faudra réinitialiser l'index de recherche puis lancer une recherche complète (en non incrémentale) sur votre source de recherche.
Vous pourrez à présent recherche sur la propriété "WorkPhone".