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