Как быстро "удалить все документы и движения" в базе (Альтернатива)

Очень часто задают вопрос — как удалить все документы из базы, оставить только номенклатуру и настройки.
Есть много различных вариантов (групповая обработка документов и справочников — да, работает, но медленно, у клиента в базе 460 000 документов проведенных — неделю будет удалять). Перенос данных — через ВыгрузкаЗагрузкаДанныхXML82.epf — можно, но тоже долго и требует определенных навыков.

Мне в голову пришел другой вариант.

Нужно было срочно решить вопрос (по "гуглил" — вроде не нашел такого примера, или все достаточно просто, или не было желания описать).

Итак, стояла задача — сохранить всю Номенклатуру (около 25000), все справочники, константы и самое главное — сохранить бонусную и дисконтную систему в конфигурации MAGAZKA — лучшая программа для розничного магазина — это регистры сведений — база работала около трех лет (48000 клубных карт)

В базе 460 000 документов проведенных.

База файловая.

Затраченное время : ~ 1 час

Решение :

1. В ЦБ (центральная база) план обмена полный (если не использовался РИБ, ничего страшного)  создаем узел и запоминаем код узла (например :00000022)

но  —  ВАЖНО ! не нажимаем кнопку меню "СОЗДАТЬ НАЧАЛЬНЫЙ ОБРАЗ"

2. Открываем обработку "Регистрация изменений для обмена" — снимаем Всю регистрацию (хоть по умолчанию ее нет, но лучше сделать) и дальше регистрируем для обмена — нужные нам объекты — справочники, константы, регистры сведений и т.д.

3. В плане обмена для узла : 00000022 — меню — Записать изменения — получаем файл выгрузки в XML (538 мб) в zip около 20 мб. (время выгрузки около 14 минут)

4. В ЦБ — заходим в конфигуратор — меню — Конфигурация — Сохранить конфигурацию в файл — получаем файл с расширением *.cf

5. Создаем пустую базу — заходим в конфигуратор — меню — Конфигурация — Загрузить конфигурацию из файла.

6. Заходим в эту базу в пользовательском режиме — План обмена полный — создаем два узла 00000001 и 00000022

7. Вот теперь маленькая хитрость — меняем узлы местами — т.е. превращаем нашу базу в ПБ (периферийную)

ПланыОбмена.УстановитьГлавныйУзел((<ГлавныйУзел>));

8. Планы обмены — меню — прочитать изменения — указываем наш файл — загрузка прошла успешно ~ 11 минут

9. Заключительный момент — удаляем признак периферийной базы — ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

10. Делаем ТИИ (тестирование и исправление ИБ…) на всякий случай.

Все, можно работать.

Итог: решили задачу с минимальными затратами, средствами платформы — качественно и быстро

Может, кому-нибудь когда-нибудь и пригодится.

17 Comments

  1. necropunk

    А узлы обязательно менять местами? Простой Универсальный обмен данными в формате XML разве не может загрузить данные в любую базу с этим CF? Просто пользовался раньше похожей методикой — через узел все таскать — таких проблем с заменой узла не помню.

    Reply
  2. Tatitutu

    (1)А узлы обязательно менять местами?

    да. чтобы на время сделать базу Перифирийной

    Простой Универсальный обмен данными в формате XML разве не может загрузить данные в любую базу с этим CF?

    Нет , ИМЕННО ЭТУ выгрузку он не «кушает» — «Неверный формат выгрузки»

    я же написал — АЛЬТЕРНАТИВА

    Просто пользовался раньше похожей методикой — через узел все таскать — таких проблем с заменой узла не помню.

    а как таскал ? если узла у тебя не было — а если его инициализировать — штатным способом очень долго …

    (можно скопировать ЦБ — и также подменить узлы места — лишние удалить)

    Reply
  3. necropunk

    (2) Подробностей не помню уже, помню, что сделал узел и на него все кидал, что в тестовую надо было выгружать. Но это было в подсистеме с интегрированными Инструментами Разработчика, может местной встроенной обработкой просто читалось, там допил какой-то был на форматы и нечеткое чтение, не помню.

    А так — идея хорошая, да, взял на заметку.

    Reply
  4. DNN13

    Разве через «Выгрузку загрузку данных XML» не будет проще? Также выбрали нужные объекты, выгрузили, создали новую базу, загрузили.

    Reply
  5. Tatitutu

    (4) Дмитрий , может и проще , но однозначно дольше , а во вторых я же указал в заголовке «АЛЬТЕРНАТИВА»

    добавить в базу знаний , еще одни способ.

    Вот представь себе ты случайно оказался у клиента (ну нет у него интернета, поверь такое бывает) и нет у него и у тебя обработки «»Выгрузку загрузку данных XML»

    а сделать нужно — ты же профессионал ! Как быть тогда ?

    Пригодиться этот метод — минимум программирования — платформа все сделает самостоятельно.

    Reply
  6. Dzenn

    не вник, но идея через распределёнку шикарная

    Reply
  7. Xamele0n88

    Если на платформе 8.3 и в справочниках есть предопределенные элементы, то они задублируются )

    Тут либо отключать авто создание предопределенных элементов в новой базе до загрузки CF.

    Либо не регать на узел предопределенные элементы

    Reply
  8. Tatitutu

    (6) Спасибо ! Это статья , как раз на тему «Голь на выдумки хитра»

    в одном моменте мысль пришла — есть задача, нужно сделать, а для клиента -важен только результат.

    Просто, доступно, понятно и главное надежно работает.

    Reply
  9. Tatitutu

    (7) Нет, дублей не выявлено было — в Номенклатуре — 10 предопределенных элементов — все «штатно скушало»

    Reply
  10. iPanda

    Можно проще сделать удалить документы обработкой https://infostart.ru/public/795917/ и сделать тест… проверено работает

    Reply
  11. aleksdiez

    (5) Чем дольше выгрузка загрузка?)

    Reply
  12. Hamsik

    (10) Вам не кажется, что Ваша обработка по сравнению с приведенными способами (выгрузкаXML и способ в статье) работает гораздо медленнее ? Наверняка вы обходите метаданные циклами, и также в цикле удаляете документы… На каком количестве документов пробовали? И сколько времени заняло?

    Reply
  13. LavinVadik

    MS SQL truncate table

    либо ClearSQL(1.3.4).epf

    автор не работал с базами у которой в регистре накопления 111 000 000 записей ?

    Reply
  14. Hamsik

    (13) Ответа с моей стороны не было, только предположение, мои вопросы без ответа — На каком количестве документов пробовали? И сколько времени заняло? Никакого троллинга 🙂

    И кстати я обращался не к Вам, а к коллеге из (10)

    Reply
  15. Tatitutu

    (18) Вадик, ты из цикла то выйди …

    по

    ОбработкаПрерыванияПользователя();

    или по

    Прервать;

    и сходи на страничку разработки ТОГО автора и там ему задай свой вопрос (а то он там тоже в шоке от твоего поста)

    тут то зачем задавать — где логика в твоих действиях ?

    А то присвою тебя в переменную в неопределено….

    А вот это прямое нарушение политики данного сервиса

    Reply
  16. Hamsik

    (19) Хорошая работа 😀 эх гугл гугл

    Reply
  17. docerman

    В ERP все предопределенные элементы задублировались (справочники и планы видов характеристик)

    Reply

Leave a Comment

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