Какую дату ставить в периоде итогов, чтобы база не тормозила
Содержание
Период рассчитанных итогов (ПРИ) в 1С 8.3 — это дата, до которой платформа хранит помесячные итоги регистров накопления остатков и регистров бухгалтерии. Правильная установка такая: конец прошлого месяца, а в типовых конфигурациях это делает регламентное задание, вручную — через Администрирование → Обслуживание → Корректировка данных → Управление итогами и агрегатами или стандартную обработку «Управление итогами».
Ставить ПРИ далеко в прошлое плохо: отчёты на текущие даты начинают считать остатки по движениям за годы. Ставить в будущее тоже плохо: каждый новый документ обновляет итоги за все месяцы вперёд, и проведение замедляется. Механизм общий для платформы, поэтому всё ниже работает одинаково в БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на 8.3.
Как 1С хранит итоги регистров
У регистра есть две основные таблицы: таблица движений и таблица итогов. Движения — это строки, которые пишет документ при проведении. Итоги — заранее посчитанные остатки по комбинациям измерений, чтобы не складывать движения при каждом запросе.
Итоги хранятся в двух видах:
- 📅 Помесячные итоги — остаток на конец каждого месяца, от начала учёта до периода рассчитанных итогов.
- ⚡ Текущие (актуальные) итоги — остаток «на сейчас», с учётом всех движений, включая будущие даты.
Когда отчёт просит остаток на произвольную дату, платформа берёт ближайшую опорную точку и досчитывает от неё движения. Опорой может быть помесячный итог или текущий итог, из которого вычитаются движения после нужной даты. Чем ближе опора к запрошенной дате, тем меньше движений нужно прочитать.
Что делает дата ПРИ
Период рассчитанных итогов — граница, после которой помесячные итоги не ведутся. Платформа округляет его до конца месяца: если указать 15.09, итоги будут рассчитаны по 30.09.
Поведение при записи движений:
| Дата движения | Что обновляет платформа |
|---|---|
| Позже ПРИ (текущий месяц) | Только текущие итоги |
| Раньше ПРИ (задним числом) | Итоги за месяц движения, за все месяцы до ПРИ и текущие итоги |
Отсюда главный вывод. Документ текущего месяца проводится быстро, если ПРИ стоит на конце прошлого месяца. Документ, проведённый на два года назад, тянет за собой пересчёт 24 помесячных строк по каждой комбинации измерений.
Каких регистров это касается
- 📦 Регистры накопления вида «Остатки» — товары на складах, взаиморасчёты, резервы.
- 📒 Регистры бухгалтерии — хозрасчётный регистр в БП и ERP.
- 📊 Оборотные регистры накопления хранят обороты, а не остатки. Для них важнее агрегаты, ПРИ там роли не играет.
- 📋 Регистры сведений имеют свои итоги — срезы первых и последних. Периода рассчитанных итогов у них нет, только включение и пересчёт итогов.
Где в 1С 8.3 установить период рассчитанных итогов
Есть три способа. Результат у них одинаковый, разница в удобстве и правах.
| Способ | Где | Кому подходит |
|---|---|---|
| Обработка конфигурации | Администрирование → Обслуживание → Корректировка данных → Управление итогами и агрегатами | Бухгалтеру-администратору типовой базы |
| Стандартная обработка платформы | Все функции → Стандартные → Управление итогами | Любая конфигурация, включая самописные |
| Встроенный язык | Методы менеджера регистра | Разработчику, для регламентных заданий |
В старых релизах типовых конфигураций раздел назывался Администрирование → Поддержка и обслуживание, внутри та же группа «Корректировка данных».
Для всех способов нужно право «Управление итогами». В типовых ролях оно есть у «Администратора системы» и «Полных прав».
Через «Все функции»
Если пункта «Все функции» нет в главном меню, включите его: Сервис и настройки → Параметры, флажок «Отображать команду “Все функции”». После этого:
- Откройте
Все функции → Стандартные → Управление итогами. - Переключитесь в режим полных возможностей — по умолчанию форма открывается в упрощённом виде с типовыми действиями.
- Выделите нужные регистры в списке. Можно выделить все.
- Выполните команду установки периода рассчитанных итогов и укажите дату.
- Дождитесь окончания. На крупной базе это минуты, а не секунды.
В списке видно состояние каждого регистра: включены ли итоги, используются ли текущие итоги, до какой даты рассчитаны, включено ли разделение итогов. С этой проверки и стоит начинать.
Через встроенный язык
У менеджера регистра накопления и регистра бухгалтерии есть методы УстановитьМаксимальныйПериодРассчитанныхИтогов() и ПолучитьМаксимальныйПериодРассчитанныхИтогов(). Пример для всех регистров остатков, который ставит ПРИ на конец прошлого месяца:
ДатаИтогов = НачалоМесяца(ТекущаяДатаСеанса()) - 1;
Для Каждого МетаРегистр Из Метаданные.РегистрыНакопления Цикл
Если МетаРегистр.ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда
Менеджер = РегистрыНакопления[МетаРегистр.Имя];
Если Менеджер.ПолучитьМаксимальныйПериодРассчитанныхИтогов() < ДатаИтогов Тогда
Менеджер.УстановитьМаксимальныйПериодРассчитанныхИтогов(ДатаИтогов);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого МетаРегистр Из Метаданные.РегистрыБухгалтерии Цикл
Менеджер = РегистрыБухгалтерии[МетаРегистр.Имя];
Если Менеджер.ПолучитьМаксимальныйПериодРассчитанныхИтогов() < ДатаИтогов Тогда
Менеджер.УстановитьМаксимальныйПериодРассчитанныхИтогов(ДатаИтогов);
КонецЕсли;
КонецЦикла;
Код выполняется на сервере. Условие с ПолучитьМаксимальныйПериодРассчитанныхИтогов() не даёт случайно сдвинуть ПРИ назад, если кто-то уже поставил его позже.
В типовых конфигурациях на БСП есть регламентное задание, которое раз в месяц само переносит ПРИ на конец прошлого месяца. Проверьте его в Администрирование → Обслуживание → Регламентные и фоновые задания: задание должно быть включено и иметь успешные запуски. В файловой базе регламентные задания выполняются, только пока открыт хотя бы один сеанс.
Какую дату выбрать для периода итогов
Базовое правило: конец прошлого месяца. Текущий месяц — самый «горячий», в нём проводят большинство документов, и они не должны трогать помесячные итоги.
Варианты по ситуации:
- ✅ Обычная работа — конец прошлого месяца, переносить каждый месяц.
- 🗓 Закрытие квартала или года, много правок задним числом — конец последнего закрытого периода. Например, в октябре вы ещё правите сентябрь и август — ставьте 31.07. Правки за август и сентябрь тогда обновляют только текущие итоги.
- 🔁 Массовое перепроведение за год — до перепроведения сдвиньте ПРИ на дату перед началом перепроводимого периода, после — верните на конец прошлого месяца.
- 📚 Архивная база, где ничего не проводят — конец последнего месяца с движениями.
Пример с цифрами. Сегодня 17 октября, ПРИ стоит на 31.12 позапрошлого года. Отчёт «Остатки товаров» на 1 октября должен прочитать движения за 21 месяц или откатиться от текущих итогов. Перенесите ПРИ на 30.09 — и тот же отчёт возьмёт готовый итог без чтения движений.
Не ставьте ПРИ в будущее «с запасом». Если указать конец следующего года, каждый документ текущего месяца будет обновлять итоги ещё за 14 месяцев вперёд. Проведение замедлится, а таблица итогов вырастет без пользы.
Минимальный период итогов
В платформе 8.3 есть и обратная граница — УстановитьМинимальныйПериодРассчитанныхИтогов(). Итоги раньше этой даты не хранятся. Это уменьшает таблицу итогов в базах с длинной историей, если старые периоды никто не открывает. Отчёты за даты раньше минимального периода будут медленнее, поэтому трогать эту настройку стоит только при понятной причине.
Пересчёт итогов: когда нужен и как запустить
Установка ПРИ и пересчёт — разные операции. Установка ПРИ сдвигает границу и досчитывает недостающие месяцы. Пересчёт заново собирает итоги из движений, когда есть подозрение, что они испорчены.
Признаки, что итоги расходятся с движениями:
- 📉 остаток в отчёте не совпадает с суммой движений по тому же измерению;
- ❓ отрицательный остаток там, где по документам он положительный;
- 🔄 после перепроведения документа отчёт не меняется.
Доступные виды пересчёта:
| Операция | Что делает | Нагрузка |
|---|---|---|
| Пересчёт текущих итогов | Пересобирает только актуальные итоги | Низкая |
| Пересчёт итогов за период | Пересобирает помесячные итоги за указанные месяцы | Средняя |
| Полный пересчёт итогов | Пересобирает все итоги регистра | Высокая, на больших базах — часы |
| Тестирование и исправление в Конфигураторе | Пересчёт итогов вместе с проверкой структуры | Требует монопольного доступа |
Начинайте с самого лёгкого. Часто хватает пересчёта текущих итогов — расхождение «на сегодня» уходит за секунды.
Порядок полного пересчёта
- Сделайте резервную копию базы
: выгрузку
.dtили бэкап СУБД. - Выберите время, когда в базе нет активной работы: полный пересчёт блокирует таблицы регистра, и проведение документов у пользователей будет ждать.
- В «Управлении итогами» выделите только проблемный регистр, а не все.
- Запустите пересчёт итогов.
- После окончания проверьте отчёт, на котором заметили расхождение.
Пересчёт через Конфигуратор → Администрирование → Тестирование и исправление с флажком «Пересчёт итогов» требует монопольного доступа: всех пользователей нужно вывести из базы, их сеансы будут завершены. Используйте этот путь, если обработка «Управление итогами» не помогла или нужна проверка целостности целиком.
Как ПРИ влияет на скорость и размер базы
Таблица итогов растёт как «число комбинаций измерений × число месяцев». Регистр с 50 000 сочетаний «номенклатура + склад» за 5 лет помесячных итогов — это до 3 млн строк только в итогах. На практике меньше — не каждое сочетание живёт все месяцы, — но порядок такой.
Как настройки отражаются на работе:
| Настройка | Проведение документов | Отчёты по остаткам | Размер базы |
|---|---|---|---|
| ПРИ на конце прошлого месяца | Быстро | Быстро | Оптимально |
| ПРИ давно не переносили | Быстро | Медленно, растёт с каждым месяцем | Меньше |
| ПРИ в будущем | Медленно | Быстро | Больше |
| Итоги выключены | Быстрее всего | Медленно | Итоги не поддерживаются |
| Разделение итогов включено | Быстрее при одновременной записи | Чуть медленнее | Больше |
Разделение итогов
Разделение итогов позволяет нескольким пользователям одновременно проводить документы по одному регистру без ожидания на блокировках итогов. Платформа хранит итог не одной строкой, а несколькими частями, и при чтении складывает их. В типовых конфигурациях для «тяжёлых» регистров оно обычно включено. Выключать его стоит только если в базе один-два пользователя и отчёты по остаткам важнее скорости проведения.
Выключение итогов при загрузке
При начальной загрузке данных или массовом перепроведении итоги иногда выключают: запись движений идёт быстрее, потому что итоги не обновляются. После загрузки итоги включают обратно, и платформа пересчитывает их. Важный момент: пока итоги выключены, отчёты по остаткам работают медленно, а контроль остатков при проведении нагружает базу. Делайте это в нерабочее время и не оставляйте итоги выключенными «до завтра».
Ошибки при работе с итогами и что с ними делать
Отдельно про сдвиг ПРИ назад. Это легальная операция, но платформа удаляет помесячные итоги после новой даты. Если затем вернуть ПРИ вперёд, итоги будут досчитаны заново — на большой базе это заметная нагрузка. Двигайте границу назад только под конкретную задачу.