Очистка регистра сведений в 1С 8
Почти у каждого пользователя 1С хотя бы раз возникала задача по удалению всех записей регистра сведений.
Если в управляемом режиме можно выделить все строки в форме списка регистра и нажать DEL, то в обычном режиме это не реализуемо (в большинстве случаев), так как в них не вклюен по умолчанию режим множественного выбора.
Для чистки регистра сведений нужно всего две строчки кода
НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей(); // ИмяРегистра - имя как оно задано в конфигураторе
НаборЗаписей.Записать()
Первая строка создает набор записей регистра, вторая выполняет запись набора, и так как набор пустой и без установленных отборов, то выполняется чистка всех записей.
На нашем сайте вы можете скачать готовую бесплатную обработку 1С для чистки регистров сведений в 1С 8.
Как очистить регистр сведений?
Не так давно мне потребовалось очистить регистр сведений. Этот регистр хранил в себе историю изменения некоторых объектов конфигурации и содержал несколько миллионов записей.
Обычный вариант программной очистки регистра сведений не подчиненного регистратору производится при помощи записи пустого набора записей, примерно так:
НаборЗаписей = РегистрыСведений.НашРегистр.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
Но в данном случае очистка регистра подобным способом заняло бы много часов. Поэтому был выбран другой способ — быстрый способ очистки регистра сведений.
Шаг 1. Делаем резервную копию базы. Этот пункт, конечно, не обязателен, но привычка делать резервную копию перед любым потенциально опасным действием обязательно сохранит Вам нервы/время/зарплату/карьеру.
Шаг 2. Копируем требуем регистр сведений.
Шаг 3. Удаляем оригинал регистра сведений
Шаг 4. Переименовываем копию в оригинал и применяем изменения.
Вот таким нехитрым способом очистка регистра сведений займет несколько минут, вне зависимости от размеров этого регистра. Разница заключается в том, что во втором способе таблица регистра сведений удаляется целиком, что значительно быстрее.
Подобным способом можно произвести очистку практически любого элемента конфигурации. Но, разумеется, корректность учета после проведения такой операции никто не гарантирует.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Оценка статьи:
(оценок: 1, средняя оценка: 5,00 из 5)
Очистка регистра сведений 1С 8.3
Регистр сведений – это хранилище сведений конфигураций 1С в виде записей с значениями измерений (разрезы) и соответствующими им значениями (ресурсами). Это могут быть курсы валют в разрезе валют, цены в разрезе номенклатуры и типа цен, в качестве регистратора могут выступать и документы, которые создают записи в регистр.
Пример: «Регистр сведений» — «Курсы валют».
Если мы откроем Конфигуратор и в дереве метаданных развернем пункт «Регистры сведений», мы увидим список всех регистров сведений.
При этом записей в регистрах может накопиться огромное количество. Рассмотрим несколько способов, как можно очистить регистры сведений 1С 8.3. Но при выполнении этих действий рекомендуется сделать резервную копию информационной базы.
Программная очистка регистра сведений
Программная очистка регистра сведений не подчиненного регистратору производится при помощи записи пустого набора записей.
НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей(); // ИмяРегистра например "КурсыВалют", "ПлановыеАвансы", "ЦеныНоменклатуры" и т.д НаборЗаписей.Записать();
В первой строке кода создается пустой набор записей (набор записей пустой, т.к. данные регистра не прочитаны), во второй – производится его запись, взамен существующих. Результат – пустой регистр.
Данный вариант применим только для регистров сведений с независимым режимом записи, и такой способ очистки занимает очень много времени.
Обработка очистка регистра сведений в 1С 8.3
Существует обработка, с помощью которой можно произвести очистку любого регистра сведений – «Очистка регистра сведений 1С.epf», работающая как в обычных формах, так и в управляемых. Чтобы ею воспользоваться, ее необходимо открыть в пользовательском режиме через пункт меню «Файл» — «Открыть».
Указываем имя регистра, который нам нужно очистить (обязательно уточнить его название в конфигураторе) и нажимаем кнопку «Очистить регистр».
После некоторого ожидания операция завершена. Таким способом можно очистить любой регистр сведений в программе.
Обработка – свертка независимого периодического регистра сведений
Есть еще одна обработка, позволяющая очистить регистр сведений, подходящая для любых конфигурация 8.2 и 8.3, работающих как обычное приложение. (СверткаНезависимогоПериодическогоРегистраСведений.epf).
Чтобы открыть обработку для использования в конфигурации (управляемое приложение), нужно запустить 1С 8.3 в режиме «Толстый клиент (обычное приложение)». Для этого в Конфигураторе изменить режим запуска в пункте меню «Сервис» — «Параметры».
Установив переключатель в положение «Толстый клиент (обычное приложение)», нажимаем кнопку «Применить» или «Ок».
После этого заходим в режим «1С:Предприятие» через меню «Сервис» Конфигуратора.
В результате наша программа открылась в режиме обычного приложения (оно использовалось в более старых версиях программы 1С). Используя кнопку «Открыть» на панели инструментов, открываем нашу обработку. Ее настройки интуитивно понятны. Устанавливаем дату, выбираем регистры, которые хотим очистить и нажимаем кнопку «Выполнить».
Наши регистры будут очищены. Но, повторимся, при выполнении этой операции необходимо быть особенно внимательным и обязательно не забыть провести резервное копирование информационной базы, как и при большинстве манипуляций с базой и ее целостностью. Здесь же это особенно важно сделать, так как операция по обнулению регистров необратима.
Чистка регистра сведений с отбором по ресурсу
В базе УПП имеется периодический не зависимый регистр сведений НДФЛПрименениеВычетов, у которого в ресурсах используется Организация.
Хочу почистить этот регистр с отбором по организации, но не получается стандартным способом.
Побывал через СоздатьНаборЗаписей и отборы, но так как в отборах нет Организации (есть только Дата и ФизЛицо), то данный способ не прокатывает.
Подскажите есть ли другой способ чистки регистра с возможностью отбора по ресурсу?
По теме из базы знаний
- Очистка регистра сведений
- Универсальная обработка по изменению регистров сведений
- Универсальная обработка очистки регистров сведений (Обычное приложение)
- Очистка регистра сведений (дополненная)
- Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)
Найденные решения
14. Evgeniy 102 11.02.19 12:36 Сейчас в теме
Все, получилось, запросом с фильтром о организации и затем через набор записей и отбором по ФИЗ лицу и периоду удалил не нужные записи из регистра.
Остальные ответы
- Дата
- Дата
- Рейтинг всех уровней
- Рейтинг 1-го уровня
- Древо развёрнутое
- Древо свернутое
Свернуть все
5. user623969_dusa 11.02.19 10:55 Сейчас в теме
(1) Тип: Отбор.
Содержит объект Отбор, по которому осуществляется текущая фильтрация записей при считывании или записи набора. Список свойств объекта зависит от свойств регистра: для регистров сведений, для которых в Конфигураторе установлен режим записи «Подчинение регистратору», отбор возможен только по регистратору, для периодических регистров сведений отбор возможен по периоду и значениям измерений, для непериодических — только по значению измерений.
16. user1232351 26.11.20 21:21 Сейчас в теме
7. user1088693 11.02.19 11:04 Сейчас в теме
(1) Вы можете все данные из этого регистра выгрузить в Excel и затем отфильтровать по этому полю и удалите те отобранные записи, а в 1С полностью очистите весь этот регистр и заново загрузите с выгруженного Excel-файла.
10. Evgeniy 102 11.02.19 11:46 Сейчас в теме
(7) задача автоматически все почистить, но идея хорошая, можно попробовать весь регистр выгрузить в таблицу значений, затем почистить его полностью и загрузить обратно только те значения, которые подходят по условию.
есть правда риск, что после читки регистра и перед загрузкой какая нибудь ошибка критическая возникнет и все накроется.
Оставлю такой вариант на крайний случай, если ничего другого не возникнет..
13. user1088693 11.02.19 12:10 Сейчас в теме
(10) Да, как вариант, Вы можете выгрузить весь регистр в таблицу значений и потом заново загрузить в регистр. Ошибки у Вас не возникнут, если все данные с регистра будут выгружены как есть. Когда будете делать загрузку через вашу какую-нибудь обработку, то Вам нужно будет в момент создания набора записей установить отборы по всем измерениям (Период, Физлицо и т.д.), Вот так нужно будет Вам написать:
НаборЗаписей = РегистрыСведений.НДФЛПрименениеВычетов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ФизЛицо.Установить(ФизЛицо); НаборЗаписей.Отбор.Период.Установить(ФизЛицо); . НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() = 0 Тогда НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.ФизЛицо = ФизЛицо; НоваяЗапись.Период = Период; . КонецЕсли; НаборЗаписей.Записать();
2. _Enot_ 10 11.02.19 10:35 Сейчас в теме
НаборЗаписей = РегистрыСведений.ОбъектыСтроительстваОрганизаций.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Организация.Установить(УдаляемаяОрганизация); НаборЗаписей.Записать();
3. Evgeniy 102 11.02.19 10:45 Сейчас в теме
(2) Нет в отборах Организации, я об этом сразу писал
Вот такая ошибка возникает при таком коде: Поле объекта не обнаружено (Организация)
6. _Enot_ 10 11.02.19 10:58 Сейчас в теме
(2) https://www.forum.mista.ru/topic.php?id=627837 Посмотрите здесь если через измерения
4. dhurricane 11.02.19 10:54 Сейчас в теме
Полагаю, прямого — нет. Только запросом выбрать сочетания измерений, где используется заданная организация, а затем чистка по этим измерениям.
smilemanrus; + 1 – Ответить
8. Evgeniy 102 11.02.19 11:42 Сейчас в теме
(4) Думал над этим вариантом, но проблема в том, что в теории привязка к Измерению (физическое лицо) может быть и по другой организации и не хотелось бы случайно лишние записи почистить.
9. dhurricane 11.02.19 11:45 Сейчас в теме
(8) Как же Вы их затрете?
11. Evgeniy 102 11.02.19 11:53 Сейчас в теме
(9) Хотя вы правы, в разрезе Периода и ФизЛица более одного ресурса (Организации) не может быть.
15. dim_1c 11.02.19 13:45 Сейчас в теме
(8) В запросе для организации получить Дату и ФизЛицо. Дальше записать набор записей с отбором по Дате и ФизЛицу.
12. d.batovskiy 11.02.19 11:55 Сейчас в теме
Мне кажется лучше отобрать запросом все записи не равной вашей организации, потом очистить регистр и далее заполнить этот регистр данными запроса с ОбменДанными.Загрузка = Истина
14. Evgeniy 102 11.02.19 12:36 Сейчас в теме
Все, получилось, запросом с фильтром о организации и затем через набор записей и отбором по ФИЗ лицу и периоду удалил не нужные записи из регистра.
17. user1496852 9 22.07.21 14:41 Сейчас в теме
Здравствуйте, а не лучше бы было запросом выбрать запись регистра сведений, и в цикле перебрав результат запроса, прочитать и удалить их. Пример:
Запрос = Новый Запрос("ВЫБРАТЬ | НоменклатураКонтрагентов.ХарактеристикаНоменклатуры, | НоменклатураКонтрагентов.Контрагент, | НоменклатураКонтрагентов.Номенклатура, | НоменклатураКонтрагентов.Дата, | НоменклатураКонтрагентов.Идентификатор |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | И НоменклатураКонтрагентов.Идентификатор = &Идентификатор"); Запрос.УстановитьПараметр("Контрагент",Поставщик); Запрос.УстановитьПараметр("Идентификатор",""); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл МЗ = РегистрыСведений.НоменклатураКонтрагентов.СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(МЗ, Выборка); МЗ.Удалить(); КонецЦикла;
Darkoder; a_inves; Snegurochka; Programmer_Ekatetina; maxtomsk; barbosych; tp_home@mail.ru; Ktyfa; bp-service; + 9 – Ответить