gifts2017

Очистка регистра сведений "Версии объектов"

Опубликовал Андрей (AKV77) в раздел Администрирование - Чистка базы

Очищает регистр сведений "Версии объектов" по указанную дату

Данная обработка очищает регистр сведений "Версии объектов" по указанную дату. Очистка выполняется методом "кусочных" запросов на конкретную дату. Сделано так, ввиду того что за один день может быть по несколько тысяч записей. После очистки оставшиеся версии с большей датой можно просмотреть в обычном режиме. Минус в номерах версий. Предположим было 5 версий. 3 первых удалили . Тогда для анализа доступны версии с номером 4 и 5. В качестве примера: Размер архива .dt до чистки регистра 1,62 Gb после очистки информации за 4 месяца размер архива .dt стал 1,29 Gb.

Добавлена возможность прерывания по Ctrl+Break.

Скачать файлы

Наименование Файл Версия Размер
ОчисткаРегистраСведенийВерсииОбъектов 301
.epf 7,19Kb
11.01.14
301
.epf 7,19Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. motherf 30.08.11 18:40
хорошая обработка. хотел сам писать. но яндекс подсказал...
спасибо!
2. 123 (13hohol) 18.11.11 17:05
Оч хорошая обработка, рекомендую
3. Роман (AzzZ) 18.11.11 17:39
Народ столкнулся с этой проблемой.
Ситуация: в организации несколько лет работал механизм версионирования, год назад был отключен. Нужно полностью очистить регистр с Версиями объектов. В принципе проблем никаких пишем обработку удаляем записи регистра.
Вопрос: нужно ли удалить что-то еще кроме записей регистра? И не будет ли в дальнейшем каких либо проблем?
4. Иван Шевченко (imshev) 18.11.11 18:00
Тоже планируем сделать такую только удаление хотим сделать не на определенную дату, а в случае если версии за две даты ни чем не отличаются.
Такое часто бывает например перепровели документ не изменяя реквизитов.
Или зашли в элемент справочника, а когда выходили нажали не на кнопку закрыть а на кнопку ок.
Все это попадает в регистр(но таким записям там явно делать нечего, только размер базы пухнет).
5. Роман Романов (romansun) 19.11.11 00:16
(4)

мда... такие штатное 1С-ное версионирование дюже хромое

Если кому интересно, у уважаемого O-Planet есть собственная разработка вроде как достойного качества. Лог выгружает в отдельную базу.
6. Роман (AzzZ) 21.11.11 09:05
Так собственно, на вопрос то никто не ответил.
Удалять то можно просто из регистра? Никаких косяков в районе целостности базы не будет? Обработку то писать 5 минут. У меня вопрос, не будет ли проблем потом?
7. Андрей (AKV77) 28.11.11 12:39
(6). Периодически с определенным интервалом запускаю данную обработку на базе УПП. Проблем с целостностью базы не наблюдаю.
8. Александр Крынецкий (echo77) 07.12.11 09:35
(6) Проблем не будет потом, т.к. в принципе их быть не должно.
9. Andre Skorik (SkorikA) 14.12.11 06:53
Спасибо:) Работает. Регистр почти в 5 миллионов записей удалось сократить на треть. В качестве пожелания разработчику: если бы еще бы можно было настраивать отборы (например документы за определенный месяц) чтобы была возможность запускать обработку частями - было бы вообще идеально. А то в том случае, когда количество обрабатываемых документов приближается к паре миллионов дело может затянуться:)
10. Владимир (clab) 20.06.12 08:13
Немного допилил под себя, спасибо!
11. mic auto (4ur) 22.08.12 10:08
немного долго - если достаточно большой период для удаления, но все работает. Не хватает: при необходимости прервать работу обработки, Ctrl-Break не работает...
12. mic auto (4ur) 22.08.12 10:15
и относительно самого версионирования, к сожалению не нашел ни одного отчета, который позволяет сформировать статистику изменений не по одной позиции, а по определенному набору или хотя бы определенному справочнику используя этот механизм. Придется попробовать самому разобраться, хотя наверное не все тут так просто в использовании этого механизма, если до сих пор таких отчетов никто так и не сделал...
13. Артур Антипин (artur.antipin) 25.10.12 16:44
Вообще просто удалять неправильно.
Лучше создать отдельно базу с одним РС ВерсииОбъектов и перегружать туда данные.
14. Александр Крынецкий (echo77) 17.06.13 14:24
Обработка вычищает все записи на хер, не оставляя последних... потом не с чем будет сравнивать измененную версию объекта.

