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