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