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