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.
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.
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.
$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
Qué hace aparecer el botón Guardar
Los cuatro, o Guardar sigue oculto:
| # | Propiedad (etiqueta en el generador) | Página de registro | Aplicación / Inicio / Experience |
|---|---|---|---|
| 1 | Registro principal | Automático (recordId) | Static Parent Record Id |
| 2 | Objeto relacionado (Child Object API Name) | Obligatorio | Obligatorio |
| 3 | Campo de fecha (Date Field API Name) | Obligatorio | Obligatorio |
| 4 | Campo de relación (Relationship Field API Name) | Obligatorio | Obligatorio |
Pon en Config Name una configuración del asistente y rellenará del 2 al 4 por ti.
Dónde colocarlo
| Superficie | Dónde se crea | Cómo se publica | Quién necesita acceso |
|---|---|---|---|
| Página de aplicación | Lightning App Builder, Nuevo, Página de aplicación | Actívala y añádela a una o varias aplicaciones (se convierte en una ficha) | Conjunto de permisos MultiDatePick - User |
| Página de inicio | Lightning App Builder, Nuevo, Página de inicio | Actívala como predeterminada de la organización o por aplicación en el Gestor de aplicaciones, Páginas | Conjunto de permisos MultiDatePick - User |
| Sitio de Experience Cloud | Experience Builder, en Custom Components | Publica el sitio | Perfil 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.
| # | Paso | Qué configurar |
|---|---|---|
| 1 | Permisos de objeto | Da 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. |
| 2 | Seguridad a nivel de campo | Lectura 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. |
| 3 | Regla de colaboración para invitados | Una 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. |
| 4 | Conjunto de permisos para invitados | Asigna 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. |
| 5 | Publicar y activar | Publicar y activar son pasos distintos. Los invitados solo ven un sitio activado. |
Dos ajustes de la organización que también necesitan los invitados
| Ajuste | Por qué |
|---|---|
| Propietario de registros predeterminado | Los 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 referenciados | Una 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 uso | Superficie | Componente | Añade |
|---|---|---|---|
| Centro de reservas interno («Reservar una sala») | Página de aplicación | Booking | Capacity Field (Campo de capacidad) para ver la disponibilidad en vivo («3/10») |
| Citas en autoservicio para clientes | Sitio de Experience Cloud | Booking o Date Time | Un flujo cuando el registro principal es el caso o el pedido de cada cliente |
| Disponibilidad personal / vacaciones | Página de inicio | Dates | Colores de estado: Pending o Approved de un vistazo |
| Inscripción a eventos y grupos | Sitio de Experience Cloud o página de aplicación | Date Time | Max Dates Allowed (Máximo de selecciones) limita las sesiones por persona |
| Voluntariado e inscripción en turnos | Sitio de Experience Cloud | Booking | Capacity Field para las «plazas libres», Status Colors (Colores de estado de reserva) para Open o Full |
| Hitos de proyecto | Página de aplicación | Dates o Date Time | Status Colors (Planned, In Progress, Done) y Two-Month View (Vista de dos meses) |
Solución de problemas
| Síntoma | Solución |
|---|---|
| Guardar no aparece nunca | Una de las cuatro está vacía. Fuera de una página de registro, suele ser Static Parent Record Id. |
| El calendario carga, pero no guarda | Falta 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 guardar | Errata 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 registros | Añ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 actualizar | Deja 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.