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