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