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

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

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

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

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

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

Перед любыми массовыми изменениями сделайте резервную копию информационной базы или хотя бы выгрузку данных регистра. Удаление записей регистра сведений необратимо: откатить его можно только восстановлением из копии.

Что важно знать о независимом регистре перед удалением

Независимый регистр сведений не имеет регистратора: каждая запись существует сама по себе и идентифицируется набором измерений (и периодом, если регистр периодический). Это значит, что удаление записи не затрагивает документы и не требует перепроведения — но и «найти виновный документ» для отката не получится.

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

Проверить режим регистра можно в конфигураторе: откройте свойства регистра и посмотрите поле «Режим записи». Если там «Независимый» — применимы все способы из этой статьи. Если «Подчинение регистратору» — записи удаляются только через распроведение или удаление документа-регистратора.

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

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

Найдите нужную строку — используйте отбор (кнопка «Ещё» → «Настроить список») или поиск по значению измерения. Выделите запись и нажмите кнопку «Удалить» на панели инструментов, команду в меню «Ещё» или сочетание клавиш Shift+Delete. Платформа запросит подтверждение — после него запись удаляется физически, без пометки удаления.

Если команда удаления недоступна (кнопка серая), причины обычно две: у пользователя нет права «Удаление» на этот регистр, либо регистр подчинён регистратору. Права проверяются у администратора, режим регистра — в конфигураторе.

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

Массовое удаление по условию

Групповое изменение реквизитов

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

Выделение нескольких строк в списке

Если записей немного (десятки), выделите их в форме списка с зажатой клавишей Ctrl или Shift и нажмите Shift+Delete — платформа удалит все выделенные строки после подтверждения. Способ не подходит для тысяч записей: выделение и удаление займут много времени и могут надолго заблокировать таблицу в клиент-серверном режиме.

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

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

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

Для периодического регистра добавьте отбор по периоду, иначе удалятся записи по всем датам. Перед Записать() полезно выполнить Прочитать() и проверить НаборЗаписей.Количество() — так вы увидите, сколько записей будет затронуто, и не удалите лишнего из-за ошибки в отборе.

Альтернатива — менеджер записи: РегистрыСведений.ИмяРегистра.СоздатьМенеджерЗаписи(), заполнение измерений и метод Удалить(). Он подходит для точечного удаления одной записи по известному ключу, но для массовых операций медленнее набора записей.

Полная очистка регистра

Чтобы удалить все записи независимого регистра, используйте набор записей без отбора: создайте набор и сразу вызовите Записать() — платформа очистит всю таблицу регистра. Это самая быстрая операция, но и самая опасная: отбор отсутствует, поэтому удаляется всё без исключения.

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

Перед полной очисткой выгрузите записи регистра в файл: в типовых есть обработка «Выгрузка и загрузка данных XML», а для разовой задачи подойдёт сохранение таблицы через консоль запросов или отчёт. Восстановить данные из выгрузки проще, чем из резервной копии всей базы.
ПЗ
Практическое замечание

Типичные ошибки и ограничения

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

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

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

Проверка результата после удаления

После операции обновите форму списка регистра (F5) и повторите отбор по тем же условиям: отобранных записей быть не должно. При программном удалении добавьте контрольный Прочитать() с тем же отбором и проверьте, что Количество() равно нулю.

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

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

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

Повторный отбор в списке регистра
Норма

Записи по условию отсутствуют

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

Записи остались — отбор не сработал или нет прав

Журнал регистрации
Норма

Нет ошибок за время операции

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

Ошибки транзакций или отказ в доступе

Связанные отчёты и механизмы
Норма

Данные обновились, обмены работают

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

Отчёты показывают старые значения, обмены выдают ошибки

Итог

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

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

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

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

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

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

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

Как удалить записи периодического регистра за конкретную дату?

В форме списка установите отбор по полю «Период» равным нужной дате и удалите отобранные строки. Программно — добавьте в набор записей отбор по периоду: НаборЗаписей.Отбор.Период.Установить(НужнаяДата) — и вызовите Записать().

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

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

Чем отличается удаление через набор записей от удаления через менеджер записи?

Менеджер записи удаляет одну запись по полному ключу измерений — это точечный инструмент. Набор записей с отбором удаляет все записи, попадающие под условие, и работает быстрее при массовых операциях, так как выполняется одной транзакцией.

Можно ли удалить записи регистра без прав администратора?

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