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

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

Как удалить область в макете в 1С

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

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

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

Что такое область в макете и когда её нужно удалять

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

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

Как удалить область через конфигуратор

Откройте конфигуратор, найдите нужный макет в дереве конфигурации (обычно в ветке «Общие — Макеты» или в составе конкретного объекта, например документа) и откройте его двойным щелчком. Макет отобразится как табличный документ. Выделите строки или колонки, которые входят в область: проще всего кликнуть по имени области в специальной панели имён слева или сверху, если она отображается.

Далее вызовите меню «Таблица — Имена — Удалить имя» (в некоторых версиях платформы пункт находится в подменю «Именованные области»). Платформа покажет список имён, привязанных к выделенному диапазону, либо сразу предложит удалить имя, если выделена вся область целиком. Подтвердите удаление и сохраните макет.

Порядок действий в конфигураторе
  1. 1
    Откройте макет в конфигураторе
  2. 2
    Выделите строки или колонки области либо кликните по её имени
  3. 3
    Откройте меню «Таблица — Имена — Удалить имя»
  4. 4
    Подтвердите удаление имени области
  5. 5
    Сохраните макет и обновите конфигурацию базы данных при необходимости
  6. 6
    Проверьте код: удалите или закомментируйте вызовы ПолучитьОбласть с этим именем

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

Программное удаление области из табличного документа

Когда печатная форма уже сформирована, область удаляется методом УдалитьОбласть объекта «ТабличныйДокумент». Метод принимает область (объект «ОбластьЯчеекТабличногоДокумента»), тип смещения и тип смещения по горизонтали. Чаще всего удаляют строки целиком, поэтому используется смещение по вертикали.

bsl
// Удаление строк с 5 по 8 из сформированного документа
ОбластьУдаления = ТабДок.Область(5, , 8, );
ТабДок.УдалитьОбласть(ОбластьУдаления, ТипСмещенияТабличногоДокумента.ПоВертикали);

Если нужно удалить именованную область, которая была выведена в документ, сначала найдите её методом НайтиОбласть или обратитесь по имени: ТабДок.Область("ИмяОбласти"). Учтите, что после удаления строк нумерация нижележащих областей сдвинется — если дальше по коду вы обращаетесь к ячейкам по абсолютным номерам строк, пересчитайте координаты.

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

Удаление колонок и прямоугольных областей

Для вертикальных областей (колонок) логика та же, но смещение указывается горизонтальное. Выделяется область по номерам колонок: ТабДок.Область(, 3, , 4) — колонки с третьей по четвёртую. После удаления колонки справа сдвинутся влево, и ширина документа уменьшится.

bsl
// Удаление колонок 3 и 4
ОбластьКолонок = ТабДок.Область(, 3, , 4);
ТабДок.УдалитьОбласть(ОбластьКолонок, ТипСмещенияТабличногоДокумента.ПоГоризонтали);

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

Проверка результата и типичные ошибки

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

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

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

Что делать, если область не удаляется

Если пункт «Удалить имя» неактивен, проверьте, что выделена именно область целиком, а не произвольный фрагмент. Попробуйте открыть список всех имён через «Таблица — Имена — Именованные области» (или аналогичный пункт вашей версии платформы) и удалить имя оттуда. В управляемых формах редактирования макета список областей обычно доступен в отдельной панели.

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

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

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

Область больше не нужна никогда и нигдеУдалите имя и содержимое области в макете через конфигуратор, почистите код
Область нужна иногда, по условиюОставьте область в макете и управляйте её выводом условием в коде
Макет типовой и на поддержкеИспользуйте расширение или программное удаление области из сформированного документа
Нужно убрать часть готового документа один разПримените УдалитьОбласть к табличному документу с нужным типом смещения

Ограничения и безопасные приёмы

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

Для сложных макетов полезно вести соглашение об именовании областей (например, префиксы «Шапка», «Строка», «Подвал») — тогда поиск неиспользуемых областей и их безопасное удаление занимают минуты. Периодически проверяйте макеты на «осиротевшие» области глобальным поиском: если имя не встречается в коде, область — кандидат на удаление.

Итог

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

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

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

Удалил область из макета, а при печати ошибка «Область не найдена». Что делать?

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

Как удалить область, если макет типовой и конфигурация на поддержке?

Без снятия с поддержки макет не изменить. Варианты: создать расширение конфигурации и переопределить макет или процедуру формирования печати; либо формировать документ штатно, а затем программно удалить ненужные области методом УдалитьОбласть перед выводом пользователю.

Можно ли удалить только содержимое области, сохранив строки?

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

Чем удаление области отличается от скрытия строк?

Скрытие (установка свойства видимости или нулевой высоты строки) оставляет область в документе: она занимает логическое место, участвует в нумерации и может проявиться при экспорте. Удаление физически убирает строки со смещением остального содержимого. Для печатных форм, где важна компактность, обычно предпочтительнее удаление или невывод области.

После удаления колонки поехали ширины остальных колонок. Это нормально?

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

Как найти все неиспользуемые области в макете?

Откройте список именованных областей макета, выпишите имена и выполните глобальный поиск каждого имени по конфигурации. Имена, не встречающиеся в коде процедур печати, — кандидаты на удаление. Учитывайте, что имя может формироваться динамически (конкатенацией строк) — такие случаи поиск не покажет, проверяйте код формирования печати вручную.