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

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

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

Как удалить строку в табличной части документа, списке справочника и таблице значений в 1С. Клавиши, команды меню, код для разработчика и частые ошибки.

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

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

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

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

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

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

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

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

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

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

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

Физическое удаление помеченных объектов выполняется отдельно: в разделе «Администрирование» выберите «Обслуживание» → «Удаление помеченных объектов» (в некоторых конфигурациях путь — «Операции» → «Удаление помеченных объектов»). Система проверит ссылки на объект: если на него ссылаются другие документы или элементы, удалить его не получится, пока ссылки не будут устранены.

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

Самая частая причина — документ проведён. В ряде конфигураций редактирование табличной части проведённого документа заблокировано или требует отмены проведения. Нажмите «Ещё» → «Отменить проведение», удалите строку и проведите документ заново. Помните: перепроведение изменит движения по регистрам, а в закрытом периоде это может быть запрещено датой запрета редактирования.

Вторая причина — недостаток прав. Если у пользователя нет права «Изменение» или «Удаление» на объект, кнопки будут неактивны, а Delete не сработает. Проверить это просто: если команда «Удалить» серая в меню и в контекстном списке — обратитесь к администратору за настройкой ролей.

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

Типичные ошибки
01
Удаление строки без записи документа — изменения теряются при закрытии формы
02
Пометка элемента справочника вместо удаления строки табличной части — перепутаны разные операции
03
Отмена проведения в закрытом периоде без проверки даты запрета редактирования
04
Удаление автоматически формируемых строк без отключения механизма, который их создаёт

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

Динамические списки (журналы документов, списки в рабочих местах) отображают данные из базы, и удаление в них происходит тем же способом, что и в списке справочника: выделите строку и нажмите Delete — объект будет помечен на удаление. Если список настроен только на просмотр, команда удаления будет недоступна.

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

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

Как удалить строку программно (для разработчиков)

Во встроенном языке 1С строку табличной части удаляют методом Удалить() коллекции строк. Есть два подхода: удалить конкретную строку по объекту или найти строки по условию и удалить их в цикле.

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

Документ.Товары.Удалить(ТекущаяСтрока);

// Удалить все строки с нулевым количеством

Индекс = Документ.Товары.Количество() - 1;

Пока Индекс >= 0 Цикл

Если Документ.Товары[Индекс].Количество = 0 Тогда

Документ.Товары.Удалить(Индекс);

КонецЕсли;

Индекс = Индекс - 1;

КонецЦикла;

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

Для таблиц значений логика аналогична: методы Удалить(Строка), Удалить(Индекс) и Очистить(). После программного удаления строк из табличной части объекта не забудьте записать объект — иначе изменения останутся только в памяти.

bsl
Документ.Товары.Удалить(ТекущаяСтрока); // удалить строку табличной части

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

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

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

Для помеченных на удаление объектов восстановление проще: снимите пометку командой «Пометить на удаление / Снять пометку». Но после физического удаления через «Удаление помеченных объектов» восстановить данные можно только из резервной копии.

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

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

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

Итоги пересчитались после удаления строки

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

Суммы не изменились — документ не записан или пересчёт отключён

Список справочника
Норма

Элемент отображается с пометкой на удаление (перечёркнут)

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

Элемент исчез без пометки — возможно, выполнено прямое удаление

Повторное открытие документа
Норма

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

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

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

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

Как удалить сразу все строки табличной части?

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

Почему кнопка «Удалить» неактивна?

Чаще всего не хватает прав пользователя на изменение объекта, документ проведён и редактирование заблокировано, либо список открыт в режиме только для просмотра. Проверьте статус документа и обратитесь к администратору для проверки ролей.

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

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

Можно ли восстановить удалённую строку документа?

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

Как удалить строку в 1С через браузер (веб-клиент)?

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

Строка удаляется, но появляется снова после записи. Что делать?

Строка, скорее всего, создаётся автоматическим механизмом конфигурации — например, пересчётом, распределением или заполнением по другому документу. Найдите и измените источник автозаполнения, а не саму строку.

Итог

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

Строка табличной части удаляется клавишей Delete с последующей записью документа. Объект из списка сначала помечается на удаление, а стирается через обработку удаления помеченных объектов. Перед удалением проверьте проведение документа, права доступа и наличие резервной копии при массовых операциях.