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