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

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

Дополнительно рекомендуем Вам все изменения тестировать на копии Вашей информационной базы.

Если Вам нужно готовое решение по удалению записей регистра сведений — ознакомьтесь с нашей разработкой «Обработка для удаления записей регистра сведений». Обработка позволит Вам решить все задачи по удалению записей в регистре сведений и значительно сэкономит Ваше время на подготовку аналогичного решения!

Определяем вид изменяемого регистра сведений

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

После того, как Вы выяснили вид регистра сведений — Вы можете выбрать вариант действий с регистром.

Удаляем записи в независимом регистре сведений

Для очистки записей с отбором Вам нужно проанализировать состав измерений регистра сведений. Задавая отбор по измерениям, Вы можете частично удалять данные в регистре сведений. К примеру, рассмотрим регистр сведений КурсыВалют. В этом регистре 2 измерения: Валюта и БазоваяВалюта:

Теперь давайте рассмотрим 2 способа очистки записей по определенной Валюте. Первый способ — использование объекта НаборЗаписей:

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

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

Второй способ — использование объекта МенеджерЗаписи:

Процедура ОчиститьЗаписиВНезависимомРегистреСведенийСОтбором(Валюта, БазоваяВалюта) Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); Запись.Валюта = Валюта; Запись.БазоваяВалюта = БазоваяВалюта; Запись.Удалить(); КонецПроцедуры

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

Не забывайте про порядок измерений в регистре. К примеру, если задавать отбор только по измерению Валюта — будут удаляться все записи по этой валюте независимо от значений второго измерения (БазоваяВалюта). Таким образом Вы можете либо более детально удалять записи, устанавливая отбор по нескольким измерениям, либо делать более общее удаление с использованием отбора только по одному измерению.

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

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

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

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

Приведенный выше пример очистит все записи по регистратору. Теперь давайте рассмотрим пример удаления записей с отбором — к примеру нам необходимо удалить записи по определенной номенклатуре:

Процедура ОчиститьЗаписиВЗависимомРегистреСведений(Регистратор, Номенклатура) Набор = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); Набор.Отбор.Регистратор.Установить(Регистратор); Набор.Прочитать(); Для Индекс = 1 - Набор.Количество() По 0 Цикл Запись = Набор[- Индекс]; Если Запись.Номенклатура = Номенклатура Тогда Набор.Удалить(- Индекс); КонецЕсли; КонецЦикла; Набор.Записать(); КонецПроцедуры

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

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

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

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

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

Наши разработки:
Конструктор прайс-листов (прайс-заказов) для УТ11, КА2, ERP2

Конструктор прайс-листов (прайс-заказов) для УТ11, КА2, ERP2

Расширение позволяет формировать произвольные прайс-листы с выгрузкой в Excel и обратной загрузкой в 1С (после обработки прайс-листа клиентом). Конструктор также ...
Далее
Помощник продаж (расширение для УТ11, КА2, ERP2)

Помощник продаж (расширение для УТ11, КА2, ERP2)

Помощник продаж выполнен в виде расширения конфигурации 1С, которое существенно дополняет возможности стандартного списка номенклатуры, превращая его в полноценное рабочее ...
Далее
Расширенная форма списка номенклатуры для УТ11, КА2, ERP2

Расширенная форма списка номенклатуры для УТ11, КА2, ERP2

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

Розница: Расширенная форма списка номенклатуры

Расширение конфигурации изменяет форму списка номенклатуры и добавляет в него функционал, позволяющий выводить остатки по любому складу, цены номенклатуры и ...
Далее
Контроль минимальной цены и суммы в заказах и реализациях (УТ11, КА2, ERP2)

Контроль минимальной цены и суммы в заказах и реализациях (УТ11, КА2, ERP2)

Расширение конфигурации позволяет быстро решить проблему продажи товара по цене ниже закупочной или цены себестоимости. Контроль будет работать в разрезе ...
Далее
Изменение записей регистра сведений (универсальная обработка)

Изменение записей регистра сведений (универсальная обработка)

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

Комментарии 1

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

5 + 10 =