Очистка регистра сведений в 1С 8
Почти у каждого пользователя 1С хотя бы раз возникала задача по удалению всех записей регистра сведений.
Если в управляемом режиме можно выделить все строки в форме списка регистра и нажать DEL, то в обычном режиме это не реализуемо (в большинстве случаев), так как в них не вклюен по умолчанию режим множественного выбора.
Для чистки регистра сведений нужно всего две строчки кода
НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей(); // ИмяРегистра - имя как оно задано в конфигураторе
НаборЗаписей.Записать()
Первая строка создает набор записей регистра, вторая выполняет запись набора, и так как набор пустой и без установленных отборов, то выполняется чистка всех записей.
На нашем сайте вы можете скачать готовую бесплатную обработку 1С для чистки регистров сведений в 1С 8.
Программное удаление записей регистра сведений
Из этой записи Вы узнаете как программно удалить запись регистра сведений или выполнить полную очистку регистра сведений. Рассмотрим примеры работы с независимыми регистрами и регистрами, подчиненными регистратору.
Дополнительно рекомендуем Вам все изменения тестировать на копии Вашей информационной базы .
Если Вам нужно готовое решение по удалению записей регистра сведений — ознакомьтесь с нашей разработкой «Обработка для удаления записей регистра сведений». Обработка позволит Вам решить все задачи по удалению записей в регистре сведений и значительно сэкономит Ваше время на подготовку аналогичного решения!
- Определяем вид изменяемого регистра сведений
- Удаляем записи в независимом регистре сведений
- Удаляем записи в регистре с подчинением регистратору
- Полная очистка записей регистра сведений
Определяем вид изменяемого регистра сведений
Регистры сведений в зависимости от режима записи подразделяются на независимые и с подчинением регистратору. Для того чтобы выяснить, к какому виду относится регистр, откройте его свойства:

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

Теперь давайте рассмотрим 2 способа очистки записей по определенной Валюте. Первый способ — использование объекта НаборЗаписей:
Процедура ОчиститьЗаписиВНезависимомРегистреСведенийСОтбором(Валюта, БазоваяВалюта) Набор = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); Набор.Отбор.Валюта.Установить(Валюта); Набор.Отбор.БазоваяВалюта.Установить(Валюта); Набор.Записать(); КонецПроцедуры
В этом примере мы создаем набор записей, устанавливаем для него отбор по измерениям, но записи в набор не добавляем. В результате при записи набора будет выполнена очистка записей по валютам, установленным в качестве отбора.
Второй способ — использование объекта МенеджерЗаписи:
Процедура ОчиститьЗаписиВНезависимомРегистреСведенийСОтбором(Валюта, БазоваяВалюта) Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); Запись.Валюта = Валюта; Запись.БазоваяВалюта = БазоваяВалюта; Запись.Удалить(); КонецПроцедуры
Оба вариант удалят записи по валюте. При использовании второго варианта платформа будет конвертировать менеджер записи в набор записей.
Не забывайте про порядок измерений в регистре. К примеру, если задавать отбор только по измерению Валюта — будут удаляться все записи по этой валюте независимо от значений второго измерения (БазоваяВалюта). Таким образом Вы можете либо более детально удалять записи, устанавливая отбор по нескольким измерениям, либо делать более общее удаление с использованием отбора только по одному измерению.
Удаляем записи в регистре с подчинением регистратору
Все записи в таком регистре подчинены регистратору. Поэтому для удаления записей Вам нужно задавать отбор по регистратору. В качестве примера будем использовать регистр ЦеныНоменклатуры. Все записи этого регистра подчинены документам-регистраторам. Состав измерений регистра:

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

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

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

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

Расширенная форма РМК для УТ 11, КА 2, ERP 2
Расширение конфигурации дорабатывает рабочее место кассира (РМК) и добавляет в нее удобные инструменты для просмотра остатков по складам, остатков по .

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

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

- Если Ваш прайс-лист неотличим от остальных — не ожидайте что он принесёт Вам продажи!

