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