IE2017

Очистка периодических реквизитов справочников

Администрирование - Чистка базы

Данная обработка предназначена для вывода в таблицу более поздних повторяющихся или "пустых" значений периодических реквизитов справочников для просмотра, анализа и последующего удаления «лишних» значений.
Данная обработка предназначена для вывода в таблицу более поздних повторяющихся или "пустых" значений периодических реквизитов справочников для просмотра, анализа и последующего удаления «лишних» значений.
Выводятся и затем по команде удаляются значения введенные вручную. Два значения, введенных вручную, разделенные значением, зафиксированным документом не чистятся во избежание ситуации, когда проведение документа будет отменено и история нарушится.
Вы можете просмотреть предложенные обработкой значения выбранного периодического реквизита и, затем удалить помеченные значения. Для удобства в таблице отображаются: наименование текущего элемента справочника, периодический реквизит, которого предлагается удалить, значение реквизита, его дата, предыдущее значение и, соответственно, его дата, и, если есть, то наименование элемента справочника-владельца.
Эта обработка, возможно, будет полезна тем, кто не рискует удалять «лишние» значения периодических реквизитов автоматически, т.е. без просмотра «чего там удаляется». ;-)

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

Наименование Файл Версия Размер
CleanPeriodic.ert
.1216121022 199,50Kb
25.09.09
664
.1216121022 199,50Kb 664 Скачать бесплатно

См. также

Комментарии
1. Алексей (бубух) 16.07.08 09:12 Сейчас в теме
+ за работу - она работает. Вопрос (если можно) от простого буха - что, кроме порядка в истории, дает проге такая чистка?
2. Сергей (UrbSI) 74 16.07.08 09:32 Сейчас в теме
В 1С для хранения ВСЕХ периодических реквизитов ВСЕХ справочников и констант используется только ОДНА таблица 1SCONST.DBF. Соответственно, если эта таблица будет заполнена различным "мусором", то на считывание из нее нужных данных будет требоваться больше времени. Поэтому чистка периодических реквизитов нужна в первую очередь для ускорения работы.
3. bserge (bserge) 16.07.08 09:55 Сейчас в теме
Проверил, работает. Единственное выдает ошибку, когда реквизит установлен документом.
Пер.Удалить();
{CLEANPERIODIC.ERT(193)}: Значение установлено документом!
4. Алексей (бубух) 16.07.08 10:22 Сейчас в теме
спасибо за ответ. займусь теперь и своими ОСами там этого...
5. Владимир Шестаков (Dozgd) 9 20.04.09 10:43 Сейчас в теме
Благодарю. Удалили неверно установленные цены... :)
6. jack smith (jsmith) 16.10.11 17:39 Сейчас в теме
7. Александр Лыткин (TrinitronOTV) 16.10.11 18:17 Сейчас в теме
bserge пишет:

Проверил, работает. Единственное выдает ошибку, когда реквизит установлен документом.
Пер.Удалить();
{CLEANPERIODIC.ERT(193)}: Значение установлено документом!

как по поводу этого сообщения? это я к автору, т.к. хотелось бы перед скачиванием уточнить этот момент
8. Елена Кряжева (vcspektr) 11.05.17 07:59 Сейчас в теме
Процедуру удаления лучше сделать с перебором значений за дату, и пропуском значений, введённых документом..
9. Олег Пестряков (19autumn82) 11.05.17 08:01 Сейчас в теме
// УДАЛЕНИЕ **********************************************************************************************************************
//
Процедура ПоКнУдалить()
	
	// ОБНУЛИМ ПЕРЕМЕННЫЕ
	Перем Пер;
	Перем СтрСЗ;
	// СОЗДАДИМ ПЕРИОДИЧЕСКИЙ
	Пер = СоздатьОбъект("Периодический");
	// ОБНУЛИМ ПЕРЕМЕННЫЕ
	ТекКоличество =0;
	ТЗ.ВыбратьСтроки();
	Пока ТЗ.ПолучитьСтроку() = 1 Цикл
		СтрокаСостояния();
		// ПРОВЕРКА
		Если ТЗ.Пометка = МеткиНет Тогда
			Продолжить;
		КонецЕсли;
		// ОБНУЛИМ ПЕРЕМЕННЫЕ
		ТекОбъект = "";
		// ЗАПОМНИМ ПЕРЕМЕННЫЕ
		ТекОбъект = ТЗ.Спр;
		// ОБНУЛИМ ПЕРЕМЕННЫЕ
		ТекРеквизит = "";
		// ЗАПОМНИМ ПЕРЕМЕННЫЕ
		ТекРеквизит = СЗ_Рекв.ПолучитьЗначение(СЗ_Рекв.ТекущаяСтрока(), СтрСЗ);
		// ФИЛЬТР
		Пер.ИспользоватьОбъект(ТекРеквизит, ТекОбъект);
		// ПЕРЕБОР ЗНАЧЕНИЙ
		Если Пер.ВыбратьЗначения(ТЗ.Дата, ТЗ.Дата) = 1 Тогда
			Пока Пер.ПолучитьЗначение() = 1 Цикл
				// ОБНУЛИМ ПЕРЕМЕННЫЕ
				ТекДокумент = "";
				// ЗАПОМНИМ ПЕРЕМЕННЫЕ
				ТекДокумент = Пер.ТекущийДокумент();
				// ПРОВЕРКА
				Если ПустоеЗначение(ТекДокумент) = 0 Тогда
					// СООБЩЕНИЕ
					глпВыводСообщение("Пропущено значение " + СокрЛП(Пер.Значение) + " на дату " + СокрЛП(ТЗ.Дата) + ", введено документом " + глПредставлениеДокумента(ТекДокумент), глфВозвратФлагОтладка(ФлагОтладка));
					Продолжить;
				КонецЕсли;
				// ПРОВЕРКА
				Если Пер.Значение <> ТЗ.ЗнРекв Тогда
					// СООБЩЕНИЕ
					глпВыводСообщение("Пропущено значение " + СокрЛП(Пер.Значение) + " на дату " + СокрЛП(ТЗ.Дата) + ", отличается от выбранного значения " + СокрЛП(ТЗ.ЗнРекв), глфВозвратФлагОтладка(ФлагОтладка));
					Продолжить;
				КонецЕсли;
				// ПОПЫТКА
				Попытка
					Пер.Удалить();
					// СООБЩЕНИЕ
					глпВыводСообщение("Удалено значение - " + СокрЛП(ТЗ.ЗнРекв) + " на дату " + СокрЛП(ТЗ.Дата), 1);
					// СЧЕТЧИК
					ТекКоличество = ТекКоличество + 1;
				Исключение
					// СООБЩЕНИЕ
					глпВыводСообщение(ОписаниеОшибки(), 1, "!");
				КонецПопытки;
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
	// ЗАПОЛНИМ ТЗ
	Сформировать(РежимТЗ, 0);
	// ПРЕДУПРЕЖДЕНИЕ
	Предупреждение("Выполнено!", 60);
	// СООБЩЕНИЕ
	глпВыводСообщение("Удалено - "+ Строка(ТекКоличество) +" значений", 1);
	
КонецПроцедуры // ПоКнУдалить()
...Показать Скрыть
Оставьте свое сообщение