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