Свёртка базы

26.12.13

База данных - Свертка базы

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Свертка
.cf 32,92Kb
240
240 Скачать (1 SM) Купить за 1 850 руб.

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


     Учетная система 1С:Предприятия построена на регистрах, которые, как правило, наполняются документами при их проведении. Если мы удалим документ, то удалим и движения этого документа. Чтобы сохранить движения при удалении документа мы можем подменить стандартный реквизит регистра - "Регистратор" на другой документ. При этом вся важная учетная информация не изменится. Не изменятся ни остатки на складах или задолженности контрагентов, ни текущее сальдо по счетам бухгалтерского учета, ни курс условной единицы, ни размер начислений и удержаний, ни отработанное время сотрудников. В качестве документа-подмены необходимо использовать те, у которых свойство "Проведение" имеет значение "Запретить". Такие документы в типовых конфигурациях есть, например "Операция" или "Корректировка записей регистров накопления". Однако существует ограничение в  использовании документов вроде "Корректировка записей регистров накопления" - далеко не все регистры имеют в качестве регистратора документы этого типа. Чтобы убрать это ограничение можно указать документ "Корректировка записей регистров накопления" в качестве регистратора для всех регистров. Можно и по другому - создать еще один документ такого типа и тем самым избежать проблем при обновлении типовых конфигураций.


    Что дает такой подход к свёртке? Прежде всего мы можем запустить перманентный (перманентный — постоянный, непрекращающийся, нескончаемый, неуклонный, систематический, методический, методичный, хронический, неустанный, безустанный, бесперебойный, безостановочный...) процесс свёртки, не оказывающий заметного влияния на штатную работу пользователей. Мы можем в любой момент запустить свёртку и в любой момент прекратить её. мы можем отобрать для свёртки документы определенного типа или какой-то конкретной организации.  Написать такую обработку, причем универсальную, для любых конфигураций, не составляет большого труда. Но корректно свёртывать в общем случае она не сможет. Почему? Дело в том, что довольно часто проведение документов зависит от "окружающей среды". Как пример можно рассмотреть проведение документа "Поступление товаров и услуг" в БП 2.0. Если у такого документа уже введен счет-фактура, то записи формируются одни, если нет - то другие. Поэтому при удалении документов свертываемого периода важно удалить сначала счет-фактуру.


    Чтобы идентифицировать подобного рода проблемы, для дальнейшего анализа и разрешения введен специальный режим: "Отладка".  При включенной отладке запоминается состояние регистров перед удалением документа и сравнивается с состоянием после удаления и подмены. Если состояние изменилось, свертка прекращается с выдачей соответствующего сообщения. Режим отладки можно не использовать, ускоряя ход выполнения свертки, однако в этом случае требуется тщательная сверка остатков на начало периода. Документы можно удалять непосредственно, включением соответствующего режима или только помечать на удаление. Переключение режимов осуществляется двойным кликом по надписи на форме.

    Инструкция по применению. Скачиваем файл _Свёртка_.cf и объединяем со своей конфигурацией. В результате появятся два новых объекта — документ "_УниверсальныйРегистраторЗаписейРегистров_" и обработка "_СвёрткаБазыДанных_". Документ следует назначить регистратором всех регистров конфигурации (закладка Движения), а в обработке реквизиту "Организация" назначить соответствующий тип данных. При включенном режиме непосредственного удаления, возможны конфликтные ситуации с правами доступа, в том числе на уровне записей.

Свёртка

См. также

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7862    58    23    

69

Перенос данных 1C Оптовая торговля Свертка базы Системный администратор Программист Бухгалтер Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Хотите точно знать, что вы выгружаете? Хотите сворачивать товары по НДС или фильтровать товары по доп. реквизиту? Вы волшебник, которому необходимо превращать одних контрагентов в других? Хотите при выгрузке превратить группу товаров в один? Или просто нужен удобный OLE обмен между 1C:Управление торговлей (ред. 11 или 10) и 1С:Бухгалтерия предприятия (ред. 2 или 3). Тогда эта обработка для вас!

10900 руб.

19.04.2013    171998    365    397    

334

Свертка базы Системный администратор Программист Платформа 1С v8.3 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Платные (руб)

Универсальная свертка баз данных под 1С разработана для свертки баз данных различного объема и сложности. Обработка работает на простых и управляемых формах. Обработка позволяет легко и интуитивно понятно проводить работы по свертке базы данных и других необходимых операций связанных с обслуживанием баз данных.

