Прячем лишние поля в отчётах 1С: пять подходов

· 9 мин

Содержание

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

Но «скрыть поле» означает разные вещи. Одному нужно временно убрать колонку из своей печатной формы. Другому — спрятать столбец только у части сотрудников. Третьему — чтобы поле исчезало по условию, когда значение нулевое. Для каждой задачи в 1С свой инструмент, и выбирать его стоит осознанно: от лёгкой настройки варианта до правки макета и кода в модуле отчёта.

Ниже — пять способов, от самого безопасного к самому радикальному, плюс разбор типичных граблей.

С чего начать: выбираем способ под свою задачу

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

Кто и зачем скрывает поле в отчёте?

Большинство типовых отчётов в 1С 8.3 (БП 3.0, ЗУП 3.1, УТ 11) построены на системе компоновки данных — СКД. Это важно: именно СКД даёт пользователю почти все настройки видимости колонок без единой строчки кода. Отчёты на фиксированном макете встречаются реже, и с ними работают уже в конфигураторе.

Как убрать колонку в режиме «1С:Предприятие» без кода

Самый частый сценарий — лишние колонки в типовом отчёте вроде «Оборотно-сальдовой ведомости» или «Анализа субконто». Их убирают в настройках варианта.

Порядок действий для отчёта на СКД:

  1. Сформируйте отчёт и нажмите кнопку Настройки (иногда Настройки...) в его командной панели.
  2. Если открылся упрощённый вид с парой полей, переключите режим на расширенный. Переключатель вида настроек обычно в правом верхнем углу формы настроек или в меню Ещё.
  3. Перейдите на вкладку Поля (в части конфигураций — Выбранные поля).
  4. Снимите флажок у поля, которое нужно спрятать, либо перенесите его из правого списка «Выбранные поля» в левый список доступных.
  5. Нажмите Завершить редактирование / Сформировать — колонка исчезнет.

Если нужного поля в списке нет совсем, оно может быть «спрятано» внутри группировки. Разверните структуру отчёта на вкладке Структура и проверьте поля внутри нужной группировки — колонки часто задаются именно там.

Чтобы настройка не слетела при следующем открытии, её надо сохранить как вариант отчёта: меню Ещё → Сохранить вариант отчёта. Дайте варианту понятное имя, например «ОСВ без количества». В следующий раз выбираете свой вариант — и колонки сразу в нужном составе.

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

Для отчёта, который открывается сразу таблицей без кнопки настроек, вариант один — он собран на фиксированном макете. Тогда переходите к правке макета или расширению.

Прячем поле по условию через условное оформление СКД

Иногда колонка нужна не всегда, а поле должно исчезать по условию: скрыть нулевые суммы, спрятать служебный реквизит для определённого склада, показать колонку только по одной организации. Для этого в СКД есть условное оформление.

Настраивается оно там же, в расширенных настройках отчёта:

  1. Откройте настройки отчёта и перейдите на вкладку Условное оформление.
  2. Добавьте новую строку условного оформления.
  3. В колонке Оформление выберите параметр Видимость и задайте значение «Нет».
  4. В колонке Условие задайте отбор — например, Сумма = 0 или Организация Не равно <ваша организация>.
  5. В колонке Оформляемые поля укажите конкретное поле, к которому применяется правило. Если поля не указать, оформление применится ко всей строке или группировке.

Результат: значение в ячейке скрывается, когда условие выполнено. Так удобно гасить нули в громоздких ведомостях, не теряя сам столбец.

Условное оформление «Видимость = Нет» прячет значение в ячейке, но саму колонку и её заголовок оставляет на месте. Если нужно убрать весь столбец целиком, используйте не оформление, а исключение поля из выбранных полей (способ выше).

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

Правка макета отчёта в конфигураторе

Если отчёт построен на фиксированном макете (табличном документе внутри объекта «Отчёт»), настройки пользователя до колонок не дотянутся — состав таблицы зашит в макет. Тогда правят сам макет в конфигураторе.

Что нужно сделать:

  1. Откройте конфигуратор, найдите нужный отчёт в дереве Отчёты.
  2. Раскройте его и откройте нужный Макет.
  3. В табличном документе выделите колонку или область, которую нужно скрыть.
  4. В свойствах области/колонки снимите свойство Видимость либо удалите ненужные ячейки.
  5. Сохраните конфигурацию и обновите конфигурацию базы данных (Конфигурация → Обновить конфигурацию базы данных, клавиша F7).

Здесь есть принципиальное ограничение. Если конфигурация типовая и стоит на поддержке с запретом изменений, объект редактировать не дадут — у него «замок». Снимать типовую конфигурацию с поддержки ради одной колонки почти никогда не стоит: это оборвёт штатное автообновление и превратит каждое обновление в ручную сверку.

Правка типовой конфигурации «на месте» ломает простое обновление. Для доработки типового отчёта используйте расширение конфигурации — об этом ниже.

Правка макета напрямую оправдана только для собственных, нетиповых отчётов, которые вы и так ведёте сами.

Ограничиваем видимость поля через права роли

Отдельная задача — спрятать поле не вообще, а для конкретных сотрудников. Например, менеджеры по продажам не должны видеть в отчёте колонку с себестоимостью или с окладами.

Это решается не в самом отчёте, а через права доступа в конфигураторе:

  1. Откройте нужную Роль в дереве конфигурации (ветка Роли).
  2. Найдите объект-источник данных (справочник, документ или регистр) и раскройте его реквизиты.
  3. Снимите у реквизита право Просмотр (а при необходимости и Чтение).
  4. Назначьте роль нужным пользователям; у кого роли нет — поле в отчётах и формах для них исчезнет.

