gifts2017

Универсальная свертка БД

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

Универсальная свертка для 8.1 и 8.2. Свертка только регистров накопления (регистры бухгалтерии не поддерживаются).

Данная обработка была написана год назад и немного модифицирована раза два. Задачей ставилось свернуть 3-х летнюю историю в сильномодифицированной конфигурации "Управление торговлей".

Проблема состояла в том, что из-за больших доработок обработка "Свертка для УТ" не могла обработать данные корректно. Первое с чего пришлось начать - это понять структуру БД, в которой прийдётся проводить свертку. Отсюда выстроилась структура обработки.

Т.к. задача свертки сводится к удалению документов и истории, сохраненной в регистрах, то просто пометить все на удаление и ввести остатки будет не совсем корректно. Например, будут помечены на удаление документы "Поступление товаров", которые хранятся в измерениях регистров.

Необходимо проверить наличие связей объектов, которые мы хотим удалить, с историей позднее даты свертки. Отсюда необходимо выделить  набор правил:

1. Нельзя очищать подчиненные регистры сведений;

2. Нельзя очищать регистры сведений, в которых данный документ является измерением/реквизитом;

3. Нельзя очищать регистры накопления, в которых данный документ является измерением/реквизитом;

4. Оборотные регистры накопления можно чистить полностью, т.к. с точки зрения поставленной задачи они нам не нужны.

Так же в качестве подзадачи выступала возможность сворачивать часть БД. Например, мне необходимо свернуть данные об основных средствах, не трогая товары, и наоборот.

 

Доступный функционал:

  • Флажок "Просто сворачивать" отключает "интеллектуальную" пометку на удаление документов, т.е. перед пометкой на удаление не происходит поиска ссылок на документ;
  • Флажок "Показывать список удаляемых документов", если поставить, то после анализа будет выведен полный список документов подлежащих пометке на удаление;
  • Поле "Количество записей в одном документе ввода остатков", по умолчанию 5000, можете изменять как удобно, однако не рекомендую больше 30 тысяч;
  • Список "Сворачиваемые документы" указывает на те виды документов, которые можно свернуть;
  • Список "Не сворачиваемые документы" указывает те виды документов, которые при текущих настройках свернуть нельзя (подчиненные регистры сведений);
  • Список "Не важные подчиненные регистры сведений", это те регистры, которые буду чистится вместе с документами, прямо влияет на список сворачиваемых документов;
  • Список "Очищаемые не подчиненные регистры сведений", позволяет повысить коэффициент удаляемых докумнетов тем, что будут чиститься те регистры сведений, где подлежащий документы выступает в качестве измерения;
  • Меню "Снимок регистров" позволяет анализировать результаты свертки:
  • "Полный" - сохранить полный снимок всех остатковых регистров накопления в mxl файл;
  • "Сделать внутренний" - сохранить снимок остатков во внутреннем формате (быстрее);
  • "Сравнить с внутренним" - сравнивает текущее состояние остатковых регистров накопления с ранее сделанным снимком и показывает отклонения.
  • кнопка "Обновить списки видов документов" - при изменении списка "Не важные подчиненные регистры сведений" необходимо её нажать;
  • кнопка "Анализ" - проанализировать документы, которые подлежат удалению;
  • кнопка "Удалить документы" - используется ТОЛЬКО для отладки и тестов, не задумываясь помечает на удаление все документы до указанной даты;
  • кнопка "Выполнить" - выполняет свертку, в зависимости от указанного режима флажка "Просто сворачивать".

 

Дополнительные сведения

  •  
    • Довольно точно оценивает оставщееся время обработки;
    • показывает проценты сворачиваемости БД;
    • обрабтка выполняет без транзакций, т.е. либо все прошло успешно, либо загружаем бекап;
    • для корректной работы обработки требуется наличие документа "УниверсальныйДокумент", который зарегестрирован на все остатковые регистры накопления, и функция "ЗначениеНеЗаполнено" из типовой УТ (думаю она в любой типовой конфигурации есть).

 

Рекомендации по порядку проведения свертки БД

  1.  
    1. Сделать копию и первый раз пробовать все на копии;
    2. выполнить полное ТИИ;
    3. создать документ "УниверсальныйДокумент" и зарегестрировать его на все регистры накоплений, либо исправить название документа в программном коде в строках 784 и 753;
    4. сделать внутренний снимок остатков (при помощи кнопки "Сделать внутренний");
    5. найти "тяжелые" обработчики отмены проведения и удаления документов, разработать механизм отключения этого кода, на время свертки (например, при свертке документов "Заявка покупателя" в УТ позволило сократить время свертки с 23 часов до 8);
    6. определиться со структурой БД, т.е. понять что можно чистить, а что нет;
    7. заполнить списки "Не важные подчиненные регистры сведений" и "Очищаемые не подчиненные регистры сведений", заполнить список "Сворачиваемые документы";
    8. выполнить анализ;
    9. сделать копию (на случай неудачной обработки свертки);
    10. нажать кнопку "Выполнить";
    11. после успешного завершения (при выполнении обработки не возникло исключительных ситуаций), сделать сравнение с внутренним снимком;
    12. запуск удаления помеченных на удаления объектов;
    13. ТИИ.

P.S. как же глючит работа со списками при оформлении публикации... Как сделать междустрочный интервал побольше?

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

Наименование Файл Версия Размер
Свертка базы.epf 918
.epf 29,54Kb
27.02.13
918
.epf 29,54Kb Скачать

См. также

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

Комментарии

