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

Документы и Печать · 9 мин

Как очистить значение в табличной части 1С

Как очистить значение в табличной части 1С: вручную, кнопкой «Очистить», обработкой и программно через Очистить(). Проверка результата, ошибки, FAQ.

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

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

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

Как устроена табличная часть и что значит «очистить значение»

Табличная часть состоит из строк, а каждая строка — из реквизитов (колонок): «Номенклатура», «Количество», «Цена», «Сумма». Под «очисткой значения» обычно понимают одно из трёх действий: сбросить значение в одной ячейке, обнулить колонку целиком во всех строках или удалить сами строки.

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

Очистка значения в отдельной ячейке вручную

Самый частый случай — нужно убрать значение в одной колонке конкретной строки. Порядок действий зависит от типа поля. Для поля ввода (число, строка, дата) установите курсор в ячейку, выделите содержимое и нажмите Delete или Backspace. Для ссылочного поля (номенклатура, контрагент, склад) нажмите кнопку очистки (крестик) внутри поля или выберите «Очистить» в контекстном меню по правой кнопке мыши.

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

Удаление строк и полная очистка таблицы кнопкой

Чтобы удалить одну строку, выделите её и нажмите Delete на панели табличной части либо комбинацию Shift+Delete, в зависимости от настроек формы. Для удаления нескольких строк выделите их с зажатой Ctrl или Shift и повторите действие. Стандартная команда «Удалить» также доступна в меню «Ещё» таблицы.

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

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

Программная очистка: метод Очистить() и работа с реквизитами строки

Разработчику и администратору доступны программные способы. Метод Очистить() удаляет все строки табличной части объекта:

ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();

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

ДокументОбъект.Записать();

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

Для Каждого Строка Из ДокументОбъект.Товары Цикл

Строка.Цена = 0;

Строка.Сумма = 0;

КонецЦикла;

Для ссылочных реквизитов корректное обнуление выглядит так: Строка.Склад = Справочники.Склады.ПустаяСсылка();. Присвоение Неопределено может вызвать ошибку несоответствия типов, если реквизит имеет составной тип с ограничениями.

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

Массовая очистка через групповое изменение реквизитов

Когда очистить значения нужно в десятках или сотнях документов, ручная работа не подходит. В типовых конфигурациях на управляемых формах есть стандартная обработка «Групповое изменение реквизитов» (раздел «Администрирование» — «Обслуживание» — «Корректировка данных», точное расположение зависит от конфигурации).

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

Очистка в проведённых документах: ограничения и риски

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

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

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

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

Состояние табличной части после очистки
Норма

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

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

При записи появляются сообщения о незаполненных обязательных реквизитах

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

Итоги пересчитались и соответствуют очищенным данным

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

Итоги показывают старые суммы — пересчёт не сработал

Движения по регистрам после перепроведения
Норма

Отчёты по остаткам и взаиморасчётам отражают новые данные

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

Остатки не изменились или появились отрицательные значения

Типичные ошибки и как их избежать

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

Типичные ошибки
01
Очистка табличной части проведённого документа без перепроведения — движения по регистрам остаются старыми, учёт расходится с документами
02
Присвоение Неопределено ссылочному реквизиту вместо пустой ссылки — ошибка несоответствия типов при выполнении кода
03
Удаление строк вместо обнуления колонки — теряются данные других колонок строки, которые нужны для учёта
04
Массовая очистка без резервной копии — при ошибке в отборе восстановить данные невозможно
05
Игнорирование пересчёта итогов — сумма документа в шапке не совпадает с суммами строк

Отдельная ошибка — очистка значений в форме без записи объекта. Если вы очистили данные и закрыли документ без записи, изменения потеряются. И наоборот: при программной очистке через объект забытие метода Записать() оставит базу без изменений, что иногда принимают за «неработающий» код.

Итог

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

Одиночное значение очищается клавишей Delete или кнопкой очистки поля, все строки — кнопкой «Очистить» или методом ТабличнаяЧасть.Очистить(). Для массовой обработки используйте групповое изменение реквизитов или код, обязательно с резервной копией. После очистки в проведённых документах перепроведите их и сверьте отчёты по регистрам.

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

Как очистить табличную часть, если кнопки «Очистить» нет на форме?

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

Можно ли очистить только одну колонку во всех строках без удаления строк?

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

Почему после очистки цены сумма в строке не обнулилась?

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

Что произойдёт, если очистить табличную часть проведённого документа?

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

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

Стандартная обработка «Групповое изменение реквизитов» работает с табличными частями ограниченно. Надёжный способ — выполнить цикл по выбранным документам с вызовом Очистить() и Записать() через консоль кода или простую внешнюю обработку, предварительно проверив результат на копии базы.

Можно ли отменить очистку табличной части?

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