К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как скрыть область в макете 1С

Разбираем, как скрыть область в макете 1С: свойство Видимость, условный вывод областей, работа с параметрами и типичные ошибки при формировании печатных форм.

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

Самый надёжный подход — управлять выводом на этапе формирования: если область не нужна, её просто не выводят методом Вывести() или Присоединить(). Это быстрее, чем выводить всё подряд и потом прятать лишнее, и не оставляет в документе пустых строк, которые ломают нумерацию и итоги.

Ниже разобраны все рабочие приёмы: условный вывод областей, скрытие строк и колонок в уже сформированном табличном документе, работа с параметрами макета, а также типичные ошибки, из-за которых «скрытая» область всё равно появляется на печати.

Как устроены области макета и почему их не «удаляют»

Макет табличного документа состоит из именованных областей: строк, колонок и прямоугольных диапазонов. При формировании печатной формы программист получает область методом Макет.ПолучитьОбласть("ИмяОбласти"), заполняет её параметры и выводит в результирующий табличный документ. Пока область не выведена, её в документе физически нет — это ключевой принцип.

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

Способ 1. Не выводить область по условию

Основной и рекомендуемый приём. Перед выводом области проверяйте условие, и если область не нужна — пропускайте вызов Вывести(). Например, блок «Скидка» выводится только когда скидка больше нуля:

bsl
Если ДанныеПечати.Скидка > 0 Тогда
	ОбластьСкидка = Макет.ПолучитьОбласть("Скидка");
	ОбластьСкидка.Параметры.СуммаСкидки = ДанныеПечати.Скидка;
	ТабДок.Вывести(ОбластьСкидка);
КонецЕсли;

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

Если областей-вариантов несколько (например, «ШапкаСНДС» и «ШапкаБезНДС»), создайте в макете обе области и выбирайте нужную по условию. Это чище, чем одна универсальная область с кучей скрытых ячеек.

Порядок действий при условном выводе
  1. 1
    Определите условие, при котором область не нужна (пустая сумма, признак в данных, настройка пользователя)
  2. 2
    Оберните получение и вывод области в оператор Если ... Тогда ... КонецЕсли
  3. 3
    Проверьте, что итоги и нумерация строк не зависят от скрываемой области
  4. 4
    Сформируйте печатную форму с данными, где условие истинно и ложно, и сравните результат

Способ 2. Скрыть строки или колонки в готовом табличном документе

Когда документ уже сформирован (или область выводится в общем коде, который нельзя трогать), используйте свойство Видимость у областей результирующего табличного документа. Получите область строк или колонок и установите свойство в Ложь:

bsl
ОбластьСтрок = ТабДок.Область("R10:R15");
ОбластьСтрок.Видимость = Ложь;

ОбластьКолонок = ТабДок.Область("C5");
ОбластьКолонок.Видимость = Ложь;

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

Учтите ограничение: свойство Видимость работает для целых строк и колонок. Скрыть отдельную ячейку посередине строки нельзя — можно только очистить её текст или сделать текст и границы незаметными через оформление.

Способ 3. Подавить вывод пустых параметров

Частая ситуация: область нужна, но отдельные поля в ней пустые (нет телефона, комментария, номера ГТД). Выводить пустую подпись «Телефон:» некрасиво. Решается это на уровне текста ячейки макета, а не скрытием области.

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

bsl
ТекстКонтактов = "";
Если ЗначениеЗаполнено(Данные.Телефон) Тогда
	ТекстКонтактов = "Тел.: " + Данные.Телефон;
КонецЕсли;
Область.Параметры.Контакты = ТекстКонтактов;

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

Выбор способа под конкретную задачу

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

Сравнение способов скрытия

Условный вывод (не выводить область)

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

Свойство Видимость у строк/колонок

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

Подавление пустых параметров

Подходит для необязательных полей внутри нужной области. Не решает задачу скрытия целых блоков.

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

Маршрут решения

Как выбрать действие

Условие скрытия известно до формирования документаНе выводите область — оберните Вывести() в условие
Документ формируется типовым кодом, менять который нельзяСкрывайте строки или колонки через Видимость = Ложь после формирования
Видимость должна переключаться пользователем без пересборки документаИспользуйте Видимость у областей и сохраняйте настройку
Проблема только в пустых полях внутри областиФормируйте текст параметра программно и подавляйте пустые значения

Как проверить результат

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

Дополнительно выведите документ на предварительный просмотр печати: скрытые строки не должны попадать на страницы, а количество страниц не должно «прыгать» из-за невидимых, но занимающих место областей. Если пустое место осталось — скорее всего, область скрыта через оформление, а не удалена из вывода.

Контрольные точки

Как проверить результат

Место скрытой области в документе
Норма

Нет пустого промежутка, соседние блоки стыкуются

Тревожный признак

Осталась пустая полоса или разрыв границ таблицы

Предварительный просмотр печати
Норма

Скрытые строки и колонки отсутствуют на страницах

Тревожный признак

На печати видны элементы, скрытые только на экране

Нумерация и итоги
Норма

Номера строк идут подряд, итоги совпадают с видимыми данными

Тревожный признак

Пропуски в нумерации, итоги учитывают скрытые строки

Поведение на других данных
Норма

При заполненных данных область корректно появляется

Тревожный признак

Область не выводится никогда или выводится всегда

Типичные ошибки и ограничения

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

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

Типичные ошибки
01
Установка Видимость = Ложь у области макета вместо области результирующего документа — свойство не срабатывает, область выводится как раньше
02
Скрытие строк с данными, участвующими в итогах, — суммы расходятся с видимым содержимым
03
Очистка текста ячейки вместо скрытия строки — в документе остаётся пустая строка с границами
04
Скрытие отдельной ячейки вместо целой строки или колонки — свойство Видимость на одну ячейку не действует, результат непредсказуем
05
Условие скрытия проверяется по данным объекта, а не по данным печати — область пропадает или появляется не в тех документах

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

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

Можно ли скрыть область прямо в редакторе макета, без кода?

Нет. Редактор макета описывает только шаблон. Видимость управляется программно: либо область не выводится в документ, либо у уже выведенных строк и колонок устанавливается свойство Видимость = Ложь.

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

Скорее всего, свойство Видимость установлено у области макета или у неправильного диапазона результирующего документа. Проверьте, что обращаетесь к области именно результирующего табличного документа (ТабДок.Область(...)), и что адрес диапазона соответствует фактическим строкам после вывода.

Как скрыть колонку таблицы в печатной форме?

Получите область нужной колонки результирующего документа, например ТабДок.Область("C5"), и установите Видимость = Ложь. Если колонка должна исчезать по условию, надёжнее сделать два варианта области в макете — с колонкой и без — и выводить нужный.

Как скрыть область, если печатная форма формируется типовым кодом?

Используйте программное скрытие после вызова типовой процедуры формирования: получите сформированный табличный документ и установите Видимость = Ложь для нужных строк или колонок. Альтернатива — переопределить макет через расширение конфигурации и убрать область из шаблона.

Остаётся пустая строка на месте скрытой области — что делать?

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

Влияет ли скрытие областей на скорость формирования?

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

Итог

Что важно запомнить

Область в макете 1С не скрывают — её либо не выводят по условию, либо прячут в готовом документе через Видимость = Ложь у строк и колонок. Условный вывод даёт самый чистый результат и не ломает нумерацию и итоги. Пустые поля внутри нужной области подавляйте через параметры. В регламентированных формах скрывайте только необязательные реквизиты и проверяйте результат на предварительном просмотре печати.