Вариант 1: использовать логику условного подавления, чтобы скрыть / показать избыточные поля
Используйте поле параметра для управления формулами подавления для нужных полей.
Если вы хотите устранить пробелы между полями, вам нужно будет сложить поля друг над другом и соответствующим образом их подавить. В вашем примере столбец 2 будет содержать field2 и field3 (оба подавлены), а столбец 3 будет содержать field2 и field3 (оба подавлены). Логика подавления в вашем примере будет продолжать подавлять оба поля в столбце 2, но будет отображать поле 3 в столбце 2 (поле 2 в столбце 2 все равно будет подавлено).
Вариант 2: использовать поле формулы «заполнитель»
Каждый столбец данных, который может быть подавлен, будет полем формулы. Каждое поле формулы будет использовать логику SELECT CASE для выбора нужного поля для отображения. «Скрытое» поле просто вернет нулевое значение. Ваша логика SELECT CASE должна быть написана, чтобы гарантировать, что значения заполняются слева направо. Форматирование необходимо выполнить в формуле, а не в самом поле формулы.
Вариант 3: использовать SDK для динамического изменения отчета.
Используйте CR .Net SDK или более старый API CRAXDRT для динамического изменения видимости и расположения столбцов.
Однако, если вы используете эту опцию, ваши варианты развертывания будут более ограничены.