Páginas de aplicativo, páginas iniciais e sites do Experience Cloud
O MultiDatePick funciona em todas as páginas Lightning, não só nas de registro. O segredo é uma propriedade: Static Parent Record Id.
Por que essas páginas são diferentes
O MultiDatePick salva as datas escolhidas como registros num objeto relacionado, cada um vinculado a um registro pai. O componente só precisa saber qual é o pai.
- Numa página de registro (por exemplo, um registro de Evento), o Salesforce entrega automaticamente ao componente o Id do registro atual (o
recordId). Não há nada a mais para configurar. - Numa página de aplicativo, página inicial ou site do Experience Cloud, não existe "registro atual". O Salesforce não passa nada. Sem pai, o componente não tem onde salvar, então ele oculta o botão Salvar de propósito em vez de mostrar um botão que falha ao ser clicado.
O Static Parent Record Id fica no painel de propriedades depois que você arrasta o MultiDatePick para uma página de aplicativo ou página inicial no Lightning App Builder, ou para uma página no Experience Builder.
Static Parent Record Id ou fluxo: quando usar cada um
O Static Parent Record Id aponta o componente para um pai fixo, então todo visitante vê o mesmo registro. Isso é perfeito em alguns casos e errado em outros. Quando o registro precisa mudar por usuário ou por visita, controle-o por um fluxo de tela (Screen Flow). Coloque o componente numa tela do fluxo e vincule o Parent Record Id dele a uma variável que o fluxo resolve em tempo de execução.
Use o Static Parent Record Id quando o registro é o mesmo para todos
- Uma página pública de agendamento: uma página "solicite um atendimento" para convidados, em que toda reserva fica vinculada ao mesmo registro pai (um escritório, um local ou um recurso). Um Id fixo é exatamente o que se precisa.
- Um calendário para toda a organização: um único registro "Fechamentos da empresa", ou um recurso compartilhado que todos reservam, que nunca muda por usuário.
- Uma âncora fixa de painel numa página de aplicativo ou inicial que sempre aponta para o mesmo registro principal.
Regra prática: use o Static Parent Record Id quando a resposta para "de quem é este registro?" for "o mesmo para todo mundo".
Use um fluxo quando o registro é escolhido em tempo de execução
- Registros por usuário: cada pessoa vê só o seu (por exemplo, cada prestador cai no próprio calendário de folgas). O fluxo faz um Obter registros em que o proprietário ou um Contato vinculado =
{!$User.Id}, guarda o Id e o passa ao componente. - Pelo URL: uma variável de entrada do fluxo lê
?id=…do link, então uma única página atende muitos registros. Funciona também para convidados, sem login. - Escolher primeiro: a tela 1 deixa o usuário pesquisar ou escolher (um funcionário, uma sala, um cliente); a tela 2 mostra o calendário daquele registro.
$User) não se aplica. Ou compartilhe um registro pelo Static Parent Record Id, ou controle-o por um parâmetro de URL num fluxo. Calendários realmente individuais exigem usuários com login.Configuração em um minuto
O que faz o botão Salvar aparecer
Os quatro, ou o Salvar continua oculto:
| # | Propriedade (rótulo no construtor) | Página de registro | Aplicativo / inicial / Experience |
|---|---|---|---|
| 1 | Registro pai | Automático (recordId) | Static Parent Record Id |
| 2 | Objeto Relacionado (Child Object API Name) | Obrigatório | Obrigatório |
| 3 | Campo de Data (Date Field API Name) | Obrigatório | Obrigatório |
| 4 | Campo de Relacionamento (Relationship Field API Name) | Obrigatório | Obrigatório |
Defina o Config Name com uma configuração do Assistente de Configuração e ele preenche os itens 2 a 4 para você.
Onde colocar
| Página | Onde criar | Como publicar | Quem precisa de acesso |
|---|---|---|---|
| Página de aplicativo | Lightning App Builder, Novo, Página de aplicativo | Ative e adicione a um ou mais aplicativos (ela vira uma guia) | Conjunto de permissões MultiDatePick - User |
| Página inicial | Lightning App Builder, Novo, Página inicial | Ative como padrão da organização ou por aplicativo em Gerenciador de aplicativos, Páginas | Conjunto de permissões MultiDatePick - User |
| Site do Experience Cloud | Experience Builder, em Componentes personalizados | Publique o site | Perfil de membro (ou usuário convidado): leitura e criação no objeto e nos campos, mais uma regra de compartilhamento. Sites públicos: checklist do convidado |
Dica para a página inicial: defina Existing Dates Mode como readonly para uma visão somente leitura do que está agendado.
Sites públicos para convidados: o checklist de cinco etapas
Uma página pública do Experience Cloud permite que qualquer pessoa reserve sem fazer login. Faça as cinco etapas antes de testar como convidado. As etapas 4 e 5 são as mais esquecidas. Veja funcionando na demo ao vivo, um site público para convidados.
| # | Etapa | O que definir |
|---|---|---|
| 1 | Permissões de objeto | Dê ao usuário convidado do site Leitura, e Criação se os convidados enviarem dados, em cada objeto que o componente usa. Convidados nunca podem Editar nem Excluir. É uma regra da licença de convidado do Salesforce para qualquer aplicativo, então deixe editar e cancelar em páginas com login. |
| 2 | Segurança em nível de campo | Leitura em todo campo que o calendário mostra. Edição em todo campo que ele grava, inclusive os campos de status, horário e relacionamento. Inclua também os campos de horário comercial e de fechamentos do recurso. |
| 3 | Regra de compartilhamento para convidados | Uma regra de compartilhamento de Leitura para o usuário convidado, para que os convidados vejam os registros. O padrão externo para toda a organização do objeto precisa ser Privado para a regra valer. Uma regra implantada como metadados precisa de um clique em Recalcular nas Configurações de compartilhamento. |
| 4 | Conjunto de permissões de convidado | Atribua MultiDatePick - Guest ao usuário convidado do site. Ele traz o acesso às classes Apex pelas quais o calendário carrega os dados, além dos direitos de leitura e criação que um convidado pode ter nos objetos do MultiDatePick. |
| 5 | Publicar e ativar | Publicar e ativar são etapas separadas. Convidados só veem um site ativado. |
Duas configurações da organização de que os convidados também precisam
| Configuração | Por quê |
|---|---|
| Proprietário padrão de registros | Convidados não podem ser proprietários de registros, então o Salesforce atribui toda reserva de convidado a um proprietário padrão. Defina-o em Espaços de trabalho do Experience, Administração, Preferências. |
| Acesso de leitura aos registros referenciados | Uma reserva que aponta para um recurso ou um pai precisa de Leitura do convidado nesse registro, ou o salvamento falha com um erro de referência cruzada. Use um objeto personalizado para tudo o que os convidados reservam: o acesso de convidados a Contatos e Contas é bastante restrito. |
Está planejando uma página pública de reservas? Reservas por autoatendimento num site do Salesforce Experience Cloud explica o que os convidados podem fazer e qual visualização mostrar a eles.
Seis usos fora da página de registro
| Uso | Página | Componente | Adicione |
|---|---|---|---|
| Central interna de reservas ("Reservar uma sala") | Página de aplicativo | Booking | Campo de Capacidade para disponibilidade ao vivo, como "3/10" |
| Agendamento por autoatendimento para clientes | Site do Experience Cloud | Booking ou Date Time | Um fluxo quando o pai é o Caso ou o Pedido de cada cliente |
| Disponibilidade pessoal / folgas | Página inicial | Dates | Cores de status: Pending ou Approved num relance |
| Inscrição em eventos e turmas | Site do Experience Cloud ou página de aplicativo | Date Time | Max Dates Allowed limita as sessões por pessoa |
| Inscrição de voluntários e turnos | Site do Experience Cloud | Booking | Campo de Capacidade para "vagas restantes", cores de status para Open ou Full |
| Marcos de projeto | Página de aplicativo | Dates ou Date Time | Cores de status (Planned, In Progress, Done) e visualização de dois meses |
Solução de problemas
| Sintoma | Solução |
|---|---|
| O Salvar nunca aparece | Um dos quatro está vazio. Fora de uma página de registro, geralmente é o Static Parent Record Id. |
| O calendário carrega, mas salvar falha | Sem acesso ao objeto. Atribua o conjunto de permissões MultiDatePick - User; num site, dê leitura e criação ao perfil de membro ou de convidado. |
| "Field does not exist" ao salvar | Erro de digitação no nome da API. Copie-o em Configuração, Gerenciador de objetos. Um prefixo de namespace só se usa em objetos de outro pacote (por exemplo, acme__Visit_Date__c). |
| Membros do site não veem os próprios registros | Adicione uma regra de compartilhamento (ou flexibilize os padrões para toda a organização) no objeto filho. |
| Datas salvas somem ao atualizar a página | Mantenha Load Existing Dates ativado (vem ativado por padrão). |
| Static Parent Record Id "isn't valid" | Use um Id real de 15 ou 18 caracteres do objeto pai, aquele para o qual o campo de relacionamento aponta. |
Outro problema? A Solução de problemas traz cada mensagem de configuração com uma captura de tela e a correção.
Tem outro problema que não aparece aqui?
Envie suas dúvidas por e-mail. Teremos prazer em ajudar.