Свёртка базы

26.12.13

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

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

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

Наименование Файл Версия Размер
Свертка
.cf 32,92Kb
238
.cf 32,92Kb 238 Скачать

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


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


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


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

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

Свёртка

См. также

Оптимизированная свертка Бухгалтерии 3.0

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

Расширение позволяет за 1-2 дня свернуть базу с десятками миллионов документов. Использует оптимизированный алгоритм определения документов, на которые нет ссылок, для последующего удаления 16 фоновыми заданиями. Не помечает документы на удаление.

38400 руб.

08.02.2024    480    7    0    

2

Многофункциональная выгрузка из 1С:УТ 11/ УТ 10 в 1С:БП2, БП3 (соответствия товаров, контрагентов, складов, статей ДДС)+Свёртка по НДС

Обмен между базами 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    168438    350    395    

327

Обрезание базы 1С

Свертка базы 8.3.8 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Механизм обрезания базы 1С. Описан процесс переноса среза остатков в копию базы. Представлено прикладное решение - обработка по переносу данных. Реализован способ обмена между базами без длительного отключения рабочей базы.

7200 руб.

27.03.2023    4168    11    2    

13

Сравнение остатков по регистрам накопления

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

Внешняя обработка (для конфигураций на обычных формах) сравнивает остатки на дату и в разрезе организации по всем регистрам накопления. Сравнение происходит между базами по технологии Com-соединение. Используется при свертке базы.

3 стартмани

27.03.2024    313    0    RustIG    0    

3

Свертка остатков по 41 счету в корреспонденции с 91 счетом

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

Обработка обращается к остаткам по счету 41.1 на дату, что выбрал пользователь, пробегается по ним и заполняет документ "Операция, введенная вручную".

1 стартмани

18.03.2024    209    5    config    3    

2

Свертка ЗУП 3.1 и ЗКГУ 3.1

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

Вопрос, который мучает всех: в связи с развитием возможностей программ 1С размеры/объем очень быстро растут (уже объем пустой базы более 1 Гб) и не секрет, что чем "тяжелее" база, тем она медленнее работает. Для БП-3.0 разработчики 1С сделали вшитый типовой механизм свертки базы, суть которого вывести остатки по счетам на дату свертки и удалить все документы/движения до этой даты. А вот для ЗУП пока ничего подобного нет, а база растет быстрее, чем на дрожжах. Я долго анализировал и искал возможные решения для свертки ЗУП, поиск в интернете дал кучу различных вариантов. А когда начинаешь их рассматривать, в основном – только "перенос" среднего заработка, а остальное – "доделай сам". Только фирмы-франчайзи предлагают что-то более серьезное, но за хорошую плату.

5 стартмани

28.02.2024    1016    34    ivnik    16    

16

Свертка выбранных остатков

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

Обработка позволяет свернуть выбранные остатки по счету на выбранный счет.

1 стартмани

13.02.2024    222    3    medm    0    

3

Свертка ЗУП 3

Свертка базы Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

Свертка ЗУП 3.1 по трем регистрам с возможностью чистки базы от документов движения и чистки сотрудников от уволенных.

5 стартмани

16.01.2024    1163    32    AlexHelmer    1    

6
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ardn 622 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. Азбука Морзе 104 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 207 26.12.13 15:07 Сейчас в теме
Объем данных уменьшится только на количество документов, в регистрах как все было, так и останется (а зачем нам старые обороты, когда важны только итоги на дату свертки?). Половинная свертка получается.
Мах; Taktic; mikhailovaew; +3 Ответить
6. iov 406 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. Азбука Морзе 104 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. Азбука Морзе 104 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. Азбука Морзе 104 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 74 11.02.14 02:48 Сейчас в теме
Требует 8.3 а заявленна как для 8.2 ;((
16. Азбука Морзе 104 11.02.14 09:10 Сейчас в теме
(15) sergbsv, прочтите сообщение под номером 12 и ваши слёзы высохнут:)
20. ckamakc 6 11.04.14 13:00 Сейчас в теме
Пробовал на ут 10.3.27.2, ошибка при выполнение
{Обработка._СверткаБазыДанных_.Форма.ФормаУправляемая.Форма(177)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
		МетаданныеДвижения = Обработка.КорректировкаЗаписейСсылка.ПолучитьОбъект().Метаданные().Движения;
по причине:
Элемент не выбран!
21. Азбука Морзе 104 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. Азбука Морзе 104 19.01.15 08:33 Сейчас в теме
(23) ilya.n, Подходит для любой конфигурации. Действуйте согласно инструкции и все получится. Свертку можно осуществлять не останавливая работы пользователей, можно свернуть какие-то определенные типы документов, разные периоды для разных документов. Рекомендую на тестовой базе свернуть за 2-3 месяца в режиме "Отладка", чтобы убедится, что в правильности работы.
25. KliMich 03.02.15 23:06 Сейчас в теме
Спасибо!
Хочу попробовать свернуть БГУ 2.0
Отнозначно плюс!
26. stas1kbob 59 20.02.15 14:05 Сейчас в теме
вы сворачиваете 10.2 ут на какой платформе?
27. Азбука Морзе 104 24.02.15 08:11 Сейчас в теме
28. BigRig 22 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 23 06.12.19 09:54 Сейчас в теме
Переписал две процедуры, дело пошло веселее:
&НаКлиенте
Функция ОбработатьДокумент(Документ)
	
	ПолучитьДвиженияПоДокументу(Документ.Значение);
	МаксКолВо = ТаблицаДвижениий.Количество();
	Элементы.Индикатор.МаксимальноеЗначение = МаксКолВо;
	Инд = 0;
	
	МассивСсылок = Новый Массив;
	
	Для Каждого Выборка Из ТаблицаДвижениий Цикл
		
		Инд = Инд + 1;
		МассивСсылок.Добавить(Выборка.Ссылка);
		
		Если МассивСсылок.Количество() < 50 И НЕ Инд = МаксКолВо Тогда
			Продолжить;
		КонецЕсли;
		
		Индикатор = Инд;
		СтрИндиктор = Формат(Инд, "ЧГ=0") + " / " + Формат(МаксКолВо, "ЧГ=0");
		СтрокаСсылка = Строка(Выборка.Ссылка);
		Состояние(СтрокаСсылка);
		ПротоколСвёртки.Добавить(СтрокаСсылка);
		
		ДвиженияСохранены = СохранитьДвиженияПоДокументу_Новый(Документ.Значение, МассивСсылок);
		Если НЕ ДвиженияСохранены Тогда 
			Возврат Ложь;
		КонецЕсли;
		
		МассивСсылок.Очистить();
		
		ОбработкаПрерыванияПользователя();
		
	КонецЦикла;
	
	Возврат Истина;
	
КонецФункции
Показать

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

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