Próximamente en Salesforce AppExchange

Cómo evitar las reservas duplicadas en Salesforce

Las reglas de validación no pueden ver otros registros. Esa única limitación explica por qué la mayoría de los sistemas de reservas en Salesforce descubren sus conflictos con un día de retraso.

Publicado el 21 de julio de 2026 · Actualizado el 21 de octubre de 2026 · MultiDatePick

La reserva duplicada es un problema de momento. Cuando algo en Salesforce estándar puede decirte que la sala está ocupada, el usuario ya la ha elegido, ha rellenado el resto del formulario y ha pasado a otra cosa.

Por qué no sirven las herramientas obvias

HerramientaQué puede hacerPor qué se queda corta
Regla de validaciónComprobar campos del registro que se guardaNo puede consultar otros registros en absoluto
Regla de duplicadosCoincidir por igualdad de campos9:00 a 10:00 y 9:30 a 10:30 chocan, pero no coinciden
Flujo desencadenado por registroConsultar y bloquear al guardarActúa cuando el usuario ya se ha comprometido; falla con cargas masivas si se escribe sin cuidado
Código personalizadoControl total, lógica de solapamiento correctaSigue rechazando al guardar, y ahora el código es tuyo

Todas comparten el mismo patrón: rechazan al usuario después de elegir. Incluso una solución personalizada correcta acaba en «esa franja está ocupada, inténtalo de nuevo», que es peor experiencia que no ofrecer nunca la franja.

Solapamiento no es igualdad

Las reglas de duplicados tientan a mucha gente, así que aquí va la regla. Dos reservas entran en conflicto cuando una empieza antes de que termine la otra y termina después de que la otra empiece. Una reserva de 9:00 a 10:00 y otra de 9:30 a 10:30 se solapan media hora sin compartir ningún valor de campo idéntico. Cualquier enfoque basado en comparar valores lo pasará por alto siempre.

Conflicto y capacidad son problemas distintos

A menudo se tratan como si fueran lo mismo.

Un conflicto

Dos cosas que compiten por un recurso que admite una sola. Una sala, un entrevistador, un vehículo.

Capacidad

Un recurso que admite varias. La pregunta es cuántas plazas quedan. Una clase con veinte plazas, un turno que necesita cuatro enfermeras, una zona de puestos con sesenta sitios.

Tratar un recurso con capacidad como un recurso de conflicto significa que nunca podrás reservar a la segunda persona. Tratar un recurso de conflicto como capacidad de uno funciona técnicamente, pero pierde los recuentos sobre los que probablemente quieras hacer informes.

Demo animada del mapa de calor de ocupación de MultiDatePick en Salesforce: asesores en filas con lo reservado frente a la capacidad de cada día, el cursor sobre un día completo y un clic que abre la semana de ese asesor
Capacidad de todo un equipo: lo reservado frente a la capacidad de cada día, con los días con exceso rodeados en naranja.

Tres comportamientos razonables

«Bloquearlo» no siempre es lo correcto. Cuando alguien selecciona doce fechas y dos chocan, rechazar todo el envío es hostil. Los sistemas útiles ofrecen elegir:

Block

Rechaza el guardado e informa del conflicto. Lo correcto cuando importa cada fecha.

Skip

Guarda las diez que están libres e informa de las dos que no. Suele ser la opción más humana para selecciones en bloque.

Allow

Permite el solapamiento a propósito. Algunos negocios sobrerreservan de forma deliberada.

Calendario de reservas de Salesforce con indicadores de capacidad y detección de conflictos que evitan reservas duplicadas en cada franja
Recuentos de capacidad en vivo en cada franja, para que el conflicto se vea antes de que nadie haga clic.

La solución de verdad llega antes

Todos los mecanismos anteriores actúan al guardar. La solución es llevar la comprobación al momento de la selección: consultar lo que ya existe cuando se carga el calendario, dibujarlo en la cuadrícula y no ofrecer nunca una franja que ya no está libre. Las comprobaciones al guardar siguen ejecutándose como red de seguridad para la carrera real en la que dos personas miran la misma franja libre, pero dejan de ser la defensa principal.

Cómo lo hace MultiDatePick. Lee los registros existentes al dibujar el calendario, muestra como ocupadas las franjas ocupadas, cuenta la capacidad con un indicador en vivo de reservas frente a capacidad y vuelve a comprobar los conflictos al guardar. Conflict Behavior (Comportamiento ante conflictos) se define en block, skip o allow. En un flujo de pantalla (Screen Flow), las salidas Conflict Dates y Successful Bookings Count le dicen a la siguiente pantalla exactamente qué ha pasado.

Evita las reservas duplicadas en el momento de elegir

Reserva una franja en la demo en vivo y mira cómo las horas ocupadas desaparecen de la cuadrícula.

  • US$20/usuario/mes, todas las funciones
  • Prueba gratis de 30 días, sin tarjeta
  • 100 % nativo de Salesforce
  • Sin Apex
  • Próximamente en Salesforce AppExchange