Разработка и Конфигурация · 11 мин
Как скрыть область в макете 1С
Разбираем, как скрыть область в макете 1С: свойство Видимость, условный вывод областей, работа с параметрами и типичные ошибки при формировании печатных форм.
В макете табличного документа 1С нет отдельной команды «скрыть область» — область либо выводится в результирующий документ, либо нет. Поэтому под «скрытием» обычно понимают три разные задачи: не выводить область по условию, скрыть уже выведенные строки или колонки через свойство Видимость, либо подавить вывод пустых параметров. Выбор способа зависит от того, на каком этапе формируется печатная форма и что именно должно исчезнуть из документа.
Самый надёжный подход — управлять выводом на этапе формирования: если область не нужна, её просто не выводят методом Вывести() или Присоединить(). Это быстрее, чем выводить всё подряд и потом прятать лишнее, и не оставляет в документе пустых строк, которые ломают нумерацию и итоги.
Ниже разобраны все рабочие приёмы: условный вывод областей, скрытие строк и колонок в уже сформированном табличном документе, работа с параметрами макета, а также типичные ошибки, из-за которых «скрытая» область всё равно появляется на печати.
Как устроены области макета и почему их не «удаляют»
Макет табличного документа состоит из именованных областей: строк, колонок и прямоугольных диапазонов. При формировании печатной формы программист получает область методом Макет.ПолучитьОбласть("ИмяОбласти"), заполняет её параметры и выводит в результирующий табличный документ. Пока область не выведена, её в документе физически нет — это ключевой принцип.
Поэтому вопрос «как скрыть область» почти всегда переформулируется в «как не вывести область» или «как скрыть уже выведенную часть документа». Первый вариант реализуется простым условием в коде, второй — свойством Видимость у областей результирующего табличного документа. Понимание этой разницы избавляет от попыток найти несуществующую кнопку «скрыть» в редакторе макета.
Способ 1. Не выводить область по условию
Основной и рекомендуемый приём. Перед выводом области проверяйте условие, и если область не нужна — пропускайте вызов Вывести(). Например, блок «Скидка» выводится только когда скидка больше нуля:
Если ДанныеПечати.Скидка > 0 Тогда
ОбластьСкидка = Макет.ПолучитьОбласть("Скидка");
ОбластьСкидка.Параметры.СуммаСкидки = ДанныеПечати.Скидка;
ТабДок.Вывести(ОбластьСкидка);
КонецЕсли;Такой подход не оставляет в документе никаких следов области: ни пустых строк, ни разрывов, ни лишних границ. Это важно для документов со сквозной нумерацией строк — если выводить область и потом скрывать, номера строк придётся пересчитывать отдельно.
Если областей-вариантов несколько (например, «ШапкаСНДС» и «ШапкаБезНДС»), создайте в макете обе области и выбирайте нужную по условию. Это чище, чем одна универсальная область с кучей скрытых ячеек.
- 1Определите условие, при котором область не нужна (пустая сумма, признак в данных, настройка пользователя)
- 2Оберните получение и вывод области в оператор Если ... Тогда ... КонецЕсли
- 3Проверьте, что итоги и нумерация строк не зависят от скрываемой области
- 4Сформируйте печатную форму с данными, где условие истинно и ложно, и сравните результат
Способ 2. Скрыть строки или колонки в готовом табличном документе
Когда документ уже сформирован (или область выводится в общем коде, который нельзя трогать), используйте свойство Видимость у областей результирующего табличного документа. Получите область строк или колонок и установите свойство в Ложь:
ОбластьСтрок = ТабДок.Область("R10:R15");
ОбластьСтрок.Видимость = Ложь;
ОбластьКолонок = ТабДок.Область("C5");
ОбластьКолонок.Видимость = Ложь;Скрытые таким способом строки и колонки не отображаются на экране и не выводятся на печать, но физически остаются в документе. Это удобно, когда видимость должна зависеть от настройки пользователя: один и тот же документ можно показывать с колонкой «Скидка» или без неё, просто переключая свойство.
Учтите ограничение: свойство Видимость работает для целых строк и колонок. Скрыть отдельную ячейку посередине строки нельзя — можно только очистить её текст или сделать текст и границы незаметными через оформление.
Способ 3. Подавить вывод пустых параметров
Частая ситуация: область нужна, но отдельные поля в ней пустые (нет телефона, комментария, номера ГТД). Выводить пустую подпись «Телефон:» некрасиво. Решается это на уровне текста ячейки макета, а не скрытием области.
В ячейке макета используйте шаблон с параметрами и задайте формат вывода. Если параметр не заполнен, фрагмент шаблона можно подавить, сформировав текст программно и присвоив его одному параметру. Пример:
ТекстКонтактов = "";
Если ЗначениеЗаполнено(Данные.Телефон) Тогда
ТекстКонтактов = "Тел.: " + Данные.Телефон;
КонецЕсли;
Область.Параметры.Контакты = ТекстКонтактов;Если пустой параметр всё равно оставляет пустую строку, которая «раздувает» документ, объединяйте несколько полей в одну ячейку с шаблоном или выносите необязательные строки в отдельные области и выводите их по условию из первого способа.
Выбор способа под конкретную задачу
Три подхода не взаимозаменяемы полностью: у каждого есть сценарий, где он оптимален. Ориентируйтесь на момент принятия решения о скрытии и на то, должна ли область оставаться в структуре документа.
Сравнение способов скрытия
Подходит, когда условие известно до формирования документа. Самый чистый результат, но требует изменения кода формирования.
Подходит, когда документ уже сформирован или видимость переключается настройкой. Область остаётся в структуре документа.
Подходит для необязательных полей внутри нужной области. Не решает задачу скрытия целых блоков.
Комбинировать способы можно и нужно: например, необязательный блок «Доставка» не выводится по условию, а внутри выводимого блока пустые поля подавляются через параметры. Главное — не пытаться решить всё одним приёмом.
Как выбрать действие
Как проверить результат
После внесения изменений сформируйте печатную форму минимум на двух наборах данных: где область должна быть видна и где скрыта. Визуально проверьте, что на месте скрытой области нет пустого промежутка, а границы таблицы сходятся без разрывов.
Дополнительно выведите документ на предварительный просмотр печати: скрытые строки не должны попадать на страницы, а количество страниц не должно «прыгать» из-за невидимых, но занимающих место областей. Если пустое место осталось — скорее всего, область скрыта через оформление, а не удалена из вывода.
Как проверить результат
Нет пустого промежутка, соседние блоки стыкуются
Осталась пустая полоса или разрыв границ таблицы
Скрытые строки и колонки отсутствуют на страницах
На печати видны элементы, скрытые только на экране
Номера строк идут подряд, итоги совпадают с видимыми данными
Пропуски в нумерации, итоги учитывают скрытые строки
При заполненных данных область корректно появляется
Область не выводится никогда или выводится всегда
Типичные ошибки и ограничения
Самая распространённая ошибка — попытка скрыть область макета, а не результирующего документа. Свойство Видимость у области макета не влияет на вывод: макет — это шаблон, и прятать нужно либо до вывода, либо уже в сформированном табличном документе.
Вторая частая проблема — скрытие строк с данными, которые участвуют в итогах или выгрузке. Скрытая строка невидима, но её значения могут попасть в суммовые показатели, если те считаются по области документа. Перед скрытием проверьте, как формируются итоги.
Ещё одно ограничение касается управляемых форм: если табличный документ отображается в элементе формы, изменение видимости областей применяется сразу, но при повторном формировании документа все ручные скрытия сбрасываются — их нужно применять заново после каждого перезаполнения.
Частые вопросы
Можно ли скрыть область прямо в редакторе макета, без кода?
Нет. Редактор макета описывает только шаблон. Видимость управляется программно: либо область не выводится в документ, либо у уже выведенных строк и колонок устанавливается свойство Видимость = Ложь.
Почему скрытая строка всё равно видна при печати?
Скорее всего, свойство Видимость установлено у области макета или у неправильного диапазона результирующего документа. Проверьте, что обращаетесь к области именно результирующего табличного документа (ТабДок.Область(...)), и что адрес диапазона соответствует фактическим строкам после вывода.
Как скрыть колонку таблицы в печатной форме?
Получите область нужной колонки результирующего документа, например ТабДок.Область("C5"), и установите Видимость = Ложь. Если колонка должна исчезать по условию, надёжнее сделать два варианта области в макете — с колонкой и без — и выводить нужный.
Как скрыть область, если печатная форма формируется типовым кодом?
Используйте программное скрытие после вызова типовой процедуры формирования: получите сформированный табличный документ и установите Видимость = Ложь для нужных строк или колонок. Альтернатива — переопределить макет через расширение конфигурации и убрать область из шаблона.
Остаётся пустая строка на месте скрытой области — что делать?
Пустая строка означает, что область всё же выводится, а скрывается только её содержимое, либо скрытие применено не к тому диапазону. Уберите вызов Вывести() для этой области по условию — тогда в документе не останется никаких следов.
Влияет ли скрытие областей на скорость формирования?
Условный вывод немного ускоряет формирование, потому что лишние области не обрабатываются. Скрытие через Видимость на скорость почти не влияет — документ строится целиком. При очень больших табличных документах предпочтительнее не выводить лишнее.
Что важно запомнить
Область в макете 1С не скрывают — её либо не выводят по условию, либо прячут в готовом документе через Видимость = Ложь у строк и колонок. Условный вывод даёт самый чистый результат и не ломает нумерацию и итоги. Пустые поля внутри нужной области подавляйте через параметры. В регламентированных формах скрывайте только необязательные реквизиты и проверяйте результат на предварительном просмотре печати.