Есть разные способы сделать это, в зависимости от того, нужно ли вам использовать требуемое выражение проверки столбца или у вас есть лицензия, чтобы делать это по-разному.
Особенности проектирования
Будет ли это окно данных вольным стилем, в котором вам нужно только один раз проверить правило для экрана, или табличный стиль, в котором пользователи могут массово вводить наборы данных, и правило должно применяться к каждой строке?
Хотите ли вы требовать, чтобы пользователи вводили правильные значения каждый раз, когда нужное поле фокусируется, или вы хотите, чтобы они могли свободно перемещаться по экрану и проверять во время сохранения?
Я ожидаю, что здесь вы получите несколько разных ответов, но я предпочитаю использовать выражения спецификации столбца только для простых проверок, потому что:
- Сложная логика становится трудной для чтения и поддержки
- Если вы проверяете несколько состояний ошибки, это может привести к некоторым громоздким сообщениям, если вы используете встроенное поле сообщения об ошибке спецификации столбца
Тем не менее, я допускаю, что выражения dw обычно очень быстрые.
Использование вычисляемого поля для правил проверки
Один альтернативный метод также является быстродействующим и может использоваться в большинстве версий PB.
- Иметь вычисляемое поле в окне данных с осмысленным именем, например
cf_amount_rule
, и что-то вроде этого в выражении: if (debit + credit = amount, 0, 1)
- Сделайте это поле невидимым для пользователя, если хотите
- Добавьте еще одно вычисляемое поле в нижний колонтитул к сумме
cf_amount_rule
, и теперь у вас есть удобная контрольная точка, которая быстро сообщает вам, когда возникает ошибка
- Во время сохранения (или события pfc_validation для пользователей PFC) вы можете проверить сумму> 0 и отправить сообщение об ошибке
ОО-пуристы могут предположить, что неправильно помещать логику в окно данных, и если вы обнаружите, что вводите одно и то же правило в несколько окон данных, это, безусловно, запах кода. Но для простых правил, которые вряд ли изменятся, я обнаружил, что окно данных очень эффективно выполняет эти правила и избавляет вас от необходимости писать много кода в другом месте.
Дополнительные вкусности
- Вы можете сделать сообщение об ошибке более надежным, используя функцию find () для идентификации определенных строк с ошибкой
- Вы предоставляете пользователям полезные визуальные подсказки, изменяя цвет фона строки или поля с помощью выражений свойств, которые ссылаются на
cf_amount_rule
.