Решение проблемы такого рода путем манипулирования источником данных (например, с помощью запроса) обычно является наилучшим способом продвижения вперед. AFAICS это то, что вы сейчас сделали.
В качестве фона не все пробелы в MailMerge рассматриваются как пустые с целью подавления пустых строк. Обычные типизированные пробелы, такие как пробелы и табуляции, рассматриваются как пустые. Поля MERGEFIELD с пустым результатом обрабатываются как пустые. Но результат поля IF никогда не считается пустым.
Я предполагаю, что логика, которую вы требуете, имеет следующий вид
If ( ext_b1 is False or borrower_1 is blank )
don't insert anything, not even a blank line
Else (i.e. ext_b1 is True and borrower_1 is not blank )
insert borrower_1 followed by a paragraph mark
End If
Если это так, и ext_b1 всегда одинаково , не пустое значение , когда оно "не Ложное" и borrower_1 никогда не бывает больше , чем в длине около 120 символов (это OTTOMH, вы должны проверить), вы можете использовать подстановочный трюк , чтобы упростить тест IF и сделать кодирование поля немного проще:
{ IF "{ MERGEFIELD ext_b1 }{ MERGEFIELD borrower_1 }" = "True?*" "{ MERGEFIELD borrower_1 }" "" }
{ IF "{ MERGEFIELD ext_b2 }{ MERGEFIELD borrower_2 }" = "True?*" "{ MERGEFIELD borrower_2 }" "" }
За исключением того, что фактически не удаляет метку абзаца, когда ext_b1 имеет значение False или заемщик_1 пуст. Чтобы справиться с этим, вы можете вставить метку абзаца внутри If, если это "истинный результат", и поместить все поля {} IF в одну строку, например:
{ IF "{ MERGEFIELD ext_b1 }{ MERGEFIELD borrower_1 }" = "True?*" "{ MERGEFIELD borrower_1 }
" "" }{ IF "{ MERGEFIELD ext_b2 }{ MERGEFIELD borrower_2 }" = "True?*" "{ MERGEFIELD borrower_2 }
" "" }
Чтобы сделать это немного более понятным (я надеюсь), вы также можете изменить структуру кода поля, поместив метки абзаца внутри IF, но вне текста результата IF. Эти отметки не будут частью результата. Вам также не нужен "ложный" результат. так например
{ IF "{ MERGEFIELD ext_b1 }{ MERGEFIELD borrower_1 }" = "True?*"
"{ MERGEFIELD borrower_1 }
" }{ IF "{ MERGEFIELD ext_b2 }{ MERGEFIELD borrower_2 }" = "True?*"
"{ MERGEFIELD borrower_2 }
" }
Проблема с изменением макета таким образом заключается в том, что объем вертикального пространства, занимаемого выражением поля, изменяется в зависимости от того, отображаются ли у пользователя коды поля или результаты поля, поэтому переключение с одного вида на другое может вызывать недоумение (особенно в большой документ, где Word также может тратить время на повторную разбивку при включении и выключении отображения кода поля.)