Em breve no Salesforce AppExchange

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.

Veja a configuração Solução de problemas

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.
A solução é a propriedade Static Parent Record Id. Cole nela o Id de um registro pai específico e o componente se comporta exatamente como se estivesse na página daquele registro. É uma propriedade que você define no construtor. Ela não tem nada a ver com um Recurso estático do Salesforce, que é outro recurso, para arquivos enviados.

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.
Sites para convidados: num site público sem login, o "usuário" é um único convidado compartilhado, então a resolução por usuário ($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

Demo animada da configuração por Config Name: copiar um nome de configuração no Assistente de Configuração do MultiDatePick, colocar o componente Resource Booking em uma página no Lightning App Builder, colar o Config Name e informar o Static Parent Record Id, e o calendário de reservas aparece com todas as definições da configuração
Copie o nome da configuração no Assistente de Configuração, cole-o junto com o Id do registro pai e o calendário está pronto. A configuração cuida de todo o resto.

O que faz o botão Salvar aparecer

Os quatro, ou o Salvar continua oculto:

#Propriedade (rótulo no construtor)Página de registroAplicativo / inicial / Experience
1Registro paiAutomático (recordId)Static Parent Record Id
2Objeto Relacionado (Child Object API Name)ObrigatórioObrigatório
3Campo de Data (Date Field API Name)ObrigatórioObrigatório
4Campo de Relacionamento (Relationship Field API Name)ObrigatórioObrigató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áginaOnde criarComo publicarQuem precisa de acesso
Página de aplicativoLightning App Builder, Novo, Página de aplicativoAtive e adicione a um ou mais aplicativos (ela vira uma guia)Conjunto de permissões MultiDatePick - User
Página inicialLightning App Builder, Novo, Página inicialAtive como padrão da organização ou por aplicativo em Gerenciador de aplicativos, PáginasConjunto de permissões MultiDatePick - User
Site do Experience CloudExperience Builder, em Componentes personalizadosPublique o sitePerfil 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.

#EtapaO que definir
1Permissões de objetoDê 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.
2Segurança em nível de campoLeitura 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.
3Regra de compartilhamento para convidadosUma 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.
4Conjunto de permissões de convidadoAtribua 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.
5Publicar e ativarPublicar 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çãoPor quê
Proprietário padrão de registrosConvidados 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 referenciadosUma 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

UsoPáginaComponenteAdicione
Central interna de reservas ("Reservar uma sala")Página de aplicativoBookingCampo de Capacidade para disponibilidade ao vivo, como "3/10"
Agendamento por autoatendimento para clientesSite do Experience CloudBooking ou Date TimeUm fluxo quando o pai é o Caso ou o Pedido de cada cliente
Disponibilidade pessoal / folgasPágina inicialDatesCores de status: Pending ou Approved num relance
Inscrição em eventos e turmasSite do Experience Cloud ou página de aplicativoDate TimeMax Dates Allowed limita as sessões por pessoa
Inscrição de voluntários e turnosSite do Experience CloudBookingCampo de Capacidade para "vagas restantes", cores de status para Open ou Full
Marcos de projetoPágina de aplicativoDates ou Date TimeCores de status (Planned, In Progress, Done) e visualização de dois meses

Solução de problemas

SintomaSolução
O Salvar nunca apareceUm dos quatro está vazio. Fora de uma página de registro, geralmente é o Static Parent Record Id.
O calendário carrega, mas salvar falhaSem 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 salvarErro 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 registrosAdicione uma regra de compartilhamento (ou flexibilize os padrões para toda a organização) no objeto filho.
Datas salvas somem ao atualizar a páginaMantenha 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.

Escreva para Support@MultiDatePick.com Voltar aos Primeiros passos Experimente a demo ao vivo