Разработка и Конфигурация · 12 мин
Как удалить колонку в табличном документе 1С
Как удалить колонку в табличном документе 1С: в режиме просмотра, через конфигуратор и программно методом УдалитьОбласть. Примеры кода, ошибки и проверка результата.
Табличный документ в 1С — это универсальный объект, который используется для макетов печатных форм, отчётов и вывода данных пользователю. Задача удалить колонку возникает в трёх типовых ситуациях: при ручном редактировании табличного документа в режиме «1С:Предприятие», при изменении макета в конфигураторе и при программной обработке документа перед выводом. В каждом случае действуют свои инструменты и ограничения.
Важно сразу различать два похожих действия: очистку содержимого колонки и физическое удаление самой колонки со сдвигом остальных столбцов влево. Очистка оставляет пустую колонку на месте, удаление — убирает её из структуры документа, и все колонки правее смещаются. Выбор зависит от того, должна ли сохраниться сетка макета или нужно полностью убрать лишний столбец.
Ниже разобраны все три способа с конкретными действиями, примерами кода, типичными ошибками и способами проверить результат. Материал ориентирован на пользователей, работающих с печатными формами, и разработчиков, дорабатывающих вывод отчётов.
Что нужно проверить перед удалением колонки
Прежде чем удалять столбец, убедитесь, что табличный документ доступен для редактирования. В режиме «1С:Предприятие» открытый табличный документ часто находится в режиме «Только просмотр» — в этом случае команды удаления будут неактивны. Режим переключается через меню «Таблица — Вид — Только просмотр» или соответствующей кнопкой на панели инструментов.
Второе условие — отсутствие защиты документа. Если для табличного документа установлена защита (свойство «Защита» у макета или установленное программно), изменить структуру не получится, пока защита не снята. Третий момент — проверьте, не входит ли удаляемая колонка в именованную область: удаление части именованной области может привести к её разрушению и ошибкам при последующем обращении к ней из кода.
Как удалить колонку в режиме «1С:Предприятие»
Это самый простой сценарий: табличный документ открыт пользователем, и нужно убрать лишний столбец вручную. Наведите курсор на серый заголовок колонки (область с буквой или номером столбца над сеткой) и щёлкните по нему — колонка выделится целиком. Затем вызовите контекстное меню правой кнопкой мыши и выберите команду «Удалить». Колонка исчезнет, а все столбцы правее сместятся влево.
Альтернативный путь — меню «Таблица — Удалить — Колонки» (в разных версиях платформы пункт может называться «Удалить колонки»). Этот вариант удобен, когда контекстное меню перегружено или нужно удалить сразу несколько выделенных колонок: выделите их с зажатой клавишей Ctrl или Shift по заголовкам и выполните команду удаления.
Если команда удаления неактивна, проверьте два признака: включён ли режим «Только просмотр» и не установлена ли защита. После снятия ограничений команда станет доступна. Для отмены ошибочного удаления используйте стандартное сочетание Ctrl+Z — платформа поддерживает откат последних действий редактирования.
- 1Снимите режим «Только просмотр»: меню «Таблица — Вид»
- 2Щёлкните по серому заголовку колонки, чтобы выделить её целиком
- 3Нажмите правую кнопку мыши и выберите «Удалить» или используйте меню «Таблица — Удалить — Колонки»
- 4Проверьте, что соседние колонки сместились корректно и данные не потеряны
- 5При ошибке отмените действие через Ctrl+Z
Как удалить колонку в макете конфигуратора
Если колонка лишняя в печатной форме или отчёте, правильное место для правки — макет табличного документа в конфигураторе. Откройте конфигуратор, найдите нужный объект (документ, отчёт, обработка), перейдите на вкладку «Макеты» и откройте макет типа «Табличный документ». Дальнейшие действия аналогичны ручному редактированию: выделите колонку по заголовку и удалите через контекстное меню или меню «Таблица».
Ключевое отличие работы в макете — необходимость следить за именованными областями. Макеты печатных форм обычно разбиты на области («Шапка», «Строка», «Подвал»), и программный код обращается к ним по именам. Если удаляемая колонка входит в горизонтальную область, область сузится, что обычно допустимо. Но если колонка содержала параметр (ячейку с именем в фигурных скобках, например {Номенклатура}), после удаления код, заполняющий этот параметр, выдаст ошибку «Параметр не найден».
Поэтому после удаления колонки в макете обязательно проверьте модуль, который формирует печатную форму: найдите обращения к параметрам удалённой колонки и удалите или закомментируйте соответствующие строки. Затем обновите конфигурацию базы данных (F7) и сформируйте печатную форму заново для проверки.
Как удалить колонку программно
Программное удаление нужно, когда состав колонок определяется динамически: например, отчёт выводится с разным набором столбцов в зависимости от настроек пользователя, и лишние колонки убираются из готового табличного документа перед показом. Основной инструмент — метод УдалитьОбласть объекта «ТабличныйДокумент».
Метод принимает два параметра: область, которую нужно удалить, и тип смещения оставшихся ячеек. Для удаления целой колонки область задаётся адресом вида «C3» (буква C и номер колонки 3 — синтаксис «колонка»), а тип смещения — ТипСмещенияТабличногоДокумента.ПоВертикали, что означает сдвиг колонок справа налево. Пример кода:
// Удалить третью колонку табличного документа
ОбластьКолонки = ТабДок.Область("C3");
ТабДок.УдалитьОбласть(ОбластьКолонки,
ТипСмещенияТабличногоДокумента.ПоВертикали);
Если нужно удалить не всю колонку, а диапазон ячеек в пределах столбца, используйте прямоугольную область вида ТабДок.Область("R2C3:R10C3") — тогда сместятся только ячейки в указанных строках. Для удаления нескольких колонок подряд задайте область диапазоном, например "C3:C5", либо вызывайте метод в цикле, начиная с правой колонки, чтобы индексы не сбивались.
// Удалить колонки с 3-й по 5-ю и очистить содержимое 7-й
ТабДок.УдалитьОбласть(ТабДок.Область("C3:C5"), ТипСмещенияТабличногоДокумента.ПоВертикали);
ТабДок.Область("C4").Очистить(); // после сдвига бывшая 7-я стала 4-йУдаление колонки в отчёте на СКД
Отчёты, построенные на системе компоновки данных, — частный случай: их результат тоже является табличным документом, но править его вручную бессмысленно, так как при следующем формировании отчёт перестроится. Правильный способ «удалить» колонку в СКД — исключить её из настроек отчёта, а не из готового результата.
В пользовательском режиме откройте настройки отчёта (кнопка «Настройки» или «Ещё — Изменить вариант»), перейдите на вкладку «Выбранные поля» и снимите флажок с ненужного поля либо удалите его из списка. После переформирования отчёта колонка исчезнет. Если настройки недоступны пользователю, состав полей меняется в схеме компоновки в конфигураторе или в варианте отчёта.
Программный вариант — вмешательство в настройки компоновщика перед выводом: в модуле отчёта или расширении удалите нужный элемент из коллекции Настройки.Выбор.Элементы. Это надёжнее, чем удалять колонку из сформированного табличного документа, потому что не нарушает группировки, итоги и ресурсы, которые могли ссылаться на это поле.
Типичные ошибки и как их избежать
Самая частая ошибка — попытка удалить колонку в защищённом документе или в режиме просмотра. Симптом одинаковый: команда удаления серая и неактивна. Решение — снять «Только просмотр» и защиту. Вторая распространённая ситуация — программное удаление по неправильному адресу: разработчик указывает область «R3» (строка) вместо «C3» (колонка) и удаляет строку вместо столбца.
Третья группа ошибок связана с последствиями удаления: ссылки на именованные области и параметры, оставшиеся в коде, ошибки в формулах ячеек, ссылавшихся на удалённый столбец, и сбитая ширина колонок при печати. После любого удаления прогоните полный цикл: сформируйте документ, выведите на печать или в PDF и проверьте, что вёрстка не «поехала».
Как проверить результат после удаления
После удаления колонки вручную визуальная проверка проста: соседние столбцы должны сомкнуться, данных из удалённой колонки не должно остаться ни в одной строке, включая подвал и скрытые строки. Прокрутите документ до конца — в длинных таблицах ошибку видно именно в нижней части, где могли остаться итоговые ячейки.
При программном удалении добавьте контрольные точки: выведите значение ТабДок.ШиринаТаблицы до и после удаления — оно должно уменьшиться на число удалённых колонок. Для макетов печатных форм критерий успеха — сформированный документ без ошибок исполнения кода и корректный предпросмотр печати.
Часто задаваемые вопросы
Чем удаление колонки отличается от её скрытия?
Скрытие (через свойство «Видимость» области или установку нулевой ширины) сохраняет колонку в структуре документа: данные остаются, формулы продолжают работать, колонку можно вернуть. Удаление убирает столбец полностью со сдвигом остальных. Скрытие подходит, когда колонка нужна для расчётов, но не должна выводиться; удаление — когда столбец больше не нужен вовсе.
Почему команда «Удалить» неактивна в открытом табличном документе?
Две основные причины: включён режим «Только просмотр» (снимается через меню «Таблица — Вид») или на документ установлена защита. Также команда недоступна, если выделена не вся колонка, а отдельная ячейка, и документ не поддерживает частичное удаление — сначала щёлкните по серому заголовку столбца.
Как удалить сразу несколько несмежных колонок программно?
Вызывайте УдалитьОбласть для каждой колонки отдельно, начиная с самой правой (с наибольшим номером). Если удалять слева направо, после каждого удаления остальные колонки сместятся, и адреса в последующих вызовах укажут не на те столбцы. Альтернатива — собрать смежные диапазоны и удалять их одной областью вида «C3:C5».
Можно ли отменить удаление колонки?
При ручном редактировании — да, стандартной командой отмены Ctrl+Z, пока документ не закрыт. При программном удалении отмены нет: единственный способ восстановить данные — сформировать табличный документ заново. Поэтому перед массовой обработкой имеет смысл сохранить копию документа методом Записать или скопировать область во временный табличный документ.
Удалил колонку из макета, а печатная форма выдаёт ошибку. Что делать?
Откройте модуль, формирующий печатную форму, и найдите строки, где заполняются параметры удалённой колонки (обычно это обращения вида Область.Параметры.ИмяПараметра). Удалите или закомментируйте их. Также проверьте, не входила ли колонка в именованную область, которую код получает по имени, — при необходимости переопределите границы области в макете.
Как убрать колонку из отчёта, чтобы она не появлялась снова?
Если отчёт построен на СКД, удалите поле в настройках отчёта на вкладке «Выбранные поля» и сохраните вариант отчёта. Удаление колонки из уже сформированного табличного документа результата не сохраняется — при следующем формировании отчёт строится заново по настройкам. Для программных отчётов корректируйте настройки компоновщика до вывода результата.
Что важно запомнить
Вручную колонка удаляется через выделение заголовка и команду «Удалить», в макете — тем же способом в конфигураторе с обязательной правкой кода, обращающегося к параметрам, а программно — методом УдалитьОбласть с адресом «C<номер>» и смещением ПоВертикали. Для отчётов на СКД правьте настройки, а не результат. После удаления всегда проверяйте формирование документа и предпросмотр печати.