Прячем лишние поля в отчётах 1С: пять подходов
Содержание
Быстрее всего убрать колонку из типового отчёта можно прямо в режиме «1С:Предприятие»: открыть настройки отчёта, перейти к списку выбранных полей и снять флажок с лишнего поля. Конфигуратор для этого не нужен, правка обратима.
Но «скрыть поле» означает разные вещи. Одному нужно временно убрать колонку из своей печатной формы. Другому — спрятать столбец только у части сотрудников. Третьему — чтобы поле исчезало по условию, когда значение нулевое. Для каждой задачи в 1С свой инструмент, и выбирать его стоит осознанно: от лёгкой настройки варианта до правки макета и кода в модуле отчёта.
Ниже — пять способов, от самого безопасного к самому радикальному, плюс разбор типичных граблей.
С чего начать: выбираем способ под свою задачу
Прежде чем лезть в конфигуратор, определите, что именно и для кого вы прячете. От этого зависит, нужен ли программист вообще.
Большинство типовых отчётов в 1С 8.3 (БП 3.0, ЗУП 3.1, УТ 11) построены на системе компоновки данных — СКД. Это важно: именно СКД даёт пользователю почти все настройки видимости колонок без единой строчки кода. Отчёты на фиксированном макете встречаются реже, и с ними работают уже в конфигураторе.
Как убрать колонку в режиме «1С:Предприятие» без кода
Самый частый сценарий — лишние колонки в типовом отчёте вроде «Оборотно-сальдовой ведомости» или «Анализа субконто». Их убирают в настройках варианта.
Порядок действий для отчёта на СКД:
- Сформируйте отчёт и нажмите кнопку
Настройки(иногдаНастройки...) в его командной панели. - Если открылся упрощённый вид с парой полей, переключите режим на расширенный. Переключатель вида настроек обычно в правом верхнем углу формы настроек или в меню
Ещё. - Перейдите на вкладку
Поля(в части конфигураций —Выбранные поля). - Снимите флажок у поля, которое нужно спрятать, либо перенесите его из правого списка «Выбранные поля» в левый список доступных.
- Нажмите
Завершить редактирование/Сформировать— колонка исчезнет.
Если нужного поля в списке нет совсем, оно может быть «спрятано» внутри группировки. Разверните структуру отчёта на вкладке Структура и проверьте поля внутри нужной группировки — колонки часто задаются именно там.
Чтобы настройка не слетела при следующем открытии, её надо сохранить как вариант отчёта: меню Ещё → Сохранить вариант отчёта. Дайте варианту понятное имя, например «ОСВ без количества». В следующий раз выбираете свой вариант — и колонки сразу в нужном составе.
Правка варианта в пользовательском режиме не трогает конфигурацию и ничего не ломает в базе — это безопасный способ, его можно смело давать рядовым пользователям.
Для отчёта, который открывается сразу таблицей без кнопки настроек, вариант один — он собран на фиксированном макете. Тогда переходите к правке макета или расширению.
Прячем поле по условию через условное оформление СКД
Иногда колонка нужна не всегда, а поле должно исчезать по условию: скрыть нулевые суммы, спрятать служебный реквизит для определённого склада, показать колонку только по одной организации. Для этого в СКД есть условное оформление.
Настраивается оно там же, в расширенных настройках отчёта:
- Откройте настройки отчёта и перейдите на вкладку
Условное оформление. - Добавьте новую строку условного оформления.
- В колонке
Оформлениевыберите параметрВидимостьи задайте значение «Нет». - В колонке
Условиезадайте отбор — например,Сумма = 0илиОрганизация Не равно <ваша организация>. - В колонке
Оформляемые поляукажите конкретное поле, к которому применяется правило. Если поля не указать, оформление применится ко всей строке или группировке.
Результат: значение в ячейке скрывается, когда условие выполнено. Так удобно гасить нули в громоздких ведомостях, не теряя сам столбец.
Условное оформление «Видимость = Нет» прячет значение в ячейке, но саму колонку и её заголовок оставляет на месте. Если нужно убрать весь столбец целиком, используйте не оформление, а исключение поля из выбранных полей (способ выше).
Условное оформление удобно и тем, что оно хранится в варианте отчёта и переносится вместе с ним. Пользователю не нужно каждый раз заново настраивать отбор.
Правка макета отчёта в конфигураторе
Если отчёт построен на фиксированном макете (табличном документе внутри объекта «Отчёт»), настройки пользователя до колонок не дотянутся — состав таблицы зашит в макет. Тогда правят сам макет в конфигураторе.
Что нужно сделать:
- Откройте конфигуратор, найдите нужный отчёт в дереве
Отчёты. - Раскройте его и откройте нужный
Макет. - В табличном документе выделите колонку или область, которую нужно скрыть.
- В свойствах области/колонки снимите свойство
Видимостьлибо удалите ненужные ячейки. - Сохраните конфигурацию и обновите конфигурацию базы данных (
Конфигурация → Обновить конфигурацию базы данных, клавишаF7).
Здесь есть принципиальное ограничение. Если конфигурация типовая и стоит на поддержке с запретом изменений, объект редактировать не дадут — у него «замок». Снимать типовую конфигурацию с поддержки ради одной колонки почти никогда не стоит: это оборвёт штатное автообновление и превратит каждое обновление в ручную сверку.
Правка типовой конфигурации «на месте» ломает простое обновление. Для доработки типового отчёта используйте расширение конфигурации — об этом ниже.
Правка макета напрямую оправдана только для собственных, нетиповых отчётов, которые вы и так ведёте сами.
Ограничиваем видимость поля через права роли
Отдельная задача — спрятать поле не вообще, а для конкретных сотрудников. Например, менеджеры по продажам не должны видеть в отчёте колонку с себестоимостью или с окладами.
Это решается не в самом отчёте, а через права доступа в конфигураторе:
- Откройте нужную
Рольв дереве конфигурации (веткаРоли). - Найдите объект-источник данных (справочник, документ или регистр) и раскройте его реквизиты.
- Снимите у реквизита право
Просмотр(а при необходимости иЧтение). - Назначьте роль нужным пользователям; у кого роли нет — поле в отчётах и формах для них исчезнет.
Важно понимать границы этого способа:
- Право на реквизит действует глобально — поле пропадёт не в одном отчёте, а во всех формах и отчётах, где оно выводится. Это не точечная настройка одного отчёта.
- Так ограничивают именно колонки (реквизиты). Если задача — спрятать от сотрудника строки (например, данные чужого подразделения), это уже построчное ограничение, RLS, и настраивается оно по-другому, через шаблоны ограничения доступа.
- Менять роли в типовой конфигурации лучше тоже через расширение, а не правкой типовых ролей.
Способ мощный, но грубый: он подходит, когда поле действительно секретно для части пользователей, а не когда кому-то просто не нравится лишняя колонка.
Программное скрытие поля в модуле отчёта
Когда состав колонок должен зависеть от параметров — скажем, детализация по менеджерам выводится, только если установлен флажок, — поле прячут программно. Для отчёта на СКД это делают через настройки компоновщика, обычно в обработчике ПриКомпоновкеРезультата или перед выводом.
Простой приём — пройти по выбранным полям и выключить нужное свойством Использование:
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Для Каждого ЭлементВыбора Из Настройки.Выбор.Элементы Цикл
Если ТипЗнч(ЭлементВыбора) = Тип("ВыбранноеПолеКомпоновкиДанных")
И ЭлементВыбора.Поле = Новый ПолеКомпоновкиДанных("Сумма") Тогда
ЭлементВыбора.Использование = Ложь;
КонецЕсли;
КонецЦикла;
Свойство Использование = Ложь убирает поле из вывода так же, как снятый флажок в пользовательском режиме, — колонка не формируется совсем.
Если же отчёт собран на фиксированном табличном документе, видимостью управляют на уровне областей готового документа:
// ТабДок — заполненный ТабличныйДокумент
Область = ТабДок.Область("C3:C20");
Область.Видимость = Ложь;
Для СКД почти всегда предпочтительнее менять настройки компоновщика, а не готовый табличный документ: так отчёт остаётся управляемым, а пользовательские настройки не конфликтуют с кодом.
Программный способ — для доработчиков. Писать такой код в типовой тоже корректнее в расширении, чтобы не снимать конфигурацию с поддержки.
Расширения и внешние отчёты как безопасная альтернатива
Главный способ доработать типовой отчёт, ничего в нём не ломая, — расширение конфигурации . Механизм появился в платформе 8.3.6 и с тех пор стал стандартом для подобных правок.
Что даёт расширение применительно к скрытию полей:
- можно добавить собственный предопределённый вариант отчёта с нужным составом колонок — пользователи просто выбирают ваш вариант;
- можно заимствовать макет отчёта и поправить его, не снимая типовую с поддержки;
- можно переопределить модуль и добавить программное управление видимостью.
Порядок в общих чертах: создаёте расширение (Конфигурация → Расширения конфигурации), добавляете в него нужный объект, вносите правки, сохраняете. После загрузки файла .cfe отдельным шагом выполняется обновление конфигурации
базы данных — это две разные операции, не путайте их.
Второй вариант — внешний отчёт. Если переделывать типовой не хочется вовсе, делают собственный внешний отчёт на СКД ровно с теми полями, которые нужны. Его кладут в справочник дополнительных отчётов и обработок и подключают пользователям. Плюс — полная независимость от обновлений типовой. Минус — отчёт придётся сопровождать самостоятельно.
| Способ | Нужен конфигуратор | Трогает типовую | Для кого |
|---|---|---|---|
| Настройки варианта | Нет | Нет | Любой пользователь |
| Условное оформление | Нет | Нет | Пользователь |
| Права роли | Да | Да (лучше в расширении) | Администратор |
| Правка макета | Да | Да | Только для своих отчётов |
| Программно / расширение | Да | Нет (в расширении) | Доработчик |
Что делать, если поле не скрывается
Чаще всего проблема не в 1С, а в том, что настройку применили не там или не сохранили. Короткая диагностика.
Ещё одна частая причина «непропадающего» поля — оно участвует в отборе или сортировке. Система может держать его для вычислений, даже если вы убрали его из вывода. Проверьте вкладки Отбор и Сортировка.