Важно понимать границы этого способа:

  • Право на реквизит действует глобально — поле пропадёт не в одном отчёте, а во всех формах и отчётах, где оно выводится. Это не точечная настройка одного отчёта.
  • Так ограничивают именно колонки (реквизиты). Если задача — спрятать от сотрудника строки (например, данные чужого подразделения), это уже построчное ограничение, RLS, и настраивается оно по-другому, через шаблоны ограничения доступа.
  • Менять роли в типовой конфигурации лучше тоже через расширение, а не правкой типовых ролей.

Способ мощный, но грубый: он подходит, когда поле действительно секретно для части пользователей, а не когда кому-то просто не нравится лишняя колонка.

Программное скрытие поля в модуле отчёта

Когда состав колонок должен зависеть от параметров — скажем, детализация по менеджерам выводится, только если установлен флажок, — поле прячут программно. Для отчёта на СКД это делают через настройки компоновщика, обычно в обработчике ПриКомпоновкеРезультата или перед выводом.

Простой приём — пройти по выбранным полям и выключить нужное свойством Использование:

Настройки = КомпоновщикНастроек.ПолучитьНастройки();

Для Каждого ЭлементВыбора Из Настройки.Выбор.Элементы Цикл
    Если ТипЗнч(ЭлементВыбора) = Тип("ВыбранноеПолеКомпоновкиДанных")
        И ЭлементВыбора.Поле = Новый ПолеКомпоновкиДанных("Сумма") Тогда
        ЭлементВыбора.Использование = Ложь;
    КонецЕсли;
КонецЦикла;

Свойство Использование = Ложь убирает поле из вывода так же, как снятый флажок в пользовательском режиме, — колонка не формируется совсем.

Если же отчёт собран на фиксированном табличном документе, видимостью управляют на уровне областей готового документа:

// ТабДок — заполненный ТабличныйДокумент
Область = ТабДок.Область("C3:C20");
Область.Видимость = Ложь;

Для СКД почти всегда предпочтительнее менять настройки компоновщика, а не готовый табличный документ: так отчёт остаётся управляемым, а пользовательские настройки не конфликтуют с кодом.

Программный способ — для доработчиков. Писать такой код в типовой тоже корректнее в расширении, чтобы не снимать конфигурацию с поддержки.

Расширения и внешние отчёты как безопасная альтернатива

Главный способ доработать типовой отчёт, ничего в нём не ломая, — расширение конфигурации . Механизм появился в платформе 8.3.6 и с тех пор стал стандартом для подобных правок.

Что даёт расширение применительно к скрытию полей:

  • можно добавить собственный предопределённый вариант отчёта с нужным составом колонок — пользователи просто выбирают ваш вариант;
  • можно заимствовать макет отчёта и поправить его, не снимая типовую с поддержки;
  • можно переопределить модуль и добавить программное управление видимостью.

Порядок в общих чертах: создаёте расширение (Конфигурация → Расширения конфигурации), добавляете в него нужный объект, вносите правки, сохраняете. После загрузки файла .cfe отдельным шагом выполняется обновление конфигурации базы данных — это две разные операции, не путайте их.

Второй вариант — внешний отчёт. Если переделывать типовой не хочется вовсе, делают собственный внешний отчёт на СКД ровно с теми полями, которые нужны. Его кладут в справочник дополнительных отчётов и обработок и подключают пользователям. Плюс — полная независимость от обновлений типовой. Минус — отчёт придётся сопровождать самостоятельно.

СпособНужен конфигураторТрогает типовуюДля кого
Настройки вариантаНетНетЛюбой пользователь
Условное оформлениеНетНетПользователь
Права ролиДаДа (лучше в расширении)Администратор
Правка макетаДаДаТолько для своих отчётов
Программно / расширениеДаНет (в расширении)Доработчик

Что делать, если поле не скрывается

Чаще всего проблема не в 1С, а в том, что настройку применили не там или не сохранили. Короткая диагностика.

Диагностика: выберите симптом

Ещё одна частая причина «непропадающего» поля — оно участвует в отборе или сортировке. Система может держать его для вычислений, даже если вы убрали его из вывода. Проверьте вкладки Отбор и Сортировка.

Частые вопросы

Чем «убрать поле» отличается от «скрыть поле» в 1С?
Убрать — исключить поле из выбранных, тогда колонка не формируется совсем. Скрыть по условию — оставить поле, но гасить его значение условным оформлением «Видимость». Для первого снимают флажок поля, для второго настраивают оформление с отбором.
Можно ли спрятать колонку только у одного пользователя, не трогая остальных?
Точечно по одному отчёту — нет. Либо сделайте этому пользователю отдельный вариант отчёта без колонки, либо ограничьте право на реквизит через роль — но тогда поле исчезнет во всех формах, где оно выводится.
Сохранится ли настройка после обновления конфигурации?
Пользовательские варианты отчётов и условное оформление хранятся в базе и обновление типовой переживают. А вот правки макета «в лоб» в типовой при обновлении могут откатиться или дать конфликт — поэтому их и делают в расширении.
Как вернуть случайно скрытое поле?
Откройте настройки отчёта и либо поставьте флажок поля обратно в списке выбранных полей, либо выберите стандартный вариант отчёта через меню «Ещё → Выбрать вариант». Стандартный вариант всегда содержит исходный набор колонок.
Нужен ли программист, чтобы скрыть колонку в типовом отчёте?
В большинстве случаев нет. Состав колонок, условное оформление и сохранение варианта делаются в пользовательском режиме. Программист нужен, только если отчёт на фиксированном макете или колонки должны меняться автоматически по сложной логике.