Próximamente en Salesforce AppExchange

Páginas de aplicación, páginas de inicio y sitios de Experience Cloud

MultiDatePick funciona en todas las superficies de Lightning, no solo en las páginas de registro. El truco es una sola propiedad: Static Parent Record Id.

Ver la configuración Solución de problemas

Por qué estas páginas son distintas

MultiDatePick guarda las fechas que eliges como registros en un objeto relacionado, cada uno vinculado a un registro principal. El componente solo necesita saber cuál.

  • En una página de registro (por ejemplo, un registro de evento), Salesforce pasa automáticamente al componente el Id del registro actual (el recordId). No hay nada más que configurar.
  • En una página de aplicación, una página de inicio o un sitio de Experience Cloud no hay «registro actual». Salesforce no pasa nada. Sin registro principal, el componente no tiene dónde guardar, así que oculta el botón Guardar a propósito en lugar de mostrar uno que falla al hacer clic.
La solución es la propiedad Static Parent Record Id. Pega en ella el Id de un registro principal concreto y el componente se comporta exactamente como si estuviera en la página de ese registro. Es una propiedad que defines en el generador. No tiene nada que ver con un recurso estático de Salesforce, que es una función distinta para archivos cargados.

Encontrarás Static Parent Record Id en el panel de propiedades después de arrastrar MultiDatePick a una página de aplicación o de inicio en Lightning App Builder, o a una página en Experience Builder.

Static Parent Record Id o un flujo: cuándo usar cada uno

Static Parent Record Id apunta el componente a un registro principal fijo, así que todos los visitantes ven el mismo registro. Es perfecto para algunos casos y un error para otros. Cuando el registro tiene que cambiar según el usuario o la visita, contrólalo desde un flujo de pantalla (Screen Flow). Coloca el componente en una pantalla del flujo y enlaza su Parent Record Id a una variable que el flujo resuelve en tiempo de ejecución.

Usa Static Parent Record Id cuando el registro es el mismo para todos

  • Una página de reservas pública: una página de «solicitar una cita» para invitados en la que todas las reservas se vinculan al mismo registro principal (una oficina, una sede o un recurso). Un Id fijo es justo lo que necesitas.
  • Un calendario para toda la organización: un único registro «Cierres de la empresa», o un recurso compartido que reserva todo el mundo, que nunca cambia según el usuario.
  • Un ancla fija en un panel de una página de aplicación o de inicio que apunta siempre al mismo registro maestro.

Regla práctica: recurre a Static Parent Record Id cuando la respuesta a «¿de quién es este registro?» sea «el mismo para todos».

Usa un flujo cuando el registro se elige en tiempo de ejecución

  • Registros por usuario: cada persona ve solo los suyos (por ejemplo, cada contratista llega a su propio calendario de vacaciones). El flujo hace un Get Records donde el propietario o un contacto vinculado = {!$User.Id}, guarda el Id y lo pasa al componente.
  • Desde la URL: una variable de entrada del flujo lee ?id=… del enlace, así que una sola página sirve para muchos registros. También funciona para invitados, sin iniciar sesión.
  • Elegir primero: la pantalla 1 permite buscar o elegir (un empleado, una sala, un cliente); la pantalla 2 muestra el calendario de ese registro.
Sitios para invitados: en un sitio público sin inicio de sesión, el «usuario» es un único invitado compartido, así que la resolución por usuario ($User) no sirve. O compartes un registro con Static Parent Record Id, o lo controlas con un parámetro de URL desde un flujo. Los calendarios realmente personales requieren usuarios con sesión iniciada.

Configuración en un minuto

Demo animada de la configuración con Config Name: copiar un nombre de configuración en el asistente de configuración de MultiDatePick, colocar el componente Resource Booking en una página de Lightning App Builder, pegar el Config Name e indicar el Static Parent Record Id, y aparece el calendario de reservas con todos los ajustes de la configuración
Copia el nombre de la configuración en el asistente, pégalo junto con el Id del registro principal y el calendario está listo. La configuración aporta todos los demás ajustes.

Qué hace aparecer el botón Guardar

Los cuatro, o Guardar sigue oculto:

#Propiedad (etiqueta en el generador)Página de registroAplicación / Inicio / Experience
1Registro principalAutomático (recordId)Static Parent Record Id
2Objeto relacionado (Child Object API Name)ObligatorioObligatorio
3Campo de fecha (Date Field API Name)ObligatorioObligatorio
4Campo de relación (Relationship Field API Name)ObligatorioObligatorio

Pon en Config Name una configuración del asistente y rellenará del 2 al 4 por ti.

Dónde colocarlo

SuperficieDónde se creaCómo se publicaQuién necesita acceso
Página de aplicaciónLightning App Builder, Nuevo, Página de aplicaciónActívala y añádela a una o varias aplicaciones (se convierte en una ficha)Conjunto de permisos MultiDatePick - User
Página de inicioLightning App Builder, Nuevo, Página de inicioActívala como predeterminada de la organización o por aplicación en el Gestor de aplicaciones, PáginasConjunto de permisos MultiDatePick - User
Sitio de Experience CloudExperience Builder, en Custom ComponentsPublica el sitioPerfil de miembro (o usuario invitado): lectura y creación en el objeto y los campos, más una regla de colaboración. Sitios públicos: lista para invitados

