Быстрое удаление данных по организации, используя ADO


Время от времени возникают вопросы на форуме Инфостарта по сабжу. Данная обработка решает данную задачу.

Что требуется:

  1. Сделать резервную копию базы
  2. Открыть обработку
  3. Выбрать организацию
  4. Нажать кнопку "Выполнить"
  5. Если организаций несколько, повторить пункты 4 и 3
  6. ПРОФИТ!!!

Если используется дата запрета редактирования данных, то ее следует предварительно поправить.

В режиме теста записи только подсчитываются, а справочники только помечаются на удаление при снятии соответствующего флажка.

Добавил возможность подключения к базам PostgreSQL и IBM DB2, но только "на бумаге". Нет возможности проверить на реальных серверах. И таки да ничто не мешает опробовать на Oracle.

После всего этого безобразия рекомендую запустить ТИИ с пересчетом итогов.

Тестировалась на конфигурациях БП, УТП и платформе 8.3.13.1513, и MS SQL 10.50.1600.1

На моем неспешном ноутбучном тошибовском диске полтора миллиона записей удалено было за две минуты с небольшим.

24 Comments

  1. Xershi

    А где сервер СУБД? Форму для УФ?)

    Reply
  2. Fox-trot

    там где база, там и субд

    уф не стал рисовать, решил, что все это безобразие востребовано лишь для старых баз/конф

    Reply
  3. Terve!R

    (2) ну да, наверное люди на УФ чем-то другим занимаются)

    А можно переделать для УФ и выложить от себя?)

    Reply
  4. premierex

    (0) Дописал обработку для подключения через Системный DSN базы на PostgreSQL. Подкорректировал запросы (в PostreSQL GIUD имеет тип bytea и сравнение происходит немного не так, как в MS SQL). Запустил тест.

    Тест выявил те же

    полтора миллиона записей

    (+/-, не очень много). После нажатия на кнопку «Выполнить» с отключенным флагом «тест» база «повисла» на 3 часа. Дольше ждать не стал. Пришлось удалять процесс, чтобы прервать выполнение.

    Вот тебе и

    за две минуты с небольшим



    Хотя за идею «плюсану» всё-таки.

    Reply
  5. nomad_irk

    (4) Плюсаните и в https://infostart.ru/public/1125435/ 🙂

    Reply
  6. premierex

    (5) Плюсану, когда увижу реальные

    две минуты с небольшим

    🙂

    Reply
  7. nomad_irk

    (6)Лично я две минуты не обещал вообще в анотации к обработке 🙂

    Минут за 40-50, в зависимости от объема БД, данные по организациям должны исчезнуть из БД.

    Я не говорю про большие БД(Более 100Гб), там время уже может и в часах измеряться…..

    Reply
  8. premierex

    (7) Фраза

    На моем неспешном ноутбучном тошибовском диске полтора миллиона записей удалено было за две минуты с небольшим.

    разве не является аннотацией к обработке? Ну и, конечно же, если Вы результаты замеров времени приводите, неплохо было бы ещё и размер базы указать. Всё же чаще бывают случаи, когда удаляют ненужные записи в сильно «распухшей» базе, чем случаи, когда требуется сокрытие информации.

    Reply
  9. nomad_irk

    (8)Это другая обработка и другой автор 🙂

    Я не несу за них отвественности.

    Я несу ответственность за https://infostart.ru/public/1125435/

    Reply
  10. premierex

    (9) М-да… бывает… Не посмотрел на ник-нэйм автора комментария и посчитал, что веду диалог с автором этой публикации. Скачивал-то я его обработку. А Вашу я не скачивал, не тестировал, кода не видел. Поэтому, увы, оценить Ваш подход не могу. Если обработка, предложенная в этой публикации «не взлетит», возможно, буду смотреть в сторону Вашей обработки. Или свою писать )))

    Reply
  11. Fox-trot

    (10) добавил упраформу, если оно вообще кому-то надо

    Reply
  12. oly86

    Добрый день. а данная обработка очищает регистры? Я тут одну скачала — а она только доки почистила и оставила движения по ним с битыми ссылками

    Reply
  13. nomad_irk

    (12) обработка из (5) чистит вообще все 🙂

    Reply
  14. oly86

    (13) это я поняла, но дорогая у вас обработка, к сожалению

    Reply
  15. oly86

    Скачала обработку, запустила. По организации в режиме тест — нашлось ДВЕ!!! записи.сняла галку тест. зависло и непонятно что делает.

    Reply
  16. Fox-trot

    (15)

    записи.сняла галку тест. зависло и непонятно что делает.

    может таки нажала «Выполнить»?

    Reply
  17. oly86

    ну конечно выполнить нажала. обработка чистит данные, но зависает. т.е. она все почистила и висит

    Reply
  18. zabaluev

    УТ 10.3, платформа 8.3.13

    {ВнешняяОбработка.УдалениеИнформацииПоОрганизации.МодульОбъекта(86,139)}: Процедура или функция с указанным именем не определена (СтрНайти)

    Reply
  19. Fox-trot

    (18) в старых версиях/режимах совместимости 1це нет такой функции, замените на Найти(…

    Reply
  20. suhoi

    Скачал обработку. База файловая, ЗКГУ ред.3. Открыл базу, выбираю организацию, нажимаю Выполнить — ничего не происходит. Почему? Что не так?

    Reply
  21. Fox-trot

    (20) на файловой работать не будет, это же адо

    Reply
  22. MiKe80

    Добрый день!

    Ошибочка:

    Затрачено времени: 1 час 47 мин

    Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {РегистрНакопления.ВыручкаИСебестоимостьПродаж.МодульНабораЗаписей(215)}: Преобразование значения к типу Дата не может быть выполнено

    ERP 2.4.7.141

    8.3.12.1714

    И в списке организаций Все организации задвоены

    Reply
  23. NeSPEC

    Добрый день.

    Для корректной работы с базой на PostgeSQL рекомендую немного подправить в запросах:

    1. «виктим» (и прочие GIUD ): 0xABC… на ‘abc…’ ( в PostgreSQL — важно БОЛЬШИЕ или маленькие )

    одинарные кавычки тоже нужны.

    2. SET _Marked = 0x1 на SET _Marked = TRUE

    3. » WHERE » + ИмяПоляХранения = » на » WHERE encode(» + ИмяПоляХранения+ «, ‘hex’) = »

    ( в PostgreSQL по другому идет работа с бинарными данными ).

    Всего хорошего.

    Успеха автору и всем неравнодушным в дальнейшем.

    Reply
  24. suhoi

    Вопросы.

    1. Будет исправлено замечание из 23?

    2. А можно сделать что бы не по одной организации выбирать, а по списку, что оставить или что удалить. В базе 80 орг. Надо выделить все в отдельные базы. По одной запаришься ((

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *