У меня проблема с проверкой поля в моем объекте Case. У меня есть требование ниже. Может ли кто-нибудь помочь?

Поле должно содержать всего 11 цифр. Эти 11 цифр можно разделить на 3 части:

  1. Первые 3 цифры — это префикс, который всегда уникален.
  2. Следующие 7 цифр — это серийный номер.
  3. Последняя цифра является контрольной цифрой

Например, если пользователь вводит значение в поле как 589 8114074 3:

Не обращайте внимания на первые 3 уникальных номера префикса и последнюю контрольную цифру [потому что это то, что мы собираемся найти и сопоставить с фактической контрольной цифрой]

Просто рассмотрите 7-значный серийный номер, 8114074, и разделите его на 7 [число 7 является константой, Mod7]

Остаток определяет контрольную цифру

Например, серийный номер 8114074 при делении вручную на 7 дает остаток 3.

Этот остаток совпадает с контрольной цифрой поля, поэтому значение 589 8114074 3 в поле должно считаться правильным.

0
David Reed 7 Мар 2019 в 16:17
Что вы уже пытались сделать, чтобы выполнить это требование? С какой конкретной проблемой вы столкнулись при попытке?
 – 
David Reed
7 Мар 2019 в 16:19
Я новичок, и я пытаюсь создать поле формулы для этого, но не могу обдумать это.
 – 
PseudoDarwinist
7 Мар 2019 в 16:20

1 ответ

Лучший ответ

Учитывая, что ваш номер без пробелов (например: 58981140743 ), решением может быть ограничение максимального количества символов в поле с помощью его настроек и ограничение минимального количества символов поля с помощью правила проверки, такого как:

OR(NOT(MOD(VALUE(RIGHT(LEFT(number__c,10),7)),7) = VALUE(RIGHT(number__c, 1))), LEN(number__c) <> 11)
0
Dahn 7 Мар 2019 в 18:05
Спасибо @Dahn Как насчет проверки логики на совместимость с MOD7 для чисел, начиная с 4-й позиции до 10-й позиции? Можем ли мы использовать REGEX для этого?
 – 
PseudoDarwinist
7 Мар 2019 в 18:16
Мы могли бы использовать регулярное выражение для проверки соответствия шаблону, но не для поиска или управления текстом. Вы можете использовать SUBSTITUTE(number__c, " ", "") везде, где появляется number__c, чтобы удалить пробелы.
 – 
Dahn
7 Мар 2019 в 18:19
Спасибо @Dahn. Это требование. Когда клиент вводит 11-значный номер, я хочу убедиться, что числа с 4-й по 10-ю позиции соответствуют mod7. Это означает, что если я разделю 7 чисел (с 4-го по 10-е) на 7, остаток соответствует последней цифре (12-я позиция)
 – 
PseudoDarwinist
7 Мар 2019 в 21:20