Вот эта щтука оставляет последнюю запись: http://infostart.ru/public/191128/
15. Алексей (fgremlin) 15.07.13 13:35
16. юрий гулидов (gull22) 15.01.14 13:10
Прошли реорганизацию, оставили по старой конторе базу. Использовал обработку, с 3 ГГ упало до 2 ГГ. Плюс.
17. Андрей (AKV77) 15.01.14 14:05
(7). Приятно осознавать, что экономишь время коллег. Удачи
18. g gg (g123) 25.09.14 03:05
Пришел к этой проблеме совсем с другой стороны, открыл для себя много нового что и вам поведаю.
Предыстория:
В один "прекрасный" день база перестала быть адекватной минув барьер 4 гб (не давала сохранять документы и т.д -вылет с ошибкой).
Сначала грешили на почту подключенную в 1с. Решили удалить переписку но база уже не давала -ее просто заклинило и выбивало с ошибкой даже при попытке что то удалить. Не знаю как но бухгалтер умудрилась все таки что то удалить после чего базу немного попустило и стало возможно удалить переписку, но объем уменьшился не на много. Я в это время на копии пытался шаманить -выгружал базу в файл загружал обратно, тестировал и реорганизовывал таблицы через конфигуратор -ничего не дало результат, объем был непоколебим. Уже было решили кинуться в крайность - перейти на sql вариант, все программисты так и советовали) но там свои заморочки и я решил разобраться в проблеме все таки. Покопал немного в сети и нашел программу просмотра таблиц базы, вместе с бухгалтером поняли что как раз таблица версий занимает эти предельные 4 гб на таблицу (для файловой 1с). Теперь пробую варианты уменьшить таблицу - один из них использовать штатную обработку 1с в УТП это "универсальный обмен данными в формате xml". там есть секция удаление данных, но нету возможности удалять по дате а только все данные и так как процесс ресурсоемкий то опять же вылет с ошибкой "нехватка памяти" (это уже ограничение самой ОС на 32 битные приложения) и снова надо шаманить уже над ОС чтобы перешагнуть этот барьер. Остается вариант написать самому что то или вашу обработку пробовать, вариант сделать свертку базы тоже бухгалтер не очень хочет так как не очень ей удобно пару баз иметь. Так что такие обработки из разряда стратегически важных потому что на весах сохранность всей базы, ведь проблема не только в ее объеме но и в дальнейшем функционировании и без вовремя сделанной копии восстановить работоспособность не просто (при пороге 4 гб свертка тоже не работает уже, база просто в нокдауне, хоть бери да ножом режь).
19. Андрей (AKV77) 25.09.14 16:17
(g123) спасибо за столь развернутый комментарий. По своему опыту могу сказать, что когда возникает подобная проблема, то лучше все же перейти на SQL.
20. g gg (g123) 30.10.14 15:54
Продолжение саги о муках версионных:)
Эксперимент по спасению базы продолжался на виртуалке вин7 64 бит с 6 гб оперативки по рекомендации http://forall.ru-board.com/egor23/online/FAQ/Virtual_Memory/Limits_Virtual_Memory.html была испробована BCDEdit /set как результат вылет с ошибкой уже не на 2 гб а чуть больше 4 - наблюдал загрузку по диспетчеру ресурсов, то есть 32 битное приложение 1с не в состоянии столько схавать оперативки. Решение нашлось по еле приметному посту http://www.forum.mista.ru/topic.php?id=678648. Действительно после уничтожения этого самого хранилища и тестирования базы размер упал до 600 гб. Теперь жду ответ бухгалтера не пострадало ли еще чего ненароком.
21. Владимир Плотников (onlyfly) 26.07.15 14:36
На 8.3 и управление торговлей 11 будет работать?
22. Иван Иванов (ivan150) 27.03.16 11:40
23. Андрей (AKV77) 28.03.16 11:48
24. Vitaxa Erudit (Vitalik1987) 01.04.16 09:54
Спасибо, все работает и оч. помогло!
25. Андрей (AKV77) 01.04.16 13:48
26. Игорь Фелькер (Brawler) 29.08.16 19:33
Я поглядел код этой обработки и что-то мне показалось не сильно оптимально читать данные из регистра, потом их записывать привязывая на пустую ссылку, чтобы потом отбором по ней грохнуть данные.

в общем запилил альтернативный код для кнопки выполнить

	
Если Не ЗначениеЗаполнено(ДатаПо) Тогда
	Предупреждение("Не указана дата очистки !", 10);
	Возврат;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ВерсииОбъектов.Объект,
|	ВерсииОбъектов.НомерВерсии,
|	ВерсииОбъектов.ДатаВерсии КАК ДатаВерсии
|ИЗ
|	РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
|ГДЕ
|	НАЧАЛОПЕРИОДА(ВерсииОбъектов.ДатаВерсии, ДЕНЬ) <= &ДатаПо
|
|УПОРЯДОЧИТЬ ПО
|	ДатаВерсии";

Запрос.Параметры.Вставить("ДатаПо",ДатаПо);

Выборка = Запрос.Выполнить().Выбрать();

Набор = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей();

НомерСтроки = 0;
КоличествоСтрок = Выборка.Количество();

Пока Выборка.Следующий() Цикл
	
	НомерСтроки = НомерСтроки + 1;
	
	ОбработкаПрерыванияПользователя();
	
	Если НомерСтроки % 50 = 0 Тогда
		Состояние("Прогресс " + Формат((НомерСтроки - 1) / КоличествоСтрок * 100, "ЧДЦ=2") + 
			"%. (удалено " + (НомерСтроки - 1) + " из " + КоличествоСтрок +") дата: " +
			Формат(Выборка.ДатаВерсии, "ДФ=dd.MM.yyyy") + " документ: " +
			Выборка.Объект + " номер версии: " + Выборка.НомерВерсии);
	КонецЕсли;
	
	Набор.Отбор.Объект.Установить(Выборка.Объект);
	Набор.Отбор.НомерВерсии.Установить(Выборка.НомерВерсии);
	Набор.Записать(Истина);
	
КонецЦикла;

Предупреждение("Обработка завершена !", 10);
...Показать Скрыть
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа