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

Очень часто задают вопрос — как удалить все документы из базы, оставить только номенклатуру и настройки.
Есть много различных вариантов (групповая обработка документов и справочников — да, работает, но медленно, у клиента в базе 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 не будет опубликован. Обязательные поля помечены *