6000 руб.

22.05.2024    3007    13    7    

22

Свертка базы Программист Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Управленческий учет Платные (руб)

Обработка свертки базы 1С УНФ 1.6 выполнена в виде расширения конфигурации, которое встраивается в вашу базу без снятия с поддержки, и адаптирована под релиз УНФ 1.6.

4800 руб.

20.04.2021    16883    51    34    

58

Свертка базы Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Разработка универсальна, работает на любой конфигурации, на версиях платформ 8.1 и 8.2. Исходные коды открыты. Усекаются сразу все разделы учета (регистры бухгалтерии, регистры накопления, регистры сведений). Разработка представляет из себя cf-файл с одним единственным документом: ЗакрытиеПериода. В нём содержится функционал как по заполнению, так и по очистке регистров. Так же для версии 8.2 возможна переброска данных в "чистую" базу нажатием одной кнопки.

4800 руб.

21.02.2011    109412    113    249    

303

Свертка базы Программист Бухгалтер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

Правила переноса остатков из конфигурации Бухгалтерия 3.0 в конфигурацию Бухгалтерия 3.0. Правила могут быть полезны для свертки рабочей базы документами "Ввод начальных остатков" или для перехода из типовой Бухгалтерии в отраслевую конфигурацию, основанную на ней, или для перехода с УСН на ОСНО.

2 стартмани

26.09.2024    484    16    kumi2012    7    

4

Свертка базы Инструментарий разработчика Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет НДС Абонемент ($m)

Представлена рабочая обработка для перехода на учет партий в учете запасов (не универсальная). Дополнительно расписана технология работы с документом ОперацияБух и с аналитиками учета (основная цель).

1 стартмани

19.08.2024    651    1    RustIG    5    

3

Свертка базы Программист Платформа 1С v8.3 1С:Управление торговлей 10 Управленческий учет Абонемент ($m)

Представлена обработка для свертки УТ 10.3 по новой концепции - когда сворачиваем "подокументно", а не "целиком и сразу по всем регистрам".

1 стартмани

03.04.2024    2899    15    RustIG    16    

17
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ardn 658 26.12.13 14:00 Сейчас в теме
Сорри, как убрать минус?
2. indigo_ 26.12.13 14:03 Сейчас в теме
(1) Нажмите на красную звездочку внизу публикации
3. frlancer 26.12.13 14:30 Сейчас в теме
Интересная идея. в шапке статьи заявлено что для платформы 1с 8.2. Для 7.7 такой подход не подойдет?

И второй вопрос, этот метод уже использовался на практике? Можете расписать преимущества перед обычной сверткой?

Немного не ясно, что дает подмена регистратора? Потом удаляются документы которые делали движения, а "новый документ регистратор" остается? Как тогда будут работать алгоритмы завязанные на регистраторе?
vadimlp77; +1 Ответить
5. Азбука Морзе 106 27.12.13 10:51 Сейчас в теме
(3) day_light,

Интересная идея. в шапке статьи заявлено что для платформы 1с 8.2. Для 7.7 такой подход не подойдет?

Формы обработки и документа управляемая, поэтому только для 8.2(8.3) Для 7.7 есть свои свертки, например http://infostart.ru/public/65228/

И второй вопрос, этот метод уже использовался на практике? Можете расписать преимущества перед обычной сверткой?

Эту свертку тестировал на реальной бухгалтерии 2.0 и демо 3.0, ЗУП 2.5. Использую для многократно пиленой УТ 10.2 с кучей доморощенных регистров и документов. Преимущество перед обычной сверткой в случае с УТ 10.2 в том что она работает. Кроме того не нужен монопольный запуск, для каждого вида документа можно установить свой период свертки. Одни документы оставляются за последний год, другие за два, третьи вообще не удаляются.

Как тогда будут работать алгоритмы завязанные на регистраторе?

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

(3) insurgut,

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

В рамках регистратора записи регистров накопления и бухгалтерии сворачиваются. В периодических регистрах сведений хранится вся история, хотя можно оставлять срез на дату регистратора. В дальнейшем, возможно, будет для этого специальная настройка. Данные регистров расчета пока не сворачиваются. Вопрос на стадии изучения. Скорее всего их нужно просто удалять вместе с документами.
mikhailovaew; +1 Ответить
4. insurgut 208 26.12.13 15:07 Сейчас в теме
Объем данных уменьшится только на количество документов, в регистрах как все было, так и останется (а зачем нам старые обороты, когда важны только итоги на дату свертки?). Половинная свертка получается.
Мах; Taktic; mikhailovaew; +3 Ответить
6. iov 407 27.12.13 15:09 Сейчас в теме
Делал немного иначе
свертка итогов - ввод начальных остатков. (это монопольно)
корректировкой записей вводил противоположные записи в нужных регистрах. получалась пара записей с разным значением. в сумме дает 0. (и это монопольно)

далее удалял парные записи из регистров нужных мне с транзакциями. (это уже с пользователями можно) (берите маленькими партиями и блокировки вас не будут беспокоить).
в итоге остаются документы необходимые для специфических систем учета взаиморасчетов и прочее.
остальные документы не имеющие записи по регистрам - удалял через стандартную пометку и удаление.

процедуры не влияют на работу пользователей кроме замедления на больших объемах. Но задержка по времени вам в помощь.

Если красяво оформить прогресс бары то на недельку (при реально больших объемах) у вас будет что показать руководству и коллегам.
Не забываем делать бекапы.
7. PYCTAM 03.01.14 14:16 Сейчас в теме
БП 2.0
Объединяться захотела только под платформой 8.3.
Думает ооочень долго причем использует только 1 процессор из 8 причем по началу обрабатывает документы быстро а потом по 1 за 2-4 секунды.
8. пользователь 10.01.14 09:56
Сообщение было скрыто модератором.
...
9. Азбука Морзе 106 10.01.14 10:00 Сейчас в теме

(7) PYCTAM, Разве можно ожидать, чтобы скромная обработка управляла загрузкой процессоров. Воспользуйтесь советом Билла Гейтса и обратитесь к системному администратору:)

Что касается скорости, то да, действительно, поначалу пока набор записей регистратора невелик, работает намного шустрее. Так ведь и алгоритм такой - читается набор записей подчиненный регистратору, добавляются новые записи от очередного документа, по мере возможности свертываются и записываются в базу. Соответственно чем больше становится набор, тем дольше он читается и записывается. Для того чтобы, ограничить его размер воспользуйтесь соответствующей опцией:



У меня обработка запускается еженедельно(!), регламентным заданием в ночь на воскресенье и сворачивает данные одной недели двухлетней давности.
10. PYCTAM 10.01.14 11:55 Сейчас в теме
(9) Да извиняюсь по поводу процессора это не в тему. А так база свернулась на ура. Спасибо за труды!
11. vsmirnov6 34 14.01.14 17:40 Сейчас в теме
Идея интересная, хотел протестить, но объеденяется только под 1С 8.3, А есть на 8.2??? Если нет, то измените заголовок!!!
12. Азбука Морзе 106 15.01.14 11:49 Сейчас в теме
(11) vsmirnov6, одно из свойств конфигурации называется режим совместимости. Чтобы cf-ник для 8.3 превратить в cf-ник для 8.1/8.2 следует изменить режим совместимости (Конфигурация-Свойства-РежимСовместимости-Версия 8.1 или Версия 8.2.13 или ...) После этого сохранить конфигурацию в файле _Свертка_82.cf.
13. vsmirnov6 34 15.01.14 16:36 Сейчас в теме
17. ivanov.dn 08.04.14 19:38 Сейчас в теме
(12) прочитал сообщение под номером 12.Можно подробнее для чайников...Хочу свернуть базу 8.2.18.109.
18. Азбука Морзе 106 09.04.14 09:52 Сейчас в теме
(17) ivanov.dn, Пожалуйста.

1.Скачиваем с сайта 1с платформу 8.3 и устанавливаем на свой компьютер.
2.Создаем пустую базу, в стартере которой указываем: Версия 1С:Предприятия 8.3
3.В эту базу грузим конфигурацию из файла _Свертка_.cf
4.Меняем режим совместимости: выделяем наименование конфигурации (например: БухгалтерияПредприятия...) - правая кнопка мыши -Свойства (в самом низу, открывшегося окна) - Режим совместимости - Версия 8.2.16
5.Сохраняем конфигурацию в файле _Свертка_8216.cf, который можно затем использовать для интеграции с вашей базой на платформе 8.2.18
19. ivanov.dn 10.04.14 11:48 Сейчас в теме
(18) БОЛЬШОЕ спасибо.Буду пробовать!
14. Twirus 15.01.14 16:48 Сейчас в теме
Отличная обработка. Автору большущее спасибо
15. sergbsv 75 11.02.14 02:48 Сейчас в теме
Требует 8.3 а заявленна как для 8.2 ;((
16. Азбука Морзе 106 11.02.14 09:10 Сейчас в теме
(15) sergbsv, прочтите сообщение под номером 12 и ваши слёзы высохнут:)
20. ckamakc 7 11.04.14 13:00 Сейчас в теме
Пробовал на ут 10.3.27.2, ошибка при выполнение
{Обработка._СверткаБазыДанных_.Форма.ФормаУправляемая.Форма(177)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
		МетаданныеДвижения = Обработка.КорректировкаЗаписейСсылка.ПолучитьОбъект().Метаданные().Движения;
по причине:
Элемент не выбран!
21. Азбука Морзе 106 14.04.14 09:16 Сейчас в теме
Проверьте заполнен ли у вас реквизит формы "Документ-регистратор". Если заполнен, тогда поможет очистка кэша.
22. KliMich 30.06.14 21:08 Сейчас в теме
Спасибо! Неплохой ликбез по свертке...
23. ilya.n 18.01.15 12:25 Сейчас в теме
Добрый день! У нас база УТ 10.3 на sql, объем около 10 Гб. В базе незначительные доработки.
Хотим провести свертку базы, типовая с итс "висит" сутки и результатов нет.
Подойдет ли нам Ваша обработка ?
24. Азбука Морзе 106 19.01.15 08:33 Сейчас в теме
(23) ilya.n, Подходит для любой конфигурации. Действуйте согласно инструкции и все получится. Свертку можно осуществлять не останавливая работы пользователей, можно свернуть какие-то определенные типы документов, разные периоды для разных документов. Рекомендую на тестовой базе свернуть за 2-3 месяца в режиме "Отладка", чтобы убедится, что в правильности работы.
25. KliMich 03.02.15 23:06 Сейчас в теме
Спасибо!
Хочу попробовать свернуть БГУ 2.0
Отнозначно плюс!
26. stas1kbob 60 20.02.15 14:05 Сейчас в теме
вы сворачиваете 10.2 ут на какой платформе?
27. Азбука Морзе 106 24.02.15 08:11 Сейчас в теме
28. BigRig 19 28.03.15 00:16 Сейчас в теме
Добрый день!

На платформе 8.1.15.14 не получается это выполнить. Пишет "структура конфигурации несовместима с текущей версией платформы". Делал всё по подробной инструкции в 18 сообщении.
29. Гость 23.07.15 08:12
Азбука Морзе, скажите пож-та, у меня есть конфигурация "Зарплата и Управление Персоналом для Казахстана, редакция 2.0, ", сама конфигурация в 8.1, но оболочка в 8.2 подойдет ли ваша обработка?
30. Arbitrium 12.09.16 03:34 Сейчас в теме
Выдает ошибку
{Обработка._СверткаБазыДанных_.Форма.ФормаУправляемая.Форма(196)}: Ошибка при вызове метода контекста (УстановитьПометкуУдаления)
ДокументОбъект.УстановитьПометкуУдаления(Истина);
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.НастройкаПравДоступа.Модуль(138)}: Ошибка при получении значения атрибута контекста (ГраницыЗапретаИзмененияДанных)
СоответствиеГраницЗапрета = ПараметрыСеанса.ГраницыЗапретаИзмененияДанных.Получить();
по причине:
Попытка получения неинициализированного значения параметра сеанса
32. tvg258 37 10.05.17 07:43 Сейчас в теме
(30)Здравствуйте Виктория! Вы решили проблему с сообщением? У меня таже проблема
31. tvg258 37 30.03.17 12:15 Сейчас в теме
Здравствуйте! Интересует применение обработки для ЗУП 8.2. Для каких целей использовалась свертка? Для переноса базы на определенную дату или очистки от "мусора"? Какие были проблемы? Прошу поделиться тех, кто сворачивал на дату.
33. tvg258 37 10.05.17 08:01 Сейчас в теме
Здравствуйте! Подскажите пожалуйста по ошибке неинициализированного доступа - у вас такое не встречалось?
34. Arbitrium 10.05.17 18:30 Сейчас в теме
Здравствуйте Татьяна. Проблему решила, но, если честно, уже не помню как именно. Единственное, могу сказать, если это поможет, что ларчик просто открывался и решение было на поверхности. Проблем в процессе свертки возникало много. Поэтому, если есть такая возможность, рекомендую убедить клиентов перейти на 3. И от мусора избавитесь и на нужную дату перенесете.Там все получается красиво и значительно проще.
35. DrBlack 24 06.12.19 09:54 Сейчас в теме
Переписал две процедуры, дело пошло веселее:
&НаКлиенте
Функция ОбработатьДокумент(Документ)
	
	ПолучитьДвиженияПоДокументу(Документ.Значение);
	МаксКолВо = ТаблицаДвижениий.Количество();
	Элементы.Индикатор.МаксимальноеЗначение = МаксКолВо;
	Инд = 0;
	
	МассивСсылок = Новый Массив;
	
	Для Каждого Выборка Из ТаблицаДвижениий Цикл
		
		Инд = Инд + 1;
		МассивСсылок.Добавить(Выборка.Ссылка);
		
		Если МассивСсылок.Количество() < 50 И НЕ Инд = МаксКолВо Тогда
			Продолжить;
		КонецЕсли;
		
		Индикатор = Инд;
		СтрИндиктор = Формат(Инд, "ЧГ=0") + " / " + Формат(МаксКолВо, "ЧГ=0");
		СтрокаСсылка = Строка(Выборка.Ссылка);
		Состояние(СтрокаСсылка);
		ПротоколСвёртки.Добавить(СтрокаСсылка);
		
		ДвиженияСохранены = СохранитьДвиженияПоДокументу_Новый(Документ.Значение, МассивСсылок);
		Если НЕ ДвиженияСохранены Тогда 
			Возврат Ложь;
		КонецЕсли;
		
		МассивСсылок.Очистить();
		
		ОбработкаПрерыванияПользователя();
		
	КонецЦикла;
	
	Возврат Истина;
	
КонецФункции
Показать

и эту:
&НаСервере
Функция СохранитьДвиженияПоДокументу_Новый(ДокументИмя, МассивСсылок)
	
	Обработка = РеквизитФормыВЗначение("Объект");
	Документ = Метаданные.Документы.Найти(ДокументИмя);
	
	ДвиженияСохранены = Истина;
	
	Для Каждого Ссылка Из МассивСсылок Цикл
	
		НачатьТранзакцию();
		
		Если Ссылка.Проведен ИЛИ Документ.Проведение = Метаданные.СвойстваОбъектов.Проведение.Запретить Тогда	
			ДвиженияСохранены = Обработка.СохранитьДвиженияПоДокументу(Документ, Ссылка);
		КонецЕсли;
		Если ДвиженияСохранены Тогда 
			ДокументОбъект = Ссылка.ПолучитьОбъект();
			Если УдалятьДокументы Тогда 
				ДокументОбъект.Удалить();
			Иначе 
				ДокументОбъект.УстановитьПометкуУдаления(Истина);
			КонецЕсли;
			ЗафиксироватьТранзакцию();
		ИначеЕсли ТранзакцияАктивна() Тогда 
			ОтменитьТранзакцию();
			Прервать;
		КонецЕсли;
		
	КонецЦикла;
		
	ЗначениеВРеквизитФормы(Обработка, "Объект");
	Возврат ДвиженияСохранены;
	
КонецФункции
Показать

В результате обрабатывается сразу по 50 документов, а после этого только происходит возвращение с сервера на клиент, что очень затратно по времени, получилось сократить эти вызововы на 49 раз за обработку документов.
overloader; Nik_Name; georgebgk; +3 Ответить
36. Азбука Морзе 106 06.12.19 11:17 Сейчас в теме
Еще лучше порцию указать в виде параметра на форме. Если 0 - то без индикации и возврата на клиент.
37. DrBlack 24 06.12.19 11:51 Сейчас в теме
Я надеюсь вы так и сделаете в своей новой версии, т.к. для очень больших баз это критично, а самостоятельно не каждый сможет оптимизировать, а выкладывать свою версию (вашу, но немного мной поправленную) я не имею права. И спасибо за этот инструмент! Отпишусь о результатах "пухлости" до и после )))
Оставьте свое сообщение