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

Быстрый старт · 9 мин

Как удалить строку табличной части в 1С

Как удалить строку табличной части в 1С: клавиши Del и Shift+Del, команда «Удалить», очистка всей ТЧ, программное удаление строк и типичные ошибки пользователей.

Табличная часть (ТЧ) в 1С — это блок строк внутри документа или элемента справочника: товары в накладной, услуги в акте, сотрудники в ведомости. Строки ТЧ постоянно добавляются, редактируются и удаляются, поэтому вопрос «как удалить строку» возникает у пользователей чаще всего именно при работе с документами. Способов несколько: клавишей Delete, командой контекстного меню, кнопкой на панели таблицы, а для разработчика — методами встроенного языка.

Важно понимать разницу между удалением строки и очисткой всей табличной части, а также между удалением и пометкой на удаление. Строка ТЧ не является самостоятельным объектом базы — она существует только внутри документа, поэтому удаляется сразу и без отдельной пометки. Однако если документ проведён, удаление строки повлияет на движения по регистрам, и это нужно учитывать до сохранения изменений.

Ниже разобраны все практические сценарии: удаление одной строки, нескольких строк, полной очистки ТЧ, программное удаление, а также ситуации, когда удалить строку не получается и что с этим делать.

Удаление одной строки табличной части

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

В конфигурациях на управляемых формах (1С:Предприятие 8.3, интерфейс «Такси») команда удаления может быть спрятана в меню «Ещё» над таблицей. Если кнопки с крестиком не видно, откройте это меню — пункт «Удалить» там присутствует практически всегда.

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

Порядок действий
  1. 1
    Откройте документ и найдите нужную табличную часть
  2. 2
    Щелчком мыши выделите строку, которую нужно удалить
  3. 3
    Нажмите Delete или кнопку с крестиком на панели таблицы
  4. 4
    Запишите документ кнопкой «Записать» или «Провести и закрыть»
  5. 5
    Проверьте, что строка исчезла, а итоговые суммы пересчитались

Удаление нескольких строк сразу

Когда нужно убрать несколько позиций, не обязательно удалять их по одной. Выделите группу строк: соседние — с зажатой клавишей Shift (клик по первой и последней строке диапазона), произвольные — с зажатой клавишей Ctrl (клик по каждой нужной строке). Затем нажмите Delete или команду «Удалить» — все выделенные строки будут удалены одним действием.

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

Полная очистка табличной части

Если нужно удалить все строки, не очищайте их вручную. В большинстве типовых документов есть команда «Очистить» — она находится в меню «Ещё» над табличной частью или вызывается сочетанием Shift+Delete. Перед очисткой программа обычно спрашивает подтверждение, поскольку действие массовое.

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

Удаление строки в проведённом документе

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

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

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

Контрольные точки

Как проверить результат

Строка в табличной части
Норма

Строки нет в списке после записи документа

Тревожный признак

Строка вернулась после переоткрытия — документ не был записан

Статус проведения
Норма

Документ проведён, движения соответствуют новому составу строк

Тревожный признак

Документ остался распроведённым или проведён со старыми движениями

Итоговые суммы
Норма

Сумма документа пересчиталась без удалённой строки

Тревожный признак

Сумма не изменилась — возможно, строка удалена не из той табличной части

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

Для разработчиков и при доработке конфигураций строки ТЧ удаляют методами встроенного языка. Основные варианты: метод Удалить() — по объекту строки или её индексу, и метод Очистить() — для удаления всех строк. Нумерация индексов начинается с нуля.

// Удалить первую строку табличной части "Товары"

Объект.Товары.Удалить(0);

// Удалить текущую строку (например, в цикле с конца)

Для Инд = 1 По Объект.Товары.Количество() Цикл

Объект.Товары.Удалить(Объект.Товары.Количество() - Инд);

КонецЦикла;

// Очистить табличную часть полностью

Объект.Товары.Очистить();

Два важных правила. Во-первых, при удалении строк в цикле идите с конца таблицы к началу — иначе индексы сместятся, и часть строк будет пропущена. Во-вторых, после изменений вызовите Записать() объекта, иначе изменения не попадут в базу. При работе на управляемой форме с данными типа «ДанныеФормыКоллекция» используется тот же метод Удалить(), но строку сначала получают через НайтиПоИдентификатору().

bsl
// Удаление строк с условием (с конца коллекции)
Для Инд = 1 По Объект.Товары.Количество() Цикл
    Строка = Объект.Товары[Объект.Товары.Количество() - Инд];
    Если Строка.Количество = 0 Тогда
        Объект.Товары.Удалить(Строка);
    КонецЕсли;
КонецЦикла;

Почему строка не удаляется: типичные причины

Если клавиша Delete и команда меню не срабатывают, проверьте несколько причин. Самая частая — табличная часть находится в режиме просмотра: документ открыт «только для чтения» или поле таблицы недоступно. Вторая причина — нехватка прав: администратор ограничил роль пользователя. Третья — дата запрета редактирования: документ попадает в закрытый период.

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

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

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

Можно ли восстановить удалённую строку табличной части?

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

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

Пометка на удаление применяется к целым объектам — документам и элементам справочников. Строка табличной части объектом не является, она хранится внутри документа, поэтому удаляется сразу и без пометки.

Delete не работает в табличной части, что делать?

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

Как удалить все строки ТЧ, кроме нужных?

Выделите ненужные строки с зажатой Ctrl и удалите их одной командой. Если строк много, проще скопировать нужные позиции в новый документ, а старый очистить или пометить на удаление.

Почему после удаления строки сумма документа не изменилась?

Скорее всего, документ не записан или не перепроведён. Также проверьте, из той ли табличной части удалена строка — в некоторых документах их несколько (например, «Товары» и «Услуги»), а итог считается по конкретной.

Как программно удалить строку по условию, а не по номеру?

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

Итог

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

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