Добрый день,
Александр.
Надо использовать функцию String с условием по полю.
Предполагается, что населённый пункт указывается всегда, тогда запятая после индекса убирается в зависимости от наличия индекса:
[String(Індекс=?:, )]
Такая запись означает, что содержимое поля "Індекс" сравнивается с пустым значением и если условие выполняется, то ничего не выводится (строка между вопросом и двоеточием). Если индекс не пустой, то выводится второй аргумент - запятая с пробелом (после двоеточия до закрывающей круглой скобки).
Для номера корпуса запятая убирается перед ним:
[String(Тип корпусу=?:, )] или [String(КНомер=?:, )]
или, если он указывается через чёрточку/слэш:
[String(Тип корпусу=?:-)] или [String(КНомер=?:/)]
Для квартиры:
[String(Тип квартири=?:, )] или [String(КВНомер=?:, )]
Пример составного поля с условиями вывода дополнительных символов:
[Індекс][String(Індекс=?:, )][Тип нас.пункту][НПНазва], [Тип вулиці][ВНазва], [Тип будинку][БНомер][String(КНомер=?:, )][Тип корпусу][КНомер][String(Тип квартири=?:, )][Тип квартири][КВНомер]
Кстати, таким образом можно не указывать тип корпуса/квартиры, а выводит дополнительно нужный префикс, если номер квартиры не пустой:
- если номер строка:
[String(КВНомер=?:кв. )]
;
- если номер число:
[String(КВНомер=0?:кв. )]
.