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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Наши разработки:
Учет сертификатов номенклатуры в УНФ (печать реестра сертификатов)

Учет сертификатов номенклатуры в УНФ (печать реестра сертификатов)

Расширение конфигурации добавит возможность вести учет сертификатов номенклатуры в конфигурации "Управление нашей фирмой, редакция 1.6". Вы сможете организовать учет сертификатов ...
Обмен 1С и OZON (УТ11, ERP2, КА2, БП3, УНФ, Розница)

Обмен 1С и OZON (УТ11, ERP2, КА2, БП3, УНФ, Розница)

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

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

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

Управление запасами: Товары поставщиков (УТ11, КА2, ERP2)

Функционал расширения конфигурации позволяет в удобной форме автоматически загружать прайс-листы поставщиков в 1С, анализировать загруженные данные, автоматически устанавливать цены с ...
Изменение записей регистра сведений (универсальная обработка)

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

Обработка дает возможность массово или точечно изменять записи регистра сведений. Поддерживается изменение записей в независимых регистрах и регистрах с подчинением ...
Остатки товаров в РМК (УТ11, КА2, ERP2)

Остатки товаров в РМК (УТ11, КА2, ERP2)

Расширение конфигурации добавит возможность просматривать остатки по складу для выбранных в РМК (рабочее место кассира) товаров. При этом Вы сможете ...

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

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

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