SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

martes, 16 de abril de 2019

¿Cómo agregar un agrupamiento a la vista predeterminada en SharePoint 2010 con c#?

SPList listaSBNueva = oWebsite.Lists["Subfrentes"];
SPView vistaSB = listaSBNueva.DefaultView;
vistaSB.Query = "<GroupBy Collapse=\"FALSE\" GroupLimit=\"100\"><FieldRef Name=\"Frente\" Ascending=\"TRUE\" /></GroupBy><OrderBy><FieldRef Name=\"Frente\" Ascending=\"TRUE\"/></OrderBy>"; ;
vistaSB.Update();

El resultado:


lunes, 25 de marzo de 2019

Al menos uno de los tipos de campo no se ha instalado correctamente. Vaya a la página de configuración de la lista para eliminar estos campos

El siguiente error es bastante común cuando estamos programando usando c# en SharePoint:

Al menos uno de los tipos de campo no se ha instalado correctamente. Vaya a la página de configuración de la lista para eliminar estos campos.

En inglés:

One or more field types are not installed properly...

La mayoría de las veces el problema es que no estamos usando el nombre interno del campo. O estamos usando el que nosotros creemos que es el nombre interno del campo, pero en realidad SharePoint lo cambió por otro. Esto se debe a que:
  1. Ya existe un campo con ese nombre
  2. El campo es muy largo y se trunca
  3. O se reemplazan caracteres especiales
Sin embargo, existe una situación un poco más compleja de detectar.

Supongamos que estamos modificando un sólo campo desde C#:

Ejemplo:

itemHito["Flag_Pantalla_Medida"] = "SI"
itemHito.Update();

Obtenemos el error, pero estamos seguros que el nombre del campo es correcto.
Lo que puede suceder es que exista un evento que haga referencia a otro campo que no estamos proporcionando, por ejemplo:

public override void ItemUpdating(SPItemEventProperties properties)

(...)

nuevo = properties.AfterProperties["Estado_Cumplimiento"];

Esa línea de código produce el error. Para resolverlo, se debe agregar el campo "Estado_Cumplimiento" al momento de hacer el update.

Hasta la próxima!

martes, 19 de septiembre de 2017

Contrátame

Amigos lectores. 

Si necesitan contratarme para una consulta, proyecto o trabajo por hora, pueden hacerlo desde cualquier parte del punto a través de Workana.


Saludos!


martes, 11 de julio de 2017

MVP año 7 2017-2018



martes, 4 de julio de 2017

Impedir caracteres especiales con una validación de columna

Les paso este interesante código que se puede agregar en una validación de columna para impedir el ingreso de caracteres especiales:

=AND(IF(ISERROR(FIND(",",  [ColumnName])),TRUE),IF(ISERROR(FIND("&",  [ColumnName])),TRUE),IF(ISERROR(FIND("!",  [ColumnName])),TRUE),IF(ISERROR(FIND("@",  [ColumnName])),TRUE),IF(ISERROR(FIND("~",  [ColumnName])),TRUE),IF(ISERROR(FIND("#",  [ColumnName])),TRUE),IF(ISERROR(FIND("$",  [ColumnName])),TRUE),IF(ISERROR(FIND("%",  [ColumnName])),TRUE),IF(ISERROR(FIND("*",  [ColumnName])),TRUE),IF(ISERROR(FIND("(",  [ColumnName])),TRUE),IF(ISERROR(FIND(")",  [ColumnName])),TRUE),IF(ISERROR(FIND("-",  [ColumnName])),TRUE),IF(ISERROR(FIND("+",  [ColumnName])),TRUE),IF(ISERROR(FIND(":",  [ColumnName])),TRUE),IF(ISERROR(FIND(";",  [ColumnName])),TRUE),IF(ISERROR(FIND("[",  [ColumnName])),TRUE),IF(ISERROR(FIND("]",  [ColumnName])),TRUE),IF(ISERROR(FIND(".",  [ColumnName])),TRUE),IF(ISERROR(FIND("/",  [ColumnName])),TRUE),IF(ISERROR(FIND("\",  [ColumnName])),TRUE))

miércoles, 28 de junio de 2017

Vista BY MY GROUPS (lista TASKS)

Hace poco hicieron una pregunta en https://sharepoint.stackexchange.com/questions/219108/show-all-tasks-assigned-to-me-including-those-assigned-to-me-and-multiple-users/219212#219212 y me pareció un buen momento para recordar que la hay una vista prearmada en la lista de tareas que permite filtrar:
  • Por las tareas asignadas a mi
  • Por las tareas asignadas a los grupos a los que pertenezco
Se llama "Por mis grupos" y pueden verla en esta imagen:




jueves, 15 de junio de 2017

Validar que un campo fecha se encuentre entre hoy 4 meses futuros

Simplemente creamos una validación de columna como esta:

=AND(date1>TODAY();date1<(TODAY()+120))


lunes, 12 de junio de 2017

Método simple para hacer un campo obligatorio sólo en la edición - Alternativa 2

En un artículo anterior mostré cómo resolver este tema con una validación de lista


Otra opción es hacerlo con JSLink. El resultado es:



Les dejo el código:

(function () {
var overrideTest2Ctx = {};
overrideTest2Ctx.Templates = {};
overrideTest2Ctx.Templates.Fields = {
'test_x0020_2': { 'EditForm': hacerRequerido }
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideTest2Ctx);
})();

function hacerRequerido(ctx) {

    var formCtx = SPClientTemplates.Utility.GetFormContextForCurrentField(ctx);
var validators = new SPClientForms.ClientValidation.ValidatorSet();
validators.RegisterValidator(new SPClientForms.ClientValidation.RequiredValidator());
formCtx.registerClientValidator(formCtx.fieldName, validators);
return SPFieldText_Edit(ctx);
}


Más información en:




viernes, 9 de junio de 2017

JSLink Ejemplo simple en un Formulario

Supongamos que queremos simplemente que una columna utilice color rojo tal como se ve en esta imagen:



Simplemente creamos el siguiente script JSLINK (haciendo especial hincapié en lo que resalté en negrita):

(function () {
var overrideCtx = {};
overrideCtx.Templates = {};
overrideCtx.Templates.Fields = {
'test_x0020_1': { 'DisplayForm': pintarDeRojo }
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();

function pintarDeRojo(ctx) {

    var fieldVal = ctx.CurrentItem[ctx.CurrentFieldSchema.Name];
    var test1 = fieldVal.toString();

    var html = "<div style='color: red;'>" + test1 + "</div>";

    return html;
}

JSLink Ejemplo simple en una Vista

Supongamos que queremos simplemente que una columna utilice color rojo tal como se ve en esta imagen:


Simplemente creamos el siguiente script (haciendo especial hincapié en lo que resalté en negrita):

(function () {
var overrideCtx = {};
overrideCtx.Templates = {};
overrideCtx.Templates.Fields = {
'test_x0020_1': { 'View': pintarDeRojo }
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();

function pintarDeRojo(ctx) {

    var fieldVal = ctx.CurrentItem[ctx.CurrentFieldSchema.Name];
    var test1 = fieldVal.toString();

    var html = "<div style='color: red;'>" + test1 + "</div>";

    return html;
}

Luego subimos el script en una librería:


Y finalmente editamos la webpart de la vista para que haga referencia al script: