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

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

Как почистить регистр в 1С ЗУП: пошаговая инструкция

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

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

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

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

Какие регистры есть в ЗУП и чем они отличаются

Прежде чем чистить, нужно понять тип регистра, потому что от этого зависит безопасный способ очистки. В ЗУП используются четыре основных вида регистров, и у каждого своя логика хранения данных.

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

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

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

Любая очистка начинается с резервной копии. Для файловой базы достаточно скопировать файл 1Cv8.1CD в отдельную папку при остановленной работе пользователей. Для клиент-серверной базы делают выгрузку через конфигуратор (Администрирование → Выгрузить информационную базу) или штатный бэкап средствами СУБД.

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

Способ 1: ручная очистка через форму списка

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

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

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

Способ 2: программная очистка через набор записей

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

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

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

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

Второй параметр метода Записать(Истина) включает замещение существующих записей — без него пустой набор не очистит данные. После выполнения проверьте регистр через форму списка: записей с указанным отбором быть не должно.

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

Порядок программной очистки
  1. 1
    Сделайте резервную копию базы
  2. 2
    Определите тип регистра и наличие регистратора
  3. 3
    Напишите код с пустым набором записей и нужным отбором
  4. 4
    Выполните код сначала на копии базы
  5. 5
    Проверьте регистр через форму списка
  6. 6
    Проверьте связанные отчёты: расчётные листки, остатки отпусков
  7. 7
    Перенесите действие на рабочую базу

Способ 3: типовые обработки и групповое перепроведение

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

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

Сравнение способов очистки

Ручное удаление

Подходит для независимых регистров сведений с малым числом записей. Не работает для больших объёмов и регистров с регистратором.

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

Универсальный способ для любых регистров и объёмов. Требует навыков работы с кодом и обязательного теста на копии.

Перепроведение документов

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

Пометка и удаление документов

Чистит движения вместе с источником. Необратимо: удалённые документы восстановить нельзя.

Частая ситуация: чистка после переноса данных или тестирования

Типовой сценарий — после миграции из ЗУП 2.5 или сторонней программы в регистрах остались дублирующие или неверные остатки. Здесь логика такая: сначала найдите документы-источники (обычно это «Перенос данных» или «Начальная штатная расстановка» и подобные), исправьте или удалите их — движения перезапишутся автоматически при перепроведении.

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

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

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

Дополнительная проверка — тестирование и исправление базы (конфигуратор → Администрирование → Тестирование и исправление) в режиме проверки ссылочной целостности. Оно покажет битые ссылки, если очистка задела связанные объекты.

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

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

Список записей регистра
Норма

Лишних записей нет, нужные на месте

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

Пусто там, где должны быть данные, или дубли остались

Расчётные листки и своды
Норма

Суммы совпадают с ожидаемыми

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

Отчёты пустые или суммы изменились без причины

Остатки отпусков
Норма

Остатки по сотрудникам корректны

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

Остатки обнулились или стали отрицательными

Тестирование ссылочной целостности
Норма

Ошибок нет

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

Найдены битые ссылки на удалённые объекты

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

FAQ

Можно ли очистить регистр накопления, не трогая документы?

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

Почему регистр не даёт удалить записи вручную?

Скорее всего, регистр подчинён регистратору — его записи принадлежат документам и управляются ими. Удаляйте или распроводите документ-источник, либо используйте программную очистку набора записей.

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

Для периодического регистра сведений установите отбор набора записей по измерению и обработайте записи выборкой запроса с условием по периоду. Для регистров накопления правильнее перепровести или распровести документы нужного периода.

Что делать, если после очистки отчёты не сходятся?

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

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

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

Нужно ли монопольно блокировать базу для очистки?

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

Итог

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

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