Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Hace referencia a: Outlook 2013 | Outlook 2016
La propiedad PidTagUserFields de un mensaje contiene una secuencia binaria, FolderUserFields, que contiene las definiciones de campo definidas por el usuario de la carpeta. En este tema se describen las estructuras de flujo para las definiciones de campo definidas por el usuario de carpeta.
Una estructura de flujo FolderUserFields consta de una estructura FolderUserFieldsA o una estructura FolderUserFieldsA seguida de una estructura FolderUserFieldsW.
Los elementos de datos de esta secuencia se almacenan inmediatamente después entre sí en el orden especificado siguiente:
FolderUserFieldsAnsi: una estructura de flujo FolderUserFieldsA.
FolderUserFieldsUnicode (opcional): estructura de flujo FolderUserFieldsW.
La presencia de FolderUserFieldsUnicode se detecta cuando la longitud total de FolderUserFields es mayor que la longitud de FolderUserFieldsAnsi.
Importante
FolderUserFieldsAnsi se usa para la compatibilidad con versiones anteriores, no Unicode, de clientes MAPI, por lo que si FolderUserFieldsUnicode está presente, se omite el contenido de FolderUserFieldsAnsi. Para evitar la posible pérdida de datos en la conversión ANSI, al crear un flujo FolderUserFields siempre se incluye la parte FolderUserFieldsW.
FolderUserFieldsA Stream Structure
Una estructura de flujo FolderUserFieldsA es una matriz de estructuras de flujo FolderFieldDefinitionA que contienen definiciones para todos los campos definidos por el usuario en una carpeta de Outlook, a menos que la parte FolderUserFieldsW de la estructura FolderUserFields se invalide.
Los elementos de datos de esta secuencia se almacenan en orden de bytes little-endian, inmediatamente después entre sí en el orden especificado siguiente:
FieldDefinitionCount: DWORD (4 bytes), el número de definiciones de campo de esta secuencia. Este es el recuento de elementos de la matriz FieldDefinitions .
FieldDefinitions: matriz de estructuras de flujo FolderFieldDefinitionA. El recuento de esta matriz es igual al elemento de datos FieldDefinitionCount .
A menos que la parte FolderUserFieldsW de la estructura FolderUserFields invalide esta clase FolderUserFieldsA, la matriz FieldDefinitions debe ser "terminada en null" al tener el último campo Common.FieldType del elemento FolderFieldDefinitionA igual a ftNull.
FolderUserFieldsW Stream Structure
Una estructura de flujo FolderUserFieldsW es una matriz de estructuras de flujo FolderFieldDefinitionW que contienen definiciones para todos los campos definidos por el usuario en una carpeta de Outlook.
Los elementos de datos de esta secuencia se almacenan en orden de bytes little-endian, inmediatamente después entre sí en el orden especificado siguiente:
FieldDefinitionCount: DWORD (4 bytes), el número de definiciones de campo de esta secuencia. Este es el recuento de elementos de la matriz FieldDefinitions .
FieldDefinitions: matriz de estructuras de flujo FolderFieldDefinitionW. El recuento de esta matriz es igual al elemento de datos FieldDefinitionCount .
La matriz FieldDefinitions debe ser "terminada en null" teniendo su último campo Common.FieldType del elemento FolderFieldDefinitionW igual a ftNull.
FolderFieldDefinitionA Stream Structure
Una estructura de flujo FolderFieldDefinitionA contiene una definición de un campo definido por el usuario con el nombre de campo almacenado en ANSI.
Los elementos de datos de esta secuencia se almacenan en orden de bytes little-endian, inmediatamente después entre sí en el orden especificado siguiente:
FieldType: FldType (4 bytes), el tipo de este campo.
FieldNameLength: WORD (2 bytes), el número de elementos de la matriz FieldName .
FieldName: matriz de CHAR. Esta es la representación ansi CP_ACP página de códigos del nombre del campo. El recuento de esta matriz es igual a FieldNameLength. El nombre del campo debe cumplir las restricciones del parámetro Name, tal como se especifica en el método UserProperties.Add .
Nota:
Por motivos de compatibilidad heredada, Es posible que Outlook pueda controlar algunos valores FieldName que no cumplen estas restricciones, pero estos casos no están cubiertos por este tema.
Común: una estructura de flujo FolderFieldDefinitionCommon.
FolderFieldDefinitionW Stream Structure
Una estructura de flujo FolderFieldDefinitionW contiene una definición de un campo definido por el usuario con el nombre de campo almacenado en Unicode.
Los elementos de datos de esta secuencia se almacenan en orden de bytes little-endian, inmediatamente después entre sí en el orden especificado siguiente:
FieldType: FldType (4 bytes), el tipo de este campo.
FieldNameLength: WORD (2 bytes), el número de elementos de la matriz FieldName .
FieldName: matriz de WCHAR. Esta es la representación Unicode (UTF-16) del nombre del campo. El recuento de esta matriz es igual a FieldNameLength. El nombre del campo debe cumplir las restricciones del parámetro Name, tal como se especifica en el método UserProperties.Add .
Nota:
Por motivos de compatibilidad heredada, Es posible que Outlook pueda controlar algunos valores FieldName que no cumplen estas restricciones, pero estos casos no están cubiertos por este tema.
Común: una estructura de flujo FolderFieldDefinitionCommon.
FldType (enumeración)
Los valores de enumeración FldType se enumeran en la tabla siguiente.
Nombre | Valor | Significado |
---|---|---|
ftNull |
0x0 |
Este tipo de campo se usa para terminar en null una matriz de definiciones de campo. |
ftString |
0x1 |
Texto |
ftInteger |
0x3 |
Entero |
ftTime |
0x5 |
Fecha y hora |
ftBoolean |
0x6 |
Sí/No |
ftDuration |
0x7 |
Duración |
ftMultiString |
0xB |
Palabras clave |
ftFloat |
0xC |
Número o porcentaje |
ftCurrency |
0xE |
Moneda |
ftCalc |
0x12 |
Fórmula |
ftSwitch |
0x13 |
Combinación de tipo que muestra solo el primer campo no vacío, omitiendo los posteriores. |
ftConcat |
0x17 |
Combinación de campos de combinación de tipos y fragmentos de texto entre sí. |
FolderFieldDefinitionCommon Stream Structure
Una estructura de flujo FolderFieldDefinitionCommon contiene los datos de una definición de campo definida por el usuario que es común tanto a FolderFieldDefinitionA como a FolderFieldDefinitionW.
Los elementos de datos de esta secuencia se almacenan en orden de bytes little-endian, inmediatamente después entre sí en el orden especificado siguiente:
PropSetGuid: GUID (16 bytes), el GUID del conjunto de propiedades del nombre de propiedad MAPI correspondiente del campo de carpeta. El valor de este campo debe ser igual a PS_PUBLIC_STRINGS, a menos que el tipo de campo sea ftNone , en cuyo caso el valor de este campo debe ser igual a GUID_NULL.
Nota:
Por motivos de compatibilidad heredada, Es posible que Outlook pueda controlar algunos valores PropSetGuid que no cumplen esta restricción, pero estos casos no están incluidos en este tema.
fcapm: DWORD (4 bytes), una combinación de cero o más marca los valores de los cuales y los significados se enumeran en la tabla siguiente. Las marcas con el mismo valor tienen significados que dependen del tipo del campo, es decir, el valor FldType.
Nombre de marca Valor Significado FCAPM_CAN_EDIT 0x00000001 El campo es editable. FCAPM_CAN_SORT 0x00000002 El campo se puede ordenar. FCAPM_CAN_GROUP 0x00000004 El campo se puede agrupar. FCAPM_MULTILINE_TEXT 0x00000100 El campo puede contener varias líneas de texto. FCAPM_PERCENT 0x01000000 Este campo del tipo ftFloat es un campo de porcentaje. FCAPM_DATEONLY 0x01000000 Este campo del tipo ftTime es un campo de hora de solo fecha. FCAPM_UNITLESS 0x01000000 Para este campo del tipo ftInteger, no se permite ninguna unidad en formato de presentación; por ejemplo, formatos como "Equipo - 640 K..." no se permiten. FCAPM_CAN_EDIT_IN_ITEM 0x80000000 El campo se puede editar en el elemento: esto es específicamente para formularios personalizados. dwString: DWORD (4 bytes). Consulte la primera nota siguiente.
dwBitmap: DWORD (4 bytes). Consulte la primera nota siguiente.
dwDisplay: DWORD (4 bytes). Consulte la primera nota siguiente.
iFmt: INT (4 bytes). Para los tipos de campo que tienen el cuadro combinado "Formato:" en los cuadros de diálogo "Nuevo campo", "Editar campo" y "Propiedades de campo", el índice basado en 0 del formato seleccionado en ese cuadro combinado. Para los tipos de campo sin ese cuadro combinado, debe ser 0. El valor del campo junto con el tipo de campo determinan de forma única los valores de los campos dwString, dwBitmap y dwDisplay , consulte la primera nota siguiente.
wszFormulaLength: WORD (2 bytes), el número de elementos de la matriz wszFormulaLength .
wszFormulaLength: matriz de WCHAR. Esta es la representación Unicode (UTF-16) de la cadena de fórmula del campo en su formato estándar. Consulte la segunda nota siguiente para obtener la descripción de los formatos estándar y de interfaz de usuario de la fórmula de un campo. El recuento de esta matriz es igual a wszFormulaLength. La cadena de fórmula debe ser una cadena vacía a menos que el tipo de campo sea ftCalc, ftSwitch o ftConcat.
Nota:
Aunque los valores de dwString, dwBitmap y dwDisplay se determinan de forma única en función del valor fldType y del valor de iFmt , que son redundantes, sus valores correctos siguen siendo necesarios para el procesamiento correcto de la definición de campo por parte de Outlook. No hay una descripción sencilla del algoritmo que realiza esta determinación.
Por lo tanto, para averiguar qué valores dwString, dwBitmap y dwDisplay corresponden a un valor fldType determinado y a un valor de iFmt , realice una prueba creando un campo definido por el usuario de ese tipo y con ese formato seleccionado en el cuadro combinado Formato , suponiendo su aplicabilidad, inspeccione la secuencia FolderUserFields resultante que Outlook crea para ese campo definido por el usuario.
La fórmula del campo en su formato de interfaz de usuario se edita en el cuadro de texto Fórmula de los cuadros de diálogo Nuevo campo, Editar campo y Propiedades de campo para el campo definido por el usuario. El algoritmo para convertir una fórmula del formato de interfaz de usuario al formato estándar depende del tipo de campo, tal como se describe a continuación:
Para los campos de tipos ftCalc y ftSwitch, el formato estándar de los campos integrados, que las propiedades MAPI correspondientes no tienen propiedades con nombre del tipo MNID_STRING, se obtiene reemplazando fragmentos de nombre de campo, es
[<field_name>]
decir, por fragmentos[_<field_dispid_decimal>]
.Por ejemplo, si el formato de interfaz de usuario de una fórmula para un campo del tipo Formula, que es ftCalc, con el idioma de la interfaz de usuario de Office en inglés de EE. UU., es
[Business Phone] & [My custom field]
, dondeMy custom field
es el nombre de un campo definido por el usuario, el formato estándar de dicha fórmula sería[_14856] & [My custom field]
.Para los campos del tipo ftConcat, el formato estándar se obtiene realizando lo siguiente:
- Truncar el espacio en blanco inicial y final.
- Analice la fórmula en una secuencia de fragmentos de los dos tipos siguientes:
- Nombre de campo entre corchetes, es decir,
[<field_name>]
. - Subcadena que no contiene corchetes.
Asegúrese de que no hay dos fragmentos del segundo tipo adyacentes en la secuencia. Si la fórmula no se puede analizar de esta manera, se considera no válida.
- Nombre de campo entre corchetes, es decir,
- Realice el mismo reemplazo para fragmentos del primer tipo que para los campos ftCalc y ftSwitch .
- Para cada fragmento del segundo tipo, escape todos los caracteres de comilla doble ("""), si los hubiera, con dos caracteres de comilla doble consecutivos y escríbalos entre comillas dobles.
- Inserte una cadena de y comercial (
&
) entre cada par de fragmentos adyacentes.
Por ejemplo, con el idioma de la interfaz de usuario de Office en inglés de EE. UU., si el formato de interfaz de usuario de una fórmula para un campo del tipo ftConcat es
text1 [Business Phone] "text2" [My custom field]
, dondeMy custom field
es el nombre de un campo definido por el usuario, el formato estándar para dicha fórmula sería""text1" & [_14856] & """text2""" & [My custom field]"
.