gifts2017

Каскадная пометка удаления и удаление записей регистров.

Опубликовал Ivon (Ivon) в раздел Обработки - Свертка базы

Очень быстрая обработка каскадной пометки удаления. Удаляет записи независимых регистров сведений. Позволяет предварительно выгрузить все в mdb.

Так уж вышло, что 2 компании вели учет в одной базе более 5 лет. Недавно компании решили окончательно разделиться и стал вопрос о разделении баз 1С (бухгалтерская стандартная доработанная и самописная для страхового учета). Решили просто отдать копии баз второй компании, а в процессе поудалять из баз лишние объекты.

Вот тут начались поиски соответствующих обработок. Смотрели и ИТС и различные самописные и не очень обработки, но найти ничего не смогли: некоторые вываливались в ошибку, так как писались под конкретную конфу, некоторые отбирали не все данные, а та, которая запустилась и начала работать, за день работы выбрала только 1-й уровень объектов со ссылками, а вот дальше у меня просто не хватило терпения и обработку пришлось закрыть.

В результате сел и написал сам. В отличие от стандартной обработки, моя не ведет поиск через Метаданные......Найти. Перед запуском обработка анализирует конфигурацию, после этого ищет необходимые данные исключительно в тех полях объектов, которые могут содержать значение искомого типа. Основа обработки - это динамически составляемые запросы.

Обработка содержит 3 основных шага:

1) выборка данных. Рекомендую залезть в код и раскомментить типы данных, которые есть у вас в конфе и закомментить ненужное. Выборка не делает никаких изменений в базе. После выборки результат можно выгрузить в mdb, который затем можно быстренько импортнуть в MSSQL для анализа. MS Access в этом процессе не используется, все делается с помощью ADO. Если ссылок немного, то можно использовать и Access;

2) удаление независимых регистров. Понятно, что записи удаляются безвозвратно. Этот шаг рекомендую делать, если вы твердо уверены, что в выборку не попали лишние ссылки. Попасть они могут только в том случае, если в них содержатся ссылки на удаляемые объекты.

3) отмена проведения документов и пометка удаления. Здесь тоже рекомендую залезть в код и добавить обработку отмены проведения для необходимых документов. Например в моей конфе нельзя отменить проведение некоторых документов без изменения статуса документа. Закомментированный код оставил. Так же рекомендуется в коде назначить очередность типов документов. В моей базе есть документы, которые нельзя сделать непроведенными, пока они содержат ссылки на проведенные документы другого типа.

А теперь о производительности. Моя страховая база имеет в себе более 1 млн. объектов, принадлежащих одной из организаций. Выборка примерно 660 тыс. обектов одной из организаций заняла около 50 минут. Можете сами попробовать на своей базе сделать выборку по организации и посмотреть, за какое время обработка выберет все данные. Шаг 1 не делает никаких изменений в данных.

Есть у обработки и ограничения, которые касаются исключительно платформы. Если очень много ссылок, сама 1С может вылетать с сообщением "Недостаточно памяти". К сожалению, это ограничение для 32-битных приложений. Если у Вас 4 и больше гиг памяти и х64 операционная система, можете выполнить то, что описано здесь http://infostart.ru/public/147631/ . Мне помогло, но пришлось еще сидеть и оптимизировать саму обработку.

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

Наименование Файл Версия Размер Кол. Скачив.
КаскаднаяУстановкаПометкиУдаления.epf
.epf 25,03Kb
24.02.15
8
.epf 1.01 25,03Kb 8 Скачать

См. также

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

Комментарии

1. max maxx (motorkuzbassa.it) 24.10.13 07:46
А есть план обмена "по организации" и порядок. само выгрузит без всяких анализов и вылетов по памяти.
2. Ivon (Ivon) 24.10.13 11:17
(1) motorkuzbassa.it,
Есть, А теперь представьте, сколько времени будет затрачено на проведение всех документов и сколько этот самый обмен будет происходить, если у нас обмен за месяц обрабатывается примерно час? В моей базе это минимум (!) 60 часов времени, в которые никто не сможет работать в базе. Согласен, если конфа стандартная и не доделывалась, можно использовать обмен. Но не все же работают в стандартных конфах? Да и просто удалить какой-то объект из базы этой обработкой очень удобно.
3. Владимир Васильев (VladimirKHV) 15.05.14 07:25
Пробую запустить, выдает
{ВнешняяОбработка.КаскаднаяУстановкаПометкиУдаления.МодульОбъекта(639)}: Ошибка при вызове метода контекста (Выполнить)
по причине:
{(2268, 5)}: Таблица не найдена "ЗадачаИсполнителя"
ИЗ <<?>>ЗадачаИсполнителя КАК ЗадачаИсполнителя_ОбъектЗадачи


пытаюсь открыть в конфигураторе, требует пароль
4. Andrey Karetskiy (silberRus) 24.07.15 12:13
Там пароль есть или нет?
а то мои нестандартные конфы точно потребуют изменения
5. Ivon (Ivon) 24.07.15 21:44
Gfhjkm tcnm(4) silberRus, Пароль есть. Ждите. Скоро выложу незапароленную версию.
6. Виталий Глазунов (Altez) 09.12.15 18:18
+1
Пометил Организацию, что дальше сделать с этими регистрами?
http://i73.fastpic.ru/big/2015/1209/a8/fcca3fda9d2da9e3fc0b8faa8250e4a8.jpg
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа