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

Справочники и Данные · 9 мин

Как удалить строку в 1С:Предприятие: инструкция для всех случаев

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

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

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

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

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

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

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

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

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

В списке справочника (номенклатура, контрагенты, сотрудники) и в журнале документов нажатие Delete работает иначе: объект не исчезает, а получает пометку на удаление. Визуально это выглядит как красный крестик на пиктограмме элемента. Помеченный объект продолжает существовать в базе, участвует в старых документах, но система предупреждает, что он выведен из оборота.

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

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

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

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

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

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

Маршрут решения

Как выбрать действие

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

Удаление строки программно: для разработчиков

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

bsl
// Удалить текущую строку табличной части на форме
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
    Объект.Товары.Удалить(ТекущиеДанные);
КонецЕсли;

// Удалить строку по индексу (индексы с нуля)
Объект.Товары.Удалить(0);

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

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

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

Типичные ошибки
01
Удаление строки в цикле «Для Каждого» — после удаления коллекция меняется, часть строк пропускается; перебирайте по индексу с конца
02
Использование Удалить() у объекта вместо пометки на удаление — появляются битые ссылки в документах
03
Забыли записать документ после удаления строки — изменение потеряно при закрытии формы
04
Удаление помеченных объектов без резервной копии — восстановить данные нечем

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

Чтобы удалить несколько строк табличной части, выделите их с зажатой клавишей Ctrl (произвольные строки) или Shift (диапазон), затем нажмите Delete. В некоторых формах множественное выделение отключено — тогда удаляйте по одной или используйте обработки группового изменения, если они предусмотрены конфигурацией.

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

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

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

Для помеченных на удаление объектов откат прост: выделите объект и снова нажмите Delete — пометка снимется. А вот после окончательного удаления помеченных объектов единственный путь восстановления — резервная копия. Поэтому процедуру физического удаления всегда выполняйте после бэкапа и внимательно просматривайте список объектов перед подтверждением.

Итог

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

Строка табличной части удаляется клавишей Delete и фиксируется записью документа. Справочники и документы сначала помечаются на удаление, а стираются через «Удаление помеченных объектов» с контролем ссылок. Перед окончательным удалением всегда делайте резервную копию.

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

Нажал Delete в журнале документов, но документ не исчез. Это ошибка?

Нет, так задумано. Документ получил пометку на удаление — красный крестик на пиктограмме. Он по-прежнему хранится в базе и виден в списке. Окончательно он удалится только после процедуры «Удаление помеченных объектов», и то лишь при отсутствии ссылок на него.

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

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

Почему система не даёт окончательно удалить элемент справочника?

На элемент есть ссылки из других объектов — документов, регистров, других справочников. В окне удаления помеченных объектов система показывает список таких ссылок. Сначала уберите использование элемента (измените или пометьте на удаление ссылающиеся объекты), затем повторите удаление.

Можно ли удалить строку в проведённом документе, не распроводя его?

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

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

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

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

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