Обработка выполняет свертку (сжатие) базы 1С:ERP. Самый длительный этап свертки - удаление старых записей регистров и пометка на удаление старых документов выполняется в многопоточном режиме. Выбирайте число потоков самостоятельно. В планах добавить отбор по организации при свертке (пишите, если вам это необходимо).
Алгоритм создания вводов остатков взят из стандартной обработки свертки 1С:ERP.
Свертка базы выполняется в три этапа:
Некоторые данные не могут быть свернуты:
Эти сведения при свертке будут удалены. Не рекомендуется выполнять свертку информационной базы, если используется перечисленный функционал.
Необходимо иметь в виду, что при свертке информационной базы удаляется вся история взаимоотношений с партнерами. В этой связи после свертки информационной базы могут иначе работать механизмы расчета скидок, а также нельзя будет выполнить мониторинг целевых показателей за свернутый период.
С развитием компании и ростом документооборота информационная база 1С:ERP со временем значительно разрастается. Накопление старых и ненужных документов приводит к большим объемам данных (иногда сотни гигабайт) и снижает быстродействие системы. Для оптимизации работы и сокращения базы 1С применяется процедура свертки базы. Свертка — это «обрезка» истории: все документы и записи регистров до указанной даты свертки заменяются их итоговыми остатками. В результате вместо множества бухгалтерских и управленческих движений остаётся один набор «вводов остатков», а база данных освобождается от тысяч старых записей. Этот процесс требует подготовки и аккуратного выполнения: всегда делайте резервную копию ИБ и работайте с ней.
Стандартный механизм свертки 1С:ERP, встроенный в платформу, состоит из трёх этапов: (1) ввод начальных остатков по всем регистрам на дату свертки; (2) удаление данных прошлых периодов: стираются движения регистров и старые документы отмечаются на удаление; (3) сверка остатков с исходной базой. При этом формируются специальные документы «Ввод начальных остатков» по остаткам ТМЦ, взаиморасчетам, деньгам и другим учетным регистрам. Затем стандартная свертка помечает ненужные документы на удаление, но не всегда физически удаляет их из БД. После пометки разработчику приходится запускать дополнительные процедуры очистки: стандартный механизм удаления помеченных объектов часто «зависает» при десятках тысяч записей. В результате весь процесс свертки на больших базах может занимать дни и даже не привести к реальному уменьшению БД.
Для ускорения длительных операций в 1С:ERP используется механизм фоновых заданий и многопоточности (через расширение «Длительные операции» или функции платформы). Такой подход особенно эффективен, когда данные можно разбить на независимые блоки. Параллельное выполнение разнородных участков кода позволяет значительно повысить производительность на больших объёмах данных. В частности, можно обрабатывать сразу несколько блоков регистров или документов в отдельных потоках, если они «не пересекаются» по измерениям. Например, при большом количестве движений по регистрам можно разделить дату или диапазон документов на несколько частей и запустить удаление каждой части в параллельном задании. Как отмечено экспертами, возможность «разделить фоновый процесс на потоки и выполнять операцию в потоках» позволяет ускорить операции с большим объёмом данных.
Первый этап свертки – формирование документов ввода остатков – выполняется по стандартному алгоритму 1С:ERP. Наша обработка использует именно этот проверенный механизм. Система автоматически рассчитывает остатки по каждому регистру (балансовые и управленческие) на конец указанной даты и заполняет документы «Корректировка записей регистров накопления» или специальные «Ввод начальных остатков». Например, после выбора даты свертки 31.12.2024 обычно создаются документы на дату 01.01.2025 по всем видам остатков: складские запасы, остатки по кассе и счетам, взаиморасчёты с контрагентами и т.д. Ключевой момент – дату документов ввода остатков ставят следующим днём после свёрнутой даты; иначе эти документы попали бы под свертку. Это гарантирует, что остатки сформируются корректно и в соответствии с алгоритмами платформы.
Ключевой новинкой нашей обработки является именно второй этап – удаление старых записей – в многопоточном режиме. После создания документов ввода остатков система должна удалить движения регистров и отметить на удаление документы за всё время до даты свертки. В стандартной обработке это делается последовательно и может занимать очень много времени. Мы разделяем эту задачу на N потоков, которые одновременно чистят разные части данных. Алгоритм следующий:
При запуске многопоточной свертки пользователь задаёт число потоков – обычно равное или немного больше числу ядер сервера. (Заметьте: слишком много потоков не даёт пропорционального ускорения и может привести к переключению контекста CPU; оптимальное количество обычно 4–8, но его стоит подобрать экспериментально.) Кроме того, в планах реализовать в обработке опциональный отбор по организации: т.е. при необходимости можно очищать данные только по одной фирме. Пока фильтр не реализован, но при заказе расширенной версии мы учтём пожелания по отбору. Возможность указать организации будет полезна, если в холдинге в одной базе ведётся учет нескольких компаний, и нужно сжимать данные выборочно.
Ниже приведён пример шагов для сверки базы с нашим решением (ссылка на физический запуск зависит от интерфейса вашей системы):
Обратите внимание на важные нюансы: свертку ИБ следует выполнять под учётной записью администратора и только на стабильной копии. Запуск процедуры на живой базе может привести к сбоям. Обычно свертку делают на выходных: параллельно пока одни специалисты очищают базу, другие продолжают вести учёт в «новом» (свежем) экземпляре. Будьте готовы к тому, что сами документы вводов остатков после свертки нужно проверить вручную – их возможно придётся скорректировать, если в учетной базе были ошибки. Полная автоматическая корректировка не всегда возможна.
Применение многопоточной свертки 1С:ERP позволяет существенно сократить время очистки регистров на больших объёмах данных и поддерживать базу в оптимальном состоянии. Такой подход особенно эффективен на многопроцессорных серверах: вместо последовательного удаления сотен тысяч записей, система выполняет параллельные операции, что даёт мультикратный выигрыш в скорости. Мы рекомендуем использовать этот метод для крупных баз или когда стандартная свертка занимает слишком много времени. Благодаря знакомым алгоритмам ввода остатков наша обработка гарантируюет корректность итоговых данных. Если вы хотите узнать больше или заказать внедрение многопоточной свертки — свяжитесь с командой MoscowSoft, подпишитесь на нашу рассылку и ознакомьтесь с другими статьями на сайте. Задавайте вопросы – мы рады помочь сделать вашу 1С:ERP быстрее и стабильнее!
Рекомендуется в настройках видео внизу справа сразу включить максимальное качество - 1080р, иначе подробности будет видно нечетко.
Шаг 1. Зайдите в 1С под пользователем с полными правами. Нажмите на главном меню — Файл — выберите путь к файлу внешней обработки для свертки базы 1С:ERP.
Шаг 2. На первом шаге выберите дату свертки. В качестве даты свертки указывается последняя дата, входящая в сворачиваемый период. Например, при свертке данных на начало 2013 года необходимо указать дату 31.12.2012.
Шаг 3. Выбирайте контролируемый режим выполнения свертки. В этом режиме каждый этап свертки выполняется обособленно, что позволяет контролировать процесс.
Шаг 4. На первом этапе процесса свертки создаются документы ввода остатков. Этот алгоритм разработан фирмой 1С и выполняется в один поток, также как это сделано в стандартной обработке свертки 1С:ERP. Дождитесь завершения этапа (появится зеленая галочка).
Шаг 5. После завершения первого этапа выберите количество потоков и нажмите кнопку «Далее» для начала процесса удаления старых записей регистров и пометки на удаление старых документов.
Шаг 6. По нажатию кнопки «Протокол выполнения» можно открыть протокол, где будет видно, какую работу выполняет каждый из потоков. В протоколе отображаются дата, номер потока и комментарий по удаляемым данным.
Шаг 7. После завершения этапа 2 (удаления) нажмите кнопку «Далее». Будет запущен этап проведения документов ввода остатков. Дождитесь завершения процесса.
Шаг 8. По итогу будет выведена информация о завершении работы каждого потока (например: «Завершил работу поток 1 из 8», «Завершил работу поток 2 из 8» и т.д.). В конце появится сообщение: «Свертка завершена. Изучите протокол выполнения.»
⚠️ Важно: Перед началом свертки обязательно создайте резервную копию информационной базы, так как операция свертки необратима.