К статье
Практический материал

Администрирование · 10 мин

Какие варианты пересчета итогов доступны в 1С:Предприятие 8

Какие способы пересчета итогов доступны в 1С:Предприятие 8: типовые операции, конфигуратор, запросы и регламентные задания. Условия выбора, риски и проверка результата.

Под итогами в 1С:Предприятие 8 понимаются предрасчитанные значения по регистрам накопления и регистрам бухгалтерии, которые платформа хранит отдельно от движений документов. Именно за счёт итогов отчёты по остаткам и оборотам формируются быстро, без полного перебора всех проводок. Когда итоги повреждаются, рассчитываются не полностью или устаревают, отчёты начинают показывать неверные остатки, а типовая проверка данных выдаёт расхождения.

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

Важно различать пересчёт итогов и управление итогами. Пересчёт восстанавливает корректность данных, а управление итогами (установка периода рассчитанных итогов, включение текущих итогов) влияет на скорость проведения документов и формирования отчётов. Часто вместо полного пересчёта достаточно правильно настроить хранение итогов.

Когда нужен пересчёт итогов, а когда достаточно настройки

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

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

Отчёт расходится с движениямиВероятно повреждены итоги

Сравните остаток в отчёте с суммой движений по регистру за тот же период

Медленное проведение документовИтоги рассчитаны на слишком ранний период

Проверьте период рассчитанных итогов в управлении итогами

Ошибки после аварийного завершенияВозможны повреждения таблиц итогов

Запустите тестирование и исправление с проверкой логической целостности

Пересчёт итогов штатными средствами режима «Предприятие»

В типовых конфигурациях на базе Библиотеки стандартных подсистем есть раздел «НСИ и администрирование — Обслуживание — Результаты обновления и дополнительная обработка данных» либо обработка «Управление итогами» (в зависимости от конфигурации путь отличается). В ней доступны два действия: установка периода рассчитанных итогов и включение/отключение использования текущих итогов.

Установка периода рассчитанных итогов — самый безопасный вариант. Платформа пересчитывает итоги начиная с указанной даты, не трогая более ранние периоды. Это быстрее полного пересчёта и подходит, когда проблема локализована в последних месяцах работы.

Отключение текущих итогов ускоряет массовую загрузку или перепроведение документов, но на время отключения отчёты по текущим остаткам будут показывать неактуальные данные. После завершения загрузки текущие итоги нужно обязательно включить обратно — иначе пользователи увидят неверные остатки.

Пересчёт итогов через конфигуратор

В конфигураторе пересчёт итогов выполняется через меню «Администрирование — Тестирование и исправление» с включённой проверкой логической целостности, либо через пункт управления итогами по конкретному регистру. Для регистров накопления и бухгалтерии в дереве конфигурации доступны административные команды, позволяющие пересчитать итоги выборочно.

Выборочный пересчёт по одному регистру предпочтительнее полного тестирования: он занимает меньше времени и не затрагивает остальные объекты. Если проблема точно локализована в одном регистре (например, «ТоварыНаСкладах»), пересчитывать итоги по всей базе не имеет смысла.

Программный пересчёт встроенным языком

Для автоматизации и выборочного пересчёта используются методы встроенного языка. У менеджера регистра накопления есть методы ПересчитатьИтоги(), ПересчитатьТекущиеИтоги() и ПересчитатьИтогиЗаПериод(), а также методы управления: УстановитьПериодРассчитанныхИтогов(), УстановитьИспользованиеТекущихИтогов(). Аналогичные методы есть у регистров бухгалтерии.

Типовой фрагмент кода для пересчёта итогов одного регистра выглядит так:

bsl
РегистрыНакопления.ТоварыНаСкладах.УстановитьИспользованиеТекущихИтогов(Ложь);
РегистрыНакопления.ТоварыНаСкладах.ПересчитатьИтоги();
РегистрыНакопления.ТоварыНаСкладах.УстановитьИспользованиеТекущихИтогов(Истина);

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

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

Тестирование и исправление как крайний вариант

Если пересчёт итогов штатными способами не устраняет расхождения, проблема глубже — повреждены сами таблицы базы. В этом случае используется «Тестирование и исправление» в конфигураторе с проверками логической и ссылочной целостности, а для файловых баз — утилита chdbfl.exe из каталога установки платформы.

Утилита chdbfl работает только с файловыми базами и только при закрытой базе. Для клиент-серверных баз аналогичные проверки выполняются средствами СУБД. После исправления физических повреждений пересчёт итогов запускается повторно — только тогда он даст корректный результат.

Сравнение вариантов пересчёта

Управление итогами в режиме «Предприятие»

Подходит для сдвига периода рассчитанных итогов и небольших расхождений; не требует конфигуратора, но возможности ограничены

Пересчёт в конфигураторе

Полный контроль по конкретному регистру; нужен доступ к конфигуратору и монопольный режим

Программный пересчёт

Гибкость и автоматизация через регламентные задания; требует навыков разработки и прав администрирования

Тестирование и исправление / chdbfl

Единственный вариант при физических повреждениях таблиц; самый долгий и рискованный, только после резервной копии

Как проверить результат пересчёта

Проверка начинается с отчёта, в котором ранее наблюдалось расхождение. Сформируйте его заново за тот же период и с теми же отборами — значения должны измениться на корректные. Затем сравните остаток по регистру с суммой движений: они обязаны совпадать.

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

Контрольные точки

Как проверить результат

Остаток в отчёте против суммы движений
Норма

Значения совпадают до копейки

Тревожный признак

Расхождение сохраняется после пересчёта

Период рассчитанных итогов
Норма

Соответствует началу актуального периода работы

Тревожный признак

Стоит далёкая прошлая дата или период пустой

Использование текущих итогов
Норма

Включено после завершения всех операций

Тревожный признак

Осталось отключённым — отчёты показывают устаревшие остатки

Типичные ошибки и ограничения

Самая частая ошибка — забыть включить текущие итоги после массовой загрузки данных. Пользователи видят в отчётах вчерашние остатки и принимают решения на неверных данных. Вторая ошибка — запуск полного пересчёта по всем регистрам в рабочее время: база блокируется, работа останавливается.

Ещё одна ошибка — пытаться пересчитать итоги, когда проблема в движениях. Если документ проведён с ошибкой в модуле или данные изменены напрямую в таблицах, пересчёт итогов лишь «закрепит» неверные значения. Сначала нужно исправить первичные данные.

Типичные ошибки
01
Пересчёт без резервной копии — при сбое восстановить данные будет нечем
02
Запуск в рабочее время без монопольного режима — блокировки и ошибки у пользователей
03
Отключённые текущие итоги после загрузки — отчёты показывают неактуальные остатки
04
Пересчёт итогов вместо исправления ошибочных движений — расхождение возвращается
05
Полное тестирование вместо точечного пересчёта одного регистра — потеря времени
Итог

Что важно запомнить

Для небольших расхождений используйте управление итогами в режиме «Предприятие», для точечного восстановления — пересчёт по конкретному регистру в конфигураторе или кодом, для повреждённых таблиц — тестирование и исправление. Любой пересчёт выполняйте после резервной копии и проверяйте результат сравнением отчёта с движениями.

Частые вопросы о пересчёте итогов

Можно ли пересчитать итоги без монопольного режима?

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

Почему после пересчёта итогов отчёт всё равно показывает неверные данные?

Значит, проблема не в итогах, а в самих движениях: ошибочное проведение документов, прямое изменение таблиц или отключённые текущие итоги. Проверьте состояние использования текущих итогов и сверьте движения конкретного документа с его данными.

Чем пересчёт итогов отличается от перепроведения документов?

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

Как часто нужно пересчитывать итоги в профилактических целях?

Регулярный пересчёт «на всякий случай» не требуется: платформа поддерживает итоги автоматически. Пересчёт оправдан после сбоев, массовых загрузок и при выявленных расхождениях. Для производительности важнее правильно установить период рассчитанных итогов.

Работает ли chdbfl для клиент-серверных баз?

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