- Рубрики
- 1С: Предприятие
- Администрирование
- Конфигурации
- ERP Управление предприятием 2
- Бухгалтерия 3.0
- Комплексная автоматизация 2
- Управление нашей фирмой
- Управление торговлей 11
- Конфигурирование
- Программирование в 1С
- Разное
- Свежие записи
- Поддержание сезонных товарных запасов в УТ11, КА2, ERP2
- Перенос типовых настроек Мин-Макс в Помощник закупок
- Ноябрьские распродажи на TNSoft.ru (2023)
- Управление запасами — настройка профилей оповещений
- Универсальная выгрузка товаров на портал zzap.ru (УТ11, КА2, ERP2, УНФ, Розница)
- Архивы
- Ноябрь 2023
- Октябрь 2023
- Сентябрь 2023
- Май 2023
- Апрель 2023
- Март 2023
- Февраль 2023
- Январь 2023
- Ноябрь 2022
- Октябрь 2022
- Июль 2022
- Июнь 2022
- Апрель 2022
- Январь 2022
- Декабрь 2021
- Октябрь 2021
- Сентябрь 2021
- Август 2021
- Июль 2021
- Апрель 2021
- Февраль 2021
- Январь 2021
- Декабрь 2020
- Ноябрь 2020
- Август 2020
- Июль 2020
- Июнь 2020
- Февраль 2020
- Январь 2020
- Декабрь 2019
- Ноябрь 2019
- Октябрь 2019
- Сентябрь 2019
- Июль 2019
- Апрель 2019
- Март 2019
- Февраль 2019
- Декабрь 2018
- Ноябрь 2018
- Октябрь 2018
Как очистить регистр сведений?
Не так давно мне потребовалось очистить регистр сведений. Этот регистр хранил в себе историю изменения некоторых объектов конфигурации и содержал несколько миллионов записей.
Обычный вариант программной очистки регистра сведений не подчиненного регистратору производится при помощи записи пустого набора записей, примерно так:
НаборЗаписей = РегистрыСведений.НашРегистр.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
Но в данном случае очистка регистра подобным способом заняло бы много часов. Поэтому был выбран другой способ — быстрый способ очистки регистра сведений.
Шаг 1. Делаем резервную копию базы. Этот пункт, конечно, не обязателен, но привычка делать резервную копию перед любым потенциально опасным действием обязательно сохранит Вам нервы/время/зарплату/карьеру.
Шаг 2. Копируем требуем регистр сведений.

Шаг 3. Удаляем оригинал регистра сведений

Шаг 4. Переименовываем копию в оригинал и применяем изменения.

Вот таким нехитрым способом очистка регистра сведений займет несколько минут, вне зависимости от размеров этого регистра. Разница заключается в том, что во втором способе таблица регистра сведений удаляется целиком, что значительно быстрее.
Подобным способом можно произвести очистку практически любого элемента конфигурации. Но, разумеется, корректность учета после проведения такой операции никто не гарантирует.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Оценка статьи:



(оценок: 1, средняя оценка: 5,00 из 5)
Программа 1С: Очистка регистра

Регистр сведений 1С – объект, в котором хранятся данные осведомительного (не накопительного) характера в разрезе некоторых измерений.
Например, для хранения информации о кадровой расстановке сотрудников используется регистр «Работники организаций». Этот регистр состоит из измерений («Сотрудник», «Организация») и ресурсов («Должность», «Подразделение» и проч).
Вид регистра сведений в дереве объектов конфигуратора программы 1С:
Внимание: Записи регистра сведений удаляются безвозвратно, поэтому, перед очисткой регистра 1С, рекомендуется предварительно сделать копию базы.
2. Очистка записи независимого регистра сведений 1С

1 СЛУЧАЙ. Перед нами стоит задача очистить все записи независимого регистра сведений 1С. Независимым регистр 1С становиться при установлении свойства «Режим записи» равным «Независимый». Регистры сведений подчиненные регистратору, полностью очистить программно нельзя!
Возможна только частичная очистка, при установлении отбора по значению регистратора.

Для полной очистки нужно написать следующий код: НабЗап=РегистрыСведений.[ИмяРегистраСведений].СоздатьНаборЗаписей(); НабЗап.Записать();
После исполнения этого кода будут очищены все записи. Проанализируем логику строк кода.
В 1-й строке создается набор записей. Набор записей регистра сведений 1С — это объект, являющийся коллекцией записей. Метод «СоздатьНаборЗаписей()» создает пустой набор, который можно заполнить разными способами: или прочитать уже записанные в регистр записи методом «НаборЗаписей.Прочитать()», или добавить новую запись методом «НаборЗаписей.Добавить()» и заполнить ее измерения и ресурсы, для последующей записи.
Во 2-й строке, как раз и происходит запись сформированного набора записей в регистр и, т.к. мы его оставили пустым, то этот пустой набор записей заместит все имеющиеся записи в регистре, а значит – полностью его очистит.
У метода Записать() имеется единственный параметр «Замещать» (тип параметра – Булево), по умолчанию = Истина. Если же передать значение — Ложь, то записи замещены не будут и регистр очищен не будет. НабЗап.Записать(Ложь);
2 СЛУЧАЙ. Стоит более простая задача — очистить записи регистра по определенному значению измерения. Например, в регистре сведений «Работники Организаций» очистить записи по конкретному сотруднику, т.е. те, у которых измерение «Сотрудник» = перемСотрудник.
Для этого нужно сначала сформировать НаборЗаписей с отбором по данному измерению: НабЗап =РегистрыСведений.[ИмяРегистраСведений].СоздатьНаборЗаписей(); НабЗап.Отбор.[ИмяИзмерения].Установить(перемЗначениеИзмерения); НабЗап.Записать();
В 1-х двух строках кода мы создаем набор записей регистра сведений 1С и ограничиваем его по значению конкретного измерения. Теперь, когда мы будем записывать этот набор записей, он заместит только те записи, у которых значение тек. измерения = перемЗначениеИзмерения.
В 3-й строке, записываем пустой набор записей и замещаем имеющиеся в регистре.
Примечание: Для регистров накопления программное очищение данным способом возможно только при установленном отборе по Регистратору, т.к. понятие «Независимый» для регистра накопления не актуально.
Регистр накопления в Конфигураторе:
Специалист компании «Кодерлайн»
Марина Анапольская