1. Rabajaba Caspersky (Rabajaba) 08.04.10 10:03
Абалдеть, 40 скачиваний и ни комента, ни плюса ... :)
2. Борис Скворцов (gaglo) 14.04.10 08:47
Оптимист... Многие (и я в том числе) не хотят ставить плюс без проверки работоспособности. Особенно когда обработка заявлена "универсальная". Ну на тебе плюс авансом. Проверить сильно охота, но и боязно: недавно у нас как раз сворачивали сильномодифицированную УПП, наскоками, частичными откатами, подчисткой хвостов занимались... с месяц. Так я думаю, у меня проверка займет с неделю...
3. Rabajaba Caspersky (Rabajaba) 14.04.10 10:32
(2) кончено, я после написания это обработки свою УТ неделю учился сворачивать так, чтобы данные корректность не потеряли. Но сама же обработка строго выполняет то, что её указали.
4. Delpass (Delpass) 28.04.10 11:19
БУду испытывать сейчас :D
5. Руслан (GrRusel) 12.11.10 17:52
Если у документа нет поля с датой, то вылетает с ошибкой :( вот в этом месте
Если Док.ДатаПоля = NULL Тогда
Продолжить;
КонецЕсли;

Надо ставить доп проверку...на существование поля
6. Rabajaba Caspersky (Rabajaba) 12.11.10 18:47
(5) Возможно я не понял вопрос, но как это документ без поля "Дата"?
7. Руслан (GrRusel) 12.11.10 18:58
Возможно я не так выразился - сори :)
Вы делаете проверку
Если Док.ДатаПоля = NULL Тогда
Продолжить;
КонецЕсли;
что и как и зачем и откуда я не знаю - не вникал.
Док это у вас строкатаблицызначенией. в этой таблице есть поля:
ДатаПоля
ДокументПартии
регдата
регистратор

В какой-то момент у этой таблицы есть только поле Заказклиета и всё
Почему - не знаю - не вникал. Конфигурация не типовая, а Типография(УПП+Типография),купленная у армекса на ранних стадиях и именно на их документах обработка валится :(
8. Руслан (GrRusel) 12.11.10 19:14
создать документ "УниверсальныйДокумент" и зарегестрировать его на все регистры накоплений

а так же создать в нём реквизит: Комментарий - иначе вылетает.
9. Serj (Serj1C) 09.06.11 07:32
(0) Спасибо. Обработка выручила! После обработки напильником все прошло очень хорошо!
- случай указанный в (7);
- замена универсального документа типовой КорректировкойРегистров
- установка доп. свойства для объектов, которое потом анализируется в модулях перед записью для оптимизации
- сокращение визуальных эффектов типа "состояние".

Кстати оставшееся время обработки действительно довольно точно оценивается!
Genneral; +1 Ответить
10. Александр (alexkl) 09.12.11 08:08
собираю все для проверки, т.к. итс-овская вылетает.
11. Андрей Гросу (trustgros) 14.12.11 18:15
чет у меня не пошла. ошибку выкинуло
12. Андрей (Genneral) 04.01.12 17:14
Спасибо, сильно облегчила жизнь при свертке не типовой УТ,спасибо Serj1C за идею
Serj1C пишет:
- замена универсального документа типовой КорректировкойРегистров
13. Гость 08.01.12 16:35
Очень жаль, что без свертки по регистру бухгалтерии, очень полезная свертка была бы. А так, очень даже ничего. Рекомендую!
14. Игорь (_ink_) 12.01.12 11:53
Добрый день. Подскажите, правильно ли понимаю. В ней можно свернуть базу допустим на 31,12,11 и документы введённые после этого останутся (если да, то как будет выглядеть привязка к документу-основанию в срезанном периоде). Или всё таки необходимо сворачивать на сейчас и с этого момента начинать работу? Заранее спасибо.
15. Rabajaba Caspersky (Rabajaba) 12.01.12 14:12
Если я правильно помню, то она оставляет те документы, которые нельзя удалить. Т.е. по идее возвраты по продажам прошлого года вводить можно будет, основание будет, однако я не помню снимет ли она их с проведения или нет - проверяйте :) это было почти 2 года назад, плохо помню.
16. Павел Шишкин (pav_s45) 16.01.12 13:20
Свертка отличная, в моей УТ просто выбрал дату и нажал "Выполнить все". Пользуюсь второй год.
17. Брест Беларусь (zhleonid8) 01.02.12 01:44
18. Ak Uji (Akuji) 21.01.13 16:28
УТ 10.3 "практически типовая" добавлено парочка регистров накоплений...
настройки по умолчанию позволяют удалить 3000 из 103000 документов...
Это нормально?
19. Геннадьевич Бу (Геннадьевич) 22.01.13 18:49
Не могу скачать, выдает ошибку:

Скачать "Свертка базы.epf" для 1С

Fatal error: Call-time pass-by-reference has been removed in /srv/www/core/bitrix/templates/.default/components/bitrix/asd.elements.list/is_buy_download_file/result_modifier.php on line 7
20. Света Серебряная (silver-747) 17.10.13 20:32
в УТ 10.3 под 1С 8.1 ничего почти не сделала из 3900 документов удалила только 277 и ничего не свернула. Что не так могу делать?
22. Rabajaba Caspersky (Rabajaba) 18.10.13 13:50
(21) dyak84, писал конкретно под самописную. база была существенно меньше, уже 2 года 1С не занимаюсь. удачи :)
23. Олег Семенов (corelius) 18.06.15 15:42
Непонятная обработина. Нужно сразу писать в описании, что она ничем не отличается от банальной пометки документов на удаление по периоду. Можно использовать стандартную обработку "групповая обработка справочников и документов" и помечать на удаление по дате. И ошибок много с регистрами.
24. ssn5810 (ssn5810) 21.02.16 15:26
попробовал, - хрень, использовал стандартную, все получилось....
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа