Удаление строк из табличной части документа 1С 8.3: клавиши, команды и код

· 9 мин

Содержание

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

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

Порядок действий одинаков для платформы 1С:Предприятие 8.3 в интерфейсе «Такси» и подходит для Бухгалтерии 3.0, ЗУП 3.1, Управления торговлей 11 и других типовых конфигураций. Различия начинаются, когда строка связана с другими данными. О них — ниже по разделам.

1. Как удалить строку в документе 1С: три способа

Все три способа делают одно и то же. Выбирайте тот, что удобнее в моменте.

СпособКак сделатьКогда удобен
⌨️ Клавишавыделить строку → Deleteбыстрее всего, руки на клавиатуре
🖱️ Командная панельвыделить строку → кнопка с крестиком над таблицейкогда строка выделена мышью
📋 Контекстное менюправый щелчок по строке → Удалитькогда панель скрыта или узкая

Клавиша Delete

  1. Откройте документ, например реализацию или поступление.
  2. Перейдите на нужную вкладку табличной части: Товары, Услуги и т. д.
  3. Щёлкните по строке один раз. Строка подсветится.
  4. Нажмите Delete.

Если курсор стоит внутри ячейки в режиме редактирования (мигает курсор в поле), Delete сотрёт символ в поле, а не строку. Сначала нажмите Esc, чтобы выйти из ячейки, потом Delete.

Кнопка в командной панели таблицы

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

Не путайте панель таблицы с панелью всего документа сверху. Крестик в верхней части формы или команда пометки на удаление относятся ко всему документу, а не к строке.

Контекстное меню

Щёлкните правой кнопкой по строке и выберите Удалить. В этом же меню есть Скопировать, Переместить вверх и Переместить вниз — удобно, если строку не удалять, а переставить.

2. Удалить несколько строк или очистить всю таблицу

Строки можно удалять пачкой. Таблицы в типовых конфигурациях поддерживают множественное выделение.

  • 🔹 Ctrl + щелчок — выделяет строки выборочно, по одной.
  • 🔹 Shift + щелчок — выделяет диапазон от первой выделенной до текущей.
  • 🔹 Ctrl+A или Ещё → Выделить все — выделяет все строки таблицы.

После выделения нажмите Delete или кнопку удаления. Уйдут все выделенные строки.

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

Заполнение вместо удаления

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

3. Как вернуть удалённую строку

Отменить удаление строки сочетанием Ctrl+Z в табличной части нельзя. Способ возврата зависит от того, успели ли вы записать документ.

Документ ещё не записан.

  1. Закройте документ крестиком на вкладке.
  2. На вопрос о сохранении изменений ответьте Нет.
  3. Откройте документ заново. Строка на месте.

Минус способа: пропадут и все остальные несохранённые правки в этом документе.

Документ уже записан или проведён. Варианты по убыванию удобства:

  • 🕘 История изменений. Если в базе включено версионирование объектов, у документа есть команда Ещё → История изменений. Там видно прежние версии с составом строк, можно сравнить версии и вернуться к нужной. Настройка включается администратором в разделе Администрирование → Общие настройки.
  • 💾 Резервная копия. Разверните копию в отдельную базу, найдите документ и перенесите строки вручную. Загружать копию поверх рабочей базы ради одной строки нельзя: пропадёт всё, что ввели после копирования.
  • ✍️ Ввести заново. Для двух-трёх строк это самый быстрый путь. Данные берут из печатной формы, выгрузки или первичного документа контрагента.

После возврата строки в проведённый документ проведите его повторно. Иначе движения по регистрам останутся по старому составу.

4. Почему строка в 1С не удаляется

Если кнопка удаления серая, Delete не срабатывает или после удаления документ не записывается, причина почти всегда одна из перечисленных ниже. Проверьте по симптому.

Диагностика: выберите симптом

Проведённый документ сам по себе удалению строк не мешает. Строку в нём можно удалить, а затем провести документ повторно, и движения перепишутся. Мешает именно закрытый период, блокировка или права.

5. Строки в режиме Предприятия и в Конфигураторе

Под словами «удалить строку» в 1С скрываются разные действия. Зависит от того, где вы работаете.

ГдеЧто значит «удалить строку»Как
1С:Предприятие, табличная часть документаубрать позицию из документаDelete, кнопка, контекстное меню
1С:Предприятие, список документов или справочникапометить объект на удалениеDelete или команда пометки
Конфигуратор, модульудалить строку кодаCtrl+L
Конфигуратор, макет печатной формыудалить строку табличного документаправый щелчок по номеру строки → Удалить

