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

Администрирование · 10 мин

Как удалить записи регистра сведений в 1С 8

Как удалить записи регистра сведений в 1С 8: через форму списка, обработку, запрос и программно. Очистка периодических и подчинённых регистров, риски и проверка.

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

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

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

Как определить тип регистра и способ удаления

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

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

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

Как выбрать способ удаления

Регистр подчинён регистраторуНайдите документы-регистраторы и отмените их проведение или пометьте на удаление
Нужно удалить несколько записей вручнуюОткройте форму списка регистра, выделите строки и нажмите Delete
Нужно удалить тысячи записей по условиюИспользуйте обработку «Групповое изменение реквизитов» или программный код с набором записей
Нужно очистить регистр полностьюПрограммно создайте пустой набор записей и запишите его без отбора

Удаление записей через форму списка

Самый простой способ подходит, когда записей немного и видно, какие именно строки нужно убрать. Откройте регистр через главное меню: «Все функции» → «Регистры сведений» → выберите нужный регистр. Если пункт «Все функции» не отображается, включите его через «Сервис» → «Параметры» → «Отображать команду Все функции».

В открывшемся списке выделите нужные записи: одну — кликом, несколько подряд — с зажатой клавишей Shift, произвольные — с клавишей Ctrl. Нажмите Delete или кнопку «Удалить» на панели инструментов и подтвердите действие. Записи удаляются сразу, без пометки на удаление — повторное подтверждение через «Удаление помеченных объектов» не требуется.

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

Ручное удаление через форму списка
  1. 1
    Откройте «Все функции» → «Регистры сведений» → нужный регистр
  2. 2
    Настройте отбор, чтобы показать только удаляемые записи
  3. 3
    Выделите строки мышью с Ctrl или Shift
  4. 4
    Нажмите Delete и подтвердите удаление
  5. 5
    Обновите список (F5) и убедитесь, что записи исчезли

Очистка через обработку «Групповое изменение реквизитов»

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

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

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

Программное удаление записей встроенным языком

Для массовой очистки по сложному условию удобнее всего встроенный язык 1С. Базовый приём — создать набор записей, установить отбор и записать пустой набор: все записи, попадающие под отбор, будут удалены. Это безопаснее, чем перебор и удаление каждой записи по отдельности, потому что операция выполняется одним обращением.

bsl
// Удаление записей регистра по конкретной номенклатуре
Набор = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
Набор.Отбор.Номенклатура.Установить(НужнаяНоменклатура);
Набор.Записать(); // пустой набор с отбором удаляет записи по отбору

// Полная очистка регистра (без отбора)
Набор = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
Набор.Записать();

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

Код можно выполнить через консоль кода (внешнюю обработку) или в толстом клиенте. В файловой базе запустите конфигуратор и выполните код через отладку внешней обработки. На клиент-серверной базе массовые удаления лучше выполнять в монопольном режиме или в период минимальной нагрузки — длинные транзакции блокируют таблицу регистра и мешают пользователям.

Удаление записей регистра, подчинённого регистратору

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

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

Проверка результата и типичные ошибки

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

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

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

Список регистра с прежним отбором
Норма

Удалённые записи не отображаются

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

Часть записей осталась — отбор был неполным

Количество записей до и после
Норма

Разница равна числу целевых записей

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

Удалено больше — отбор был шире, чем нужно

Отчёты и документы, использующие регистр
Норма

Цены, курсы, адреса подставляются корректно

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

Пустые значения в отчётах — удалены нужные данные

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

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

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

Можно ли восстановить удалённые записи регистра сведений?

Штатной «корзины» в 1С нет: при удалении записи регистра она стирается из таблицы сразу. Восстановление возможно только из резервной копии базы — целиком или выборочной выгрузкой нужных данных из копии через обработку загрузки. Поэтому копия перед массовой очисткой обязательна.

Почему кнопка «Удалить» в списке регистра неактивна?

Чаще всего регистр подчинён регистратору — его записи удаляются только через документы. Вторая причина — недостаток прав: у пользователя нет права «Удаление» на этот объект. Проверьте свойства регистра в конфигураторе и роль пользователя.

Как удалить записи регистра за определённый период?

Для периодического регистра программно установите отбор по периоду: создайте набор записей, задайте отбор с датами (например, через два элемента отбора «Период» с видами сравнения «больше или равно» и «меньше») и запишите пустой набор. В форме списка можно настроить такой же отбор визуально и удалить отфильтрованные строки.

Удалятся ли записи регистра при пометке документа на удаление?

Для подчинённого регистра — да, но не сразу: записи физически исчезают, когда документ удалён из базы через «Удаление помеченных объектов». До этого момента пометка снимает проведение, и движения уже недоступны. Независимый регистр с документами не связан, и пометка документа на него не влияет.

Что быстрее: удаление по одной записи или через набор записей?

Набор записей с отбором значительно быстрее: платформа выполняет один SQL-запрос DELETE с условием вместо тысяч отдельных обращений. Перебор менеджеров записей оправдан только для единичных удалений или когда перед удалением каждой строки нужна дополнительная логика.

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

Да. В пользовательском режиме доступны форма списка регистра и типовая обработка «Групповое изменение реквизитов» (если она есть в конфигурации). Внешние обработки — консоль кода или универсальный подбор и обработка объектов — тоже запускаются из режима «Предприятие» через «Файл» → «Открыть».

Итог

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

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