Consejo para la página de inicio: pon Existing Dates Mode (Modo de precarga) en readonly para tener una vista de solo lectura de «lo que hay programado».

Sitios públicos para invitados: la lista de cinco pasos

Una página pública de Experience Cloud permite reservar a cualquiera sin iniciar sesión. Completa los cinco pasos antes de probar como invitado. Los pasos 4 y 5 son los que más se olvidan. Míralo funcionando en la demo en vivo, un sitio público para invitados.

#PasoQué configurar
1Permisos de objetoDa al usuario invitado del sitio permiso de lectura, y de creación si los invitados envían datos, en cada objeto que usa el componente. Los invitados nunca pueden editar ni eliminar. Es una regla de la licencia de invitado de Salesforce para todas las aplicaciones, así que deja la edición y la cancelación en páginas que requieran inicio de sesión.
2Seguridad a nivel de campoLectura en cada campo que muestra el calendario. Edición en cada campo que escribe, incluidos los de estado, hora y relación. Incluye también los campos de horario comercial y de cierres del recurso.
3Regla de colaboración para invitadosUna regla de colaboración de lectura para el usuario invitado, para que los invitados vean los registros. El valor predeterminado externo de toda la organización del objeto debe ser Privado para que la regla se aplique. Una regla implementada como metadatos necesita un clic en Recalcular en Configuración de colaboración.
4Conjunto de permisos para invitadosAsigna MultiDatePick - Guest al usuario invitado del sitio. Incluye el acceso a las clases de Apex con las que el calendario carga sus datos, además de los permisos de lectura y creación que puede tener un invitado en los objetos de MultiDatePick.
5Publicar y activarPublicar y activar son pasos distintos. Los invitados solo ven un sitio activado.

Dos ajustes de la organización que también necesitan los invitados

AjustePor qué
Propietario de registros predeterminadoLos invitados no pueden ser propietarios de registros, así que Salesforce asigna cada reserva de invitado a un propietario predeterminado. Configúralo en Espacios de trabajo de Experience, Administración, Preferencias.
Acceso de lectura a los registros referenciadosUna reserva que apunta a un recurso o a un registro principal necesita que el invitado tenga acceso de lectura a ese registro; si no, el guardado falla con un error de referencia cruzada. Usa un objeto personalizado para todo lo que reserven los invitados: el acceso de invitados a contactos y cuentas está muy restringido.

¿Preparas una página de reservas pública? Autoservicio de reservas en un sitio de Salesforce Experience Cloud explica qué pueden hacer los invitados y qué vista mostrarles.

Seis casos de uso fuera de la página de registro

Caso de usoSuperficieComponenteAñade
Centro de reservas interno («Reservar una sala»)Página de aplicaciónBookingCapacity Field (Campo de capacidad) para ver la disponibilidad en vivo («3/10»)
Citas en autoservicio para clientesSitio de Experience CloudBooking o Date TimeUn flujo cuando el registro principal es el caso o el pedido de cada cliente
Disponibilidad personal / vacacionesPágina de inicioDatesColores de estado: Pending o Approved de un vistazo
Inscripción a eventos y gruposSitio de Experience Cloud o página de aplicaciónDate TimeMax Dates Allowed (Máximo de selecciones) limita las sesiones por persona
Voluntariado e inscripción en turnosSitio de Experience CloudBookingCapacity Field para las «plazas libres», Status Colors (Colores de estado de reserva) para Open o Full
Hitos de proyectoPágina de aplicaciónDates o Date TimeStatus Colors (Planned, In Progress, Done) y Two-Month View (Vista de dos meses)

Solución de problemas

SíntomaSolución
Guardar no aparece nuncaUna de las cuatro está vacía. Fuera de una página de registro, suele ser Static Parent Record Id.
El calendario carga, pero no guardaFalta acceso al objeto. Asigna el conjunto de permisos MultiDatePick - User; en un sitio, da lectura y creación al perfil de miembro o de invitado.
«Field does not exist» (el campo no existe) al guardarErrata en el nombre de API. Cópialo desde Configuración, Gestor de objetos. El prefijo de espacio de nombres solo se usa para objetos de otro paquete (p. ej. acme__Visit_Date__c).
Los miembros del sitio no ven sus registrosAñade una regla de colaboración (o relaja los valores predeterminados de toda la organización) en el objeto hijo.
Las fechas guardadas desaparecen al actualizarDeja Load Existing Dates (Precargar fechas existentes) activado (lo está por defecto).
Static Parent Record Id «no es válido»Usa un Id real de 15 o 18 caracteres del objeto principal, al que apunta el campo de relación.

¿Otra cosa? Solución de problemas recoge todos los mensajes de configuración con captura y solución.

¿Tienes otro problema que no aparece aquí?

Envíanos tus preguntas. Te ayudamos encantados.

Escribe a Support@MultiDatePick.com Volver a Primeros pasos Prueba la demo en vivo