Список — это не табличная часть

В табличной части документа Delete удаляет строку сразу. В списке документов или справочников та же клавиша только ставит пометку на удаление. Объект остаётся в базе, рядом с ним появляется красный крестик.

Окончательно помеченные объекты удаляют обработкой Администрирование → Обслуживание → Удаление помеченных объектов. Обработка проверяет ссылки и не удалит объект, который где-то используется.

В Конфигураторе данных нет

Конфигуратор не редактирует строки документов. Там меняется структура: можно удалить реквизит табличной части или всю табличную часть. Это удаляет колонку у всех документов этого вида, а не строку в одном документе.

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

6. Удаление строк в БП, ЗУП и УТ: на что смотреть

Клавиши везде одинаковые. Отличаются последствия удаления.

Бухгалтерия 3.0

Итоги документа, сумма НДС и сумма к оплате пересчитываются автоматически сразу после удаления строки. Если документ уже проведён, проведите его повторно — без этого бухгалтерские проводки останутся прежними.

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

ЗУП 3.1

В документах с несколькими вкладками — например, в начислении зарплаты — данные по сотруднику есть на разных вкладках: начисления, удержания, НДФЛ, взносы. Удалив строку на одной вкладке, проверьте остальные и пересчитайте документ. Если сотрудник в документе вообще не нужен, удалите его со всех вкладок, а не только с первой.

Управление торговлей 11

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

Удалять строку из заказа, по которой уже есть отгрузка, не стоит: данные заказа и накладной разойдутся. Сначала разберитесь с отгрузочным документом.

7. Как удалить строку табличной части программно

Для обработок и доработок пригодятся три приёма. В коде строку удаляет метод Удалить() коллекции. Он принимает саму строку или её индекс.

Удаление по условию через НайтиСтроки

Самый надёжный вариант: сначала собрать строки в массив, потом удалять. Коллекция при этом не меняется во время перебора.

// Удалить из документа все строки с нулевым количеством
Отбор = Новый Структура("Количество", 0);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
    Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;

Обратный цикл по индексам

Когда условие сложнее простого отбора, перебирайте строки с конца. Удаление строки с большим индексом не сдвигает строки с меньшими индексами.

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

При пяти строках цикл пройдёт индексы 4, 3, 2, 1, 0. Граница Всего посчитана один раз до цикла, поэтому удаление её не ломает.

Классическая ошибка — цикл Для Каждого прямо по Объект.Товары с удалением внутри. После удаления строки следующая сдвигается на её место и пропускается. Похожий цикл по индексам от 0 вверх заканчивается ошибкой выхода индекса за границы диапазона.

Запрет удаления строки в форме

Иногда нужно, наоборот, не дать пользователю удалить строку. Для этого у элемента формы таблицы есть событие ПередУдалением.

&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
    ТекущиеДанные = Элемент.ТекущиеДанные;
    Если ТекущиеДанные <> Неопределено И ТекущиеДанные.Количество > 0 Тогда
        Отказ = Истина;
        ПоказатьПредупреждение(, "Сначала обнулите количество в строке.");
    КонецЕсли;
КонецПроцедуры

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

💡 После программного удаления строк в объекте документа не забудьте записать его: ДокументОбъект.Записать() или Записать(РежимЗаписиДокумента.Проведение) для проведённого. Номера строк платформа пересчитает сама.

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

Удалённая строка исчезает из базы сразу?
Нет. Пока документ не записан, строка удалена только в открытой форме. В базу изменение попадает после записи или проведения.
Можно ли удалить строку в проведённом документе?
Да, если документ не в закрытом периоде. После удаления проведите документ повторно, чтобы обновились проводки и движения по регистрам.
Почему в списке документов Delete не удаляет, а ставит крестик?
В списках клавиша помечает объект на удаление. Окончательно его удаляет обработка удаления помеченных объектов после проверки ссылок.
Как узнать, кто удалил строку из документа?
Если включено версионирование, откройте историю изменений документа и сравните версии: видно автора и время каждой версии. Без версионирования поможет журнал регистрации — в нём есть факт записи документа и пользователь, но не состав строк.
Сбивается ли нумерация после удаления строки?
Нет. Колонка N пересчитывается автоматически: строки после удалённой сдвигаются на номер вверх.