Администрирование · 12 мин
Как пересчитать итоги регистра накопления в 1С
Как пересчитать итоги регистра накопления в 1С: режимы итогов, перепроведение документов, тестирование и исправление, программные методы и типичные ошибки.
Итоги регистра накопления в 1С — это предварительно рассчитанные остатки и обороты, которые платформа хранит в отдельных таблицах, чтобы отчёты и запросы по остаткам работали быстро. Когда итоги расходятся с реальными движениями документов, пользователи видят неверные остатки товаров, денег или взаиморасчётов, хотя сами проводки корректны. Причины разных: отключённое использование итогов, аварийное завершение работы, обмены данными, ошибки при переносе или сбои при массовом перепроведении.
Пересчёт итогов — штатная операция, которую можно выполнить несколькими способами: через управление итогами в режиме предприятия, через тестирование и исправление в конфигураторе, через перепроведение документов или программно методом ПересчитатьИтоги(). Выбор зависит от масштаба проблемы, версии платформы и того, есть ли возможность монопольного доступа к базе.
Ниже разобраны все рабочие способы с условиями применения, ограничениями и проверкой результата. Перед любыми действиями сделайте резервную копию базы — пересчёт итогов изменяет служебные таблицы, и при сбое посреди операции восстановление возможно только из копии.
Когда итоги действительно нужно пересчитывать
Не каждое расхождение остатков означает «слетевшие» итоги. Прежде чем запускать пересчёт, убедитесь, что проблема именно в таблицах итогов, а не в данных. Классический признак: отчёт по регистру показывает один остаток, а перепроведение последнего документа периода или запрос по таблице движений даёт другое значение. Ещё один симптом — остаток на начало периода не сходится с остатком на конец предыдущего.
Типичные ситуации, после которых итоги требуют пересчёта: аварийное завершение сервера 1С или СУБД во время проведения документов, восстановление базы из копии «как файла» без корректной выгрузки, сбойные обмены РИБ, прямое изменение записей в таблицах SQL в обход платформы, ошибки при свёртке базы. Если ничего из этого не происходило, сначала проверьте сами данные — возможно, дело в непроведённых или помеченных на удаление документах.
Сравните остаток из отчёта с суммой по таблице движений регистра
Проверьте режим итогов в управлении итогами
Проверьте остатки на дату свёртки
Запустите тестирование и исправление
Способ 1. Управление итогами в режиме предприятия
Самый безопасный и доступный бухгалтеру или администратору способ — штатная обработка «Управление итогами». Откройте меню «Все функции» (если пункт скрыт, включите его через «Сервис → Параметры → Отображать команду Все функции»), затем перейдите в «Стандартные → Управление итогами». В открывшейся форме выберите нужный регистр накопления и нажмите «Пересчитать итоги».
В этой же форме видны ключевые настройки: рассчитан ли итог по текущий период, включено ли текущее использование итогов, установлен ли режим разделения итогов. Если использование итогов отключено, отчёты по остаткам будут строиться «в лоб» по таблице движений — медленно, но без учёта таблиц итогов. Включение использования итогов после отключения также требует пересчёта.
Пересчёт в этом режиме выполняется по одному регистру, что удобно при точечной проблеме. На больших базах операция может занять от нескольких минут до часов — длительность зависит от объёма движений и числа периодов, за которые хранятся итоги. На время пересчёта желательно, чтобы пользователи не проводили документы по этому регистру.
- 1Сделайте резервную копию базы
- 2Откройте Все функции → Стандартные → Управление итогами
- 3Выберите регистр накопления в списке
- 4Нажмите «Пересчитать итоги» и дождитесь завершения
- 5Сформируйте отчёт по регистру и сверьте остатки с движениями
Способ 2. Тестирование и исправление в конфигураторе
Когда итоги повреждены после сбоя или структура таблиц нарушена, используйте «Администрирование → Тестирование и исправление» в конфигураторе. Отметьте проверки «Логическая целостность информационной базы» и «Ссылочная целостность», выберите режим «Тестирование и исправление». Именно логическая проверка пересчитывает итоги регистров и пересоздаёт служебные таблицы.
Этот способ требует монопольного доступа: все пользователи и фоновые сеансы должны быть завершены, иначе конфигуратор не даст запустить проверку. На файловых базах большого размера тестирование может идти очень долго — планируйте его на нерабочее время. Прерывать процесс кнопкой «Отмена» на этапе пересчёта итогов нежелательно: таблицы могут остаться в промежуточном состоянии.
После завершения изучите протокол: платформа перечислит обнаруженные и исправленные ошибки. Если ошибок много и они повторяются после повторного тестирования — проблема глубже, возможно, повреждена сама таблица движений, и потребуется восстановление из копии или выгрузка/загрузка базы через dt.
Способ 3. Перепроведение документов по регистру
Если расхождение локальное — в пределах одного периода или одного товара — часто достаточно перепровести документы, формирующие движения по регистру. При проведении платформа пересчитывает затронутые итоги автоматически. Используйте обработку «Проведение документов» из раздела «Все функции → Стандартные», установите отбор по периоду и типам документов.
Учтите важное ограничение: перепроведение меняет состояние учёта. Если у вас настроена последовательность документов, она будет сдвинута; если проводки по регистру бухгалтерии зависят от движений накопления, они тоже перезапишутся. В закрытых периодах, по которым сдана отчётность, перепроведение может изменить данные деклараций — действуйте только после согласования с ответственными за учёт.
Альтернатива полному перепроведению — восстановление последовательностей штатной обработкой, если конфигурация использует механизм последовательностей. Это мягче: перепроводятся только документы, нарушившие границу последовательности.
Способ 4. Программный пересчёт итогов
Разработчику доступен метод встроенного языка ПересчитатьИтоги() менеджера регистра накопления. Он удобен для регламентных заданий, обработок обслуживания и сценариев, где пересчёт нужно выполнять по расписанию или после обмена данными.
РегистрыНакопления.ТоварыНаСкладах.ПересчитатьИтоги();
// Дополнительно можно пересчитать итоги за конкретный период:
РегистрыНакопления.ТоварыНаСкладах.УстановитьПериодРассчитанныхИтогов(НачалоМесяца(ТекущаяДатаСеанса()));Метод выполняется в привилегированном контексте и не требует монопольного режима, однако блокирует таблицы регистра на время пересчёта — на клиент-серверной базе это может вызвать ожидания у пользователей. Запускайте такой код в регламентном задании в нерабочие часы и оборачивайте в попытку/исключение с записью в журнал регистрации.
Дополнительно полезны методы ПолучитьИспользованиеИтогов(), УстановитьИспользованиеИтогов() и ПолучитьПериодРассчитанныхИтогов() — они позволяют диагностировать состояние регистра перед пересчётом и зафиксировать результат после него.
Режим разделения итогов и его влияние
В современных версиях платформы для регистров накопления применяется режим разделения итогов: платформа хранит итоги в двух наборах таблиц, что позволяет пересчитывать итоги без полной блокировки записи движений. Если регистр переведён в этот режим, пересчёт проходит заметно быстрее и меньше мешает пользователям. Проверить и изменить режим можно в свойствах регистра в конфигураторе или в форме управления итогами.
Если база давно не обновлялась и регистр работает в старом режиме, переключение на разделение итогов — разумный шаг перед большим пересчётом. Само переключение также выполняет пересчёт, поэтому совмещайте эти операции, чтобы не гонять платформу по таблицам дважды.
Проверка результата после пересчёта
После любого способа пересчёта убедитесь, что итоги сошлись. Самый надёжный контроль — сравнить остаток из отчёта (или запроса по таблице итогов) с суммой, рассчитанной напрямую по таблице движений. В консоли запросов это делается выборкой с группировкой по измерениям и суммированием ресурсов по всем записям регистра без виртуальных таблиц остатков.
Дополнительные контрольные точки: остаток на конец месяца равен остатку на начало следующего; в управлении итогами период рассчитанных итогов соответствует ожидаемому; отчёты, которые раньше показывали неверные цифры, теперь сходятся с первичными документами. Если расхождение сохраняется — проблема в данных, а не в итогах, и нужен анализ движений.
Как проверить результат
Значения совпадают до копейки
Расхождение сохраняется — проверяйте сами движения
Конец месяца = начало следующего
Разрыв между периодами — итоги не досчитаны
Соответствует текущему рабочему периоду
Период «в прошлом» — пересчёт не завершился
Стабильные одинаковые цифры
Значения «плавают» между запусками — есть активные записи или сбой
Типичные ошибки и ограничения
Самая частая ошибка — запуск пересчёта без резервной копии. Вторая по распространённости — попытка пересчитать итоги при работающих пользователях на файловой базе: конкурентные записи приводят к новым расхождениям сразу после пересчёта. Третья — перепроведение документов в закрытом периоде без согласования, из-за чего «плывёт» сданная отчётность.
Помните и об ограничениях: пересчёт итогов не восстанавливает удалённые движения, не исправляет битые ссылки и не лечит повреждённую таблицу движений. Если тестирование и исправление сообщает об ошибках в самой таблице записей регистра, пересчёт итогов бесполезен до устранения повреждения.
Частые вопросы
Что важно запомнить
Пересчёт итогов — безопасная штатная операция при соблюдении трёх условий: есть резервная копия, пользователи не пишут в регистр, а после пересчёта выполнена проверка остатков против движений. Для точечной проблемы используйте управление итогами, после сбоя — тестирование и исправление, для регламентного обслуживания — программный метод.
Можно ли пересчитать итоги без монопольного доступа?
Да. Пересчёт через «Управление итогами» и программный метод ПересчитатьИтоги() не требуют монопольного режима. Монопольный доступ нужен только для тестирования и исправления в конфигураторе. Однако даже без монопольного режима желательно, чтобы пользователи не проводили документы по пересчитываемому регистру.
Почему после пересчёта остатки всё равно не сходятся?
Значит, проблема не в итогах, а в самих данных: есть непроведённые или помеченные на удаление документы, движения с битыми ссылками, записи, внесённые напрямую в таблицы СУБД. Проанализируйте движения за проблемный период и исправьте документы, затем повторите пересчёт.
Как часто нужно пересчитывать итоги в профилактических целях?
Регулярная профилактика не требуется: платформа ведёт итоги автоматически при каждом проведении. Пересчёт нужен только после сбоев, восстановлений из копии, проблемных обменов или при подтверждённом расхождении отчётов с движениями.
Что делать, если кнопка «Пересчитать итоги» недоступна?
Проверьте права: нужна роль с правом администрирования или полные права. Также убедитесь, что регистр вообще использует итоги (для регистров оборотов без остатков пересчёт итогов не применяется в том же виде). Если форма открывается, но операция завершается ошибкой — смотрите журнал регистрации и запускайте тестирование и исправление.
Отличается ли пересчёт итогов в файловой и клиент-серверной базе?
Механика одинаковая, отличаются риски и длительность. На клиент-серверной базе пересчёт выполняется средствами СУБД и обычно быстрее, но создаёт блокировки таблиц. На файловой базе длительный пересчёт полностью занимает файл данных, поэтому его лучше выполнять при отсутствии пользователей.
Нужно ли пересчитывать итоги после свёртки базы?
Да, это рекомендуемый шаг. Штатная свёртка формирует документы ввода остатков и корректирует итоги, но после неё стоит выполнить пересчёт и сверить остатки на дату свёртки с исходной базой — это стандартная контрольная точка процедуры.