Как в 1С:СКД скрыть колонку, если она используется в расчетах?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто при разработке отчетов на системе компоновки данных (СКД) возникает задача скрыть колонку от пользователя, но при этом оставить её доступной для внутренних вычислений. При простом снятии флажка с поля в настройках «Выбранные поля» оптимизатор СКД может удалить это поле из запроса, что приводит к ошибке «Не найдено поле замены». Давайте разберем, как грамотно скрыть колонку, чтобы отчет работал корректно и не выдавал ошибок.

Почему возникает ошибка «Не найдено поле замены»?

Система компоновки данных оснащена мощным встроенным оптимизатором запросов. Когда мы убираем галочку с поля в настройках вывода, СКД делает вывод: «Пользователь это поле не видит, значит, и в итоговый SQL-запрос к базе данных его включать не нужно». Однако, если это поле задействовано в формуле Вычисляемого поля или участвует в расчете итогов, механизм компоновки пытается обратиться к данным, которые уже были отсечены на этапе формирования запроса. Именно в этот момент мы получаем неприятное сообщение об ошибке.

Способ №1: Установка роли «Обязательное»

Это самый правильный и «каноничный» способ решения проблемы. Суть его заключается в том, чтобы «сказать» СКД: даже если поле не выводится в отчет, оно всегда должно присутствовать в выборке данных.

  1. Откройте схему компоновки данных в конфигураторе.
  2. Перейдите на вкладку Наборы данных.
  3. В списке полей набора данных найдите поле, которое нужно скрыть.
  4. В колонке Роли нажмите на кнопку открытия (три точки).
  5. В появившемся окне установите флажок Обязательное.
  6. Нажмите «ОК» и сохраните настройки.

После этого оптимизатор не будет удалять поле из запроса, даже если вы снимете с него галочку в настройках Выбранные поля. Поле останется доступным для всех формул и вычислений, но визуально в отчете отображаться не будет.

Способ №2: Использование условного оформления для визуального скрытия

Если по каким-то причинам первый способ не подходит или вы хотите, чтобы колонка формально присутствовала, но была невидимой для глаза, можно воспользоваться механизмом Условного оформления. Это позволяет «схлопнуть» колонку до минимального размера.

  1. Оставьте галочку у поля в настройках Выбранные поля.
  2. Перейдите на вкладку Условное оформление в настройках отчета.
  3. Добавьте новое условие оформления.
  4. На вкладке Оформление установите параметр Максимальная ширина равным значению 0.01 или 1.
  5. В этом же окне вы можете задать цвет текста, совпадающий с цветом фона, чтобы скрыть содержимое ячеек.

Этот метод позволяет сохранить поле в структуре отчета, но делает его визуально незаметным для пользователя. Колонку практически невозможно будет заметить, при этом все расчеты, зависящие от неё, будут работать корректно.

Способ №3: Проверка связей наборов данных

Иногда ошибка возникает не из-за простого вывода, а из-за того, что поле является ключом связи между наборами данных. Если вы используете несколько наборов (например, Запрос и Таблица значений), убедитесь, что в связях:

Подводя итог, рекомендуем в первую очередь использовать роль «Обязательное» в наборе данных. Это самый надежный способ избежать проблем с оптимизатором. Если же требования к отчету специфичны и требуют гибкости, используйте условное оформление для скрытия ширины колонок. Сочетание этих методов позволит вам создавать профессиональные отчеты, которые работают быстро и без ошибок.

← На главную