Очистить регистр сведений 1С - быстро и полностью

Регистры сведений в 1С со временем накапливают огромное количество ненужных данных. Это приводит к замедлению работы программы и переполнению дискового пространства на сервере. В этой статье мы рассмотрим самые эффективные способы очистки регистров сведений, которые позволят значительно ускорить 1С и освободить место на диске.

Что такое регистр сведений и когда его нужно очищать

Регистр сведений в 1С - это специальная база данных для хранения разнообразной информации. Она устроена как таблица из строк и столбцов. Строки называются записями, а столбцы - измерениями. Каждая запись содержит конкретные данные в разрезе измерений.

Например, в регистре сведений ЦеныНоменклатуры хранятся цены в разрезе товаров и дат. Одна запись будет содержать: товар, дату и цену. В регистре КурсыВалют хранятся курсы валют в разрезе валют и дат.

Существует два вида регистров сведений:

  • Независимые - данные записываются напрямую в регистр
  • Подчиненные - данные записываются через документы-регистраторы

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

  1. Замедление работы и торможение программы
  2. Увеличение размера базы данных и переполнение дискового пространства
  3. Затруднения при администрировании и обслуживании
  4. Ошибки и сбои при формировании отчетов

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

4 способа быстро очистить регистр сведений в 1С

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

Для полной программной очистки независимого регистра сведений достаточно всего 2 строк кода. Рассмотрим на примере регистра КурсыВалют:

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

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

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

Очистка независимого регистра с отбором по измерениям

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

Например, нужно удалить записи регистра ЦеныНоменклатуры только по конкретным товарам:

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

Таким образом, очищаются записи только по выбранным товарам. Остальные записи остаются в регистре.

Полная и выборочная очистка регистра, подчиненного документам

В отличие от независимых регистров, данные в подчиненные регистры попадают только через документы-регистраторы.

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

Полная очистка регистра по определенному регистратору:

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

Выборочная очистка с дополнительным отбором по измерениям:

НабЗап.Отбор.Номенклатура.Установить(МойТовар); НабЗап.Записать();

1С очистить регистр сведений за период

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

НабЗап = РегистрыСведений.Продажи.СоздатьНаборЗаписей(); НачалоПериода = НачалоМесяца(Дата(2023,2,1)); КонецПериода = КонецМесяца(Дата(2023,2,28)); НабЗап.УстановитьПериод(НачалоПериода, КонецПериода); НабЗап.Записать();

В примере будут очищены записи регистра продаж за февраль 2023 года.

Особенности очистки регистра курсов валют

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

При очистке этого регистра нужно учитывать следующие нюансы:

  • Лучше очищать курсы старше 1 года, т.к. они уже не актуальны
  • Не удалять курсы текущего и предыдущего месяца
  • Сохранить курсы важных валют (доллар, евро)
  • Установить период очистки, например за прошлый год
НабЗап.Отбор.Период.Установить(НачалоГода(Год(ТекущаяДата())-1), КонецГода(Год(ТекущаяДата())-1)) НабЗап.Отбор.Валюта.Установить(Справочники.Валюты.НайтиПоКоду("USD")); НабЗап.Отбор.Валюта.Установить(Справочники.Валюты.НайтиПоКоду("EUR"));

Как правильно очистить регистр цен номенклатуры

В регистре ЦеныНоменклатуры накапливается большая история о ценах на товары, что со временем приводит к сильному замедлению работы.

При очистке этого регистра важные моменты:

  • Очистить старые цены со скидками, которые не актуальны
  • Оставить цены последних 3-6 месяцев
  • Выгрузить текущие цены перед очисткой в отдельный документ на всякий случай
  • Установить отбор по неактуальным видам цен
НабЗап.Отбор.ВидЦены.Установить(Справочники.ВидыЦен.НайтиПоНаименованию("Цена со скидкой"));

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

Регистр СотрудникиОрганизаций с течением времени сильно разрастается из-за большой текучки кадров.

Чтобы быстро очистить весь регистр целиком, достаточно:

  1. Сделать резервную копию базы на всякий случай
  2. Запустить очистку вне рабочего времени, чтобы никто не работал в программе
  3. Полностью перепровести документы кадрового учета после очистки
НабЗап = РегистрыСведений.СотрудникиОрганизаций.СоздатьНаборЗаписей(); НабЗап.Записать();

При этом вся история движения кадров восстановится заново за считанные минуты.

1C очистить регистр сведений по измерению

Иногда бывает необходимо удалить данные не из всего регистра целиком, а только по определенным измерениям.

Например, нужно очистить регистр себестоимости СебестоимостьНоменклатуры только по отдельным товарам:

НабЗап.Отбор.Номенклатура.Установить(Товар1); НабЗап.Отбор.Номенклатура.Установить(Товар2);

Или очистить регистр бухгалтерии только по заданным счетам бухучета:

НабЗап.Отбор.Счет.Установить(Счет1); НабЗап.Отбор.Счет.Установить(Счет2);

Таким образом, отбор по измерениям позволяет гибко очищать данные в нужных разрезах.

Комментарии