gifts2017

"Чистка" базы БП после удаления организации(ий)

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

Обработка удаляет (помечает на удаление) всю информацию из БП, связанную с помеченной на удаление организацией

Обработка удаляет (помечает на удаление) всю информацию из БП, связанную с помеченной на удаление организацией.

Используется, когда нужно удалить все следы организации(-ий) из БД или при разделении одной БД на несколько с разными организациями.

Версия 1.10

 Учтены все замечания, присланные на почту. Переведена на платформу 8.2.13.

 Протестирована  на конфигурациях: БП 1.6.25, БП 2.0.29, БП КОРП 2.0.29

 P.S.: Оставил в раздаче версию 1.03 для 8.1. Работает только с БП 1.6 

 P.P.S.: Версия 1.03 для 8.1 работает с БП не ниже 1.6.25

 

 

Версия 1.03

 Учтены все замечания, присланные на почту.

Версия 1.02

 Исправлена найденная ошибка

Версия 1.01

 Первый релиз.

 

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

Наименование Файл Версия Размер
БОНУС_ОргМетла82.epf 344
.epf 15,09Kb
20.10.13
344
.epf 15,09Kb Скачать
БОНУС_ОргМетла81.epf 487
.epf 11,94Kb
20.10.13
487
.epf 11,94Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

. Светлана Кончакова (Ariko-sv) 02.03.12 11:21
Нет не работает, кнопка"Очистить" не активна. А хотелось бы чтоб и там работала, это возможно?
0. Сергей Шлапак (Sharloc) 22.06.09 14:46
Обработка удаляет (помечает на удаление) всю информацию из БП, связанную с помеченной на удаление организацией

Перейти к публикации

1. Алексей (Alav) 22.06.09 14:46
А без ошибок нельзя выложить?

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


И где здесь условие на удаляемые организации?
2. Сергей Шлапак (Sharloc) 22.06.09 15:57
Спасибо за найденную ошибку (1), странно, что до сих пор ее никто не заметил. У нас эта обработка активно используется.
3. Алексей Захаров (almas) 10.07.09 18:07
Спасиб. Маненько не доработана. Так например не очистит регистры с сложным Типом измерения . И ПодразделенияОрганизаций Не зачистит. в Понедельник свою версию выложу. Физлиц не по торкает. А так ОК. Я на ЗиУП работаю, потому столько внимания нюансам.
4. Иван Иванов (joghurt) 28.02.11 18:20
Извините за тупость.
А как этой прогрой пользоваться?
5. Наталья Х (NataliH) 16.09.11 00:23
Спасибо.получилось не всё, может я чего накосячила.
6. drfox (drfox) 16.09.11 11:16
Добрый день, а заодно с сотрудниками она физ.лиц не поудаляет?
7. drfox (drfox) 16.09.11 11:29
{Справочник.ВнешниеОбработки.Форма.ФормаЭлемента(189)}: Ошибка при вызове метода контекста (Создать): Ошибка при выполнении файловой операции 'F:\!SHARE\!Обработки8\BONUS_OrgMetla.epf'

чего не так то? 1с 8.1 БП 2.0? хелп... срочно нужно базы разделить...
8. Иван (habum) 22.09.11 17:20
Добрый день! Использовал при разделении баз, все получилось. Спасибо.
9. Евгений (Old Daemon) 30.09.11 09:25
Интересно, отработает ли отконверченная в 8.2 ? Попробую, отпишусь.
10. Евгений (Old Daemon) 30.09.11 09:35
Чота нифига, написало {Форма.Форма.Форма(238)}: Поле объекта не обнаружено (УдалитьПраваДоступаПользователей)
Набор = РегистрыСведений.УдалитьПраваДоступаПользователей.СоздатьНаборЗаписей();
11. svetic (svetic) 05.10.11 09:22
Использую при разделении баз, все получается отлично. Спасибо.
12. Андрей Иванов (aysh) 23.11.11 04:31
Спасибо, обработка пригодилась!
13. Сергей Шлапак (Sharloc) 18.12.11 23:33
(10) Old Daemon,
Проверьте на версии 1.10, там эта ошибка была исправлена.
14. Светлана Кончакова (Ariko-sv) 21.12.11 08:31
(4) joghurt, На удаление организацию пометьте и запустите обпаботку
15. Светлана Кончакова (Ariko-sv) 21.12.11 08:33
Спасибо, всё чётко работает. А то у меня при выгрузке копируются не нужные организации, приходилось тратить время и метить вручную на удаление все документы по этим организациям. А сейчас просто красота!!!
16. Виталий Барилко (Diversus) 28.01.12 20:30
(0) Обработку не смотрел т.к. сейчас не нужно, но когда то делал, что то подобное.
Я использовал следующую схему в своей обработке:
- Помечал на удаление организацию, все документы которой необходимо удалить
- Искал по ссылкам все, на что ссылается эта организация (благо есть функция НайтиПоСсылкам) и помечал на удаление
- Помечал на удаление все элементы справочников, которые могут принадлежать этой организации (зачем, станет понятно дальше) (Номенклатура, Места хранения, Статьи затрат, Номенклатурные группы, Пользователи и т.д.)
- Потом с контролем ссылочной целостности программно удалял все, что помечено на удаление
- Те элементы справочников, которые остались после удаления, снимаем после всего с них, пометку на удаление.
- Готово

Эта схема позволяет удалить не только организацию, но и почистить справочники и удалить из них элементы, которые использовались только в конкретной организации, например: в базе БП в которой 5 организаций, только удаляемая организация торговала продукцией "А", логично чтобы после очистки и удаления организации, продукция "А" тоже удалилась, т.к. она больше нигде не использовалась. Поэтому использовал подобные механизм.
17. Deniz200 14.02.12 11:28
Полезно, когда после выгрузки куча мусора, который нужно убрать. Спасибо, буду пробывать
21. esoldatov 07.06.12 13:47
Отличная разработка, почему 1с-ки сами не внедрили подобный алгоритм изначально непонятно...
22. Константин Киселев (StalkerAkella) 20.08.12 16:32
спасибо, выручила Ваша обработочка
23. Cthutq Иванов (ewqewqewq) 26.03.13 14:39
спасибо, выручила Ваша обработочка )))
24. solven toll (solven) 06.10.13 04:05
Версия 1.03 для 8.1 работает с редакцией 1.6 "Версия 1.6.8"?
Запускаю, появляется ошибка:

{Форма.Форма(146)}: Ошибка при вызове метода контекста (Выполнить): {(4, 2)}: Таблица не найдена "Справочник.СпособыОтраженияРасходовПоАмортизации"
<<?>>Справочник.СпособыОтраженияРасходовПоАмортизации КАК СправочникСОрганизацией
ВыборкаСпр = ЗапросСпр.Выполнить().Выбрать();
по причине:
{(4, 2)}: Таблица не найдена "Справочник.СпособыОтраженияРасходовПоАмортизации"
<<?>>Справочник.СпособыОтраженияРасходовПоАмортизации КАК СправочникСОрганизацией
25. Сергей Шлапак (Sharloc) 20.10.13 02:19
Версия 1.03 для 8.1 работает с БП не ниже 1.6.25. Добавил уточнение в описание.
26. Андрей Сябренко (AzagTot) 05.11.15 14:38
Спасибо за обработку! Очень помогла.

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

//почистим все регистры сведений где есть организация
	ЗаписиКУдалению = Новый Массив;
	Для каждого РегСвМетаданные из Метаданные.РегистрыСведений Цикл 
        ...
           	ЕстьОрганизация = (РегСвМетаданные.Ресурсы.Найти("Организация") <> Неопределено);
			Если ЕстьОрганизация Тогда
				Состояние("Очистка регистра сведений: " + РегСвМетаданные.Имя);
				Набор = РегистрыСведений[РегСвМетаданные.Имя].СоздатьНаборЗаписей();
				Набор.Прочитать();
				ЗаписиКУдалению.Очистить();
				Для каждого ЗаписьНабора Из Набор Цикл
					Для каждого УдаляемаяОрг Из масОрг Цикл
						Если ЗаписьНабора.Организация = УдаляемаяОрг Тогда
							ЗаписиКУдалению.Добавить(ЗаписьНабора);
						КонецЕсли;
					КонецЦикла;
				КонецЦикла;
				Для каждого ЗаписьНабора Из ЗаписиКУдалению Цикл
					Набор.Удалить(ЗаписьНабора);
				КонецЦикла;
				Набор.Записать(Истина);
			КонецЕсли; 
        ...
...Показать Скрыть



И еще я добавил во всех помечаемых на удаление объектах ОбменДанными.Загрузка = ИСТИНА, т.к. некоторые не записывались (например в договорах 1С-ка ругалась на незаполненные подразделения).
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа