Остатки в отчётах не сходятся с движениями: пересчёт итогов регистров в 1С 8.3
Содержание
Чтобы пересчитать итоги в 1С 8.3, откройте Администрирование → Обслуживание → Корректировка данных → Управление итогами и агрегатами, перейдите в полный режим и нажмите Пересчитать итоги для нужных регистров. Второй путь — Конфигуратор: Администрирование → Тестирование и исправление с галкой Пересчёт итогов. Он требует монопольного доступа к базе.
Типичная ситуация: кладовщик видит на складе 40 штук, а отчёт по остаткам показывает 37. Документы все на месте, движения правильные, но цифра в отчёте другая. Это повод пересчитать итоги. Если же неверны сами движения документов, пересчёт не поможет — нужно перепроводить документы. Ниже оба случая и способ отличить один от другого.
Почему остатки и обороты расходятся с документами
В 1С каждый регистр накопления и бухгалтерии хранит две вещи: таблицу движений (записи документов) и таблицу итогов (уже посчитанные остатки по месяцам). Отчёты берут остатки из итогов, чтобы не складывать миллионы строк при каждом открытии. Если итоги разошлись с движениями, отчёт покажет неверную цифру, хотя все документы в порядке.
Откуда берутся расхождения:
- ⚡ аварийное завершение — пропало питание, оборвалась сеть, «упал» рабочий процесс сервера в момент записи документа;
- 💾 сбой диска или СУБД — повреждены страницы таблиц, особенно в файловой базе на сетевой папке;
- 🔄 загрузка данных при выключенных итогах — обмен или обработка отключила использование итогов и не включила их обратно;
- 🛠 прямые правки в таблицах — запись движений обработкой в обход проведения или правка через SQL;
- 📦 неудачное обновление конфигурации — изменилась структура регистра, итоги не перестроились.
Отдельная история — когда неверны сами движения. Например, документ провели до того, как исправили цену в предыдущем документе, или в учётной политике поменяли настройку задним числом. Здесь проблема не в итогах, а в последовательности проведения. Помогает только перепроведение.
| Симптом | Скорее всего | Что делать |
|---|---|---|
| Отчёт по остаткам не совпадает с суммой движений регистра | Итоги | Пересчитать итоги |
| Остаток верный, но расход списан по старой себестоимости | Последовательность проведения | Перепровести документы |
| В разных отчётах одна и та же позиция с разными цифрами | Итоги или агрегаты | Пересчитать итоги и перестроить агрегаты |
| Ошибки только у одного документа | Сам документ | Открыть движения документа и провести заново |
Перепроведение документов: когда виноваты движения
Если запрос из раздела про диагностику (ниже) показал, что итоги совпадают с движениями, а цифры всё равно неверные, перепроводите документы. Пересчёт итогов здесь бесполезен: он честно сложит неверные движения.
В 1С:Бухгалтерии 3.0 перепровести документы можно двумя способами:
- Через закрытие месяца
. Откройте
Операции → Закрытие месяца, выберите месяц. В обработке есть команда перепроведения документов за месяц — она проводит всё в хронологическом порядке, а затем выполняет регламентные операции. - Групповым перепроведением.
Администрирование → Обслуживание → Корректировка данных → Групповое перепроведение документов. Укажите период, при необходимости ограничьте виды документов и запустите.
В 1С:Управлении торговлей 11 и ERP часть расчётов (себестоимость, взаиморасчёты) идёт не при проведении документа, а отдельными регламентными расчётами. Поэтому после перепроведения выполните расчёт себестоимости и закрытие месяца заново.
Перепроведение за закрытый период меняет данные отчётности, которая уже сдана. Перед запуском снимите дату запрета изменения только на нужный период и верните её после проверки.
Перед массовым перепроведением сделайте резервную копию базы . Если что-то пойдёт не так, откат займёт минуты, а ручное восстановление — дни.
💡 Перепроводите от самого раннего месяца с ошибкой к последнему. Если начать с текущего, себестоимость и остатки предыдущих периодов будут браться ещё неисправленные.
Пересчёт итогов регистров накопления и бухгалтерии
Пересчёт итогов — это когда платформа выбрасывает таблицу итогов и строит её заново по движениям. Документы и проводки при этом не меняются. Операция безопасна для данных, но на большой базе может идти от нескольких минут до часов.
Регистры накопления делятся на два вида:
- остатков — хранят итоги по месяцам и текущие итоги (остатки на последний момент);
- оборотов — хранят только обороты, а для ускорения отчётов используют агрегаты.
Регистры бухгалтерии (план счетов в БП, ЗУП, ERP) тоже хранят итоги, и для них работают те же команды.
Что важно знать до запуска:
- Период рассчитанных итогов. Платформа хранит готовые итоги до определённой даты. Остатки на даты позже неё считаются «на лету» по движениям. Если период рассчитанных итогов давно не сдвигали, отчёты тормозят. В типовых конфигурациях его сдвигает регламентное задание раз в месяц, в файловой базе — при запуске программы.
- Использование итогов. Итоги можно выключить. Это ускоряет массовую загрузку данных, но пока итоги выключены, остатки по регистру читать нельзя. После включения платформа пересчитывает их сама.
- Текущие итоги. Отдельная таблица для регистров остатков — остатки «на сейчас». Их можно пересчитать отдельно, это быстрее полного пересчёта.
- Разделение итогов. Режим для клиент-серверной базы: снижает конфликты блокировок, когда много пользователей одновременно проводят документы по одному регистру.
Пересчёт не требует выгонять пользователей из базы, но блокирует таблицы итогов. Проведение документов у коллег в это время будет ждать или завершаться ошибкой блокировки. Запускайте его вечером или в выходной.
Обработка «Управление итогами»: пошагово
Обработка встроена в платформу 1С 8.3, поэтому есть в любой конфигурации. В типовых на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, ERP) её вынесли в меню.
| Как открыть | Путь |
|---|---|
| БП 3.0, ЗУП 3.1, УТ 11, ERP | Администрирование → Обслуживание → Корректировка данных → Управление итогами и агрегатами |
| Любая конфигурация | Меню Все функции → Стандартные → Управление итогами |
В старых релизах раздел назывался Поддержка и обслуживание — ищите группу «Корректировка данных» там. Если в главном меню нет пункта «Все функции», включите его: Сервис и настройки → Параметры → Отображать команду «Все функции».
Пошагово:
- Сделайте резервную копию базы (для файловой — копию папки с файлом
1Cv8.1CD, для серверной — бэкап СУБД или выгрузку.dt). - Откройте обработку. Сначала появится упрощённая форма с частыми действиями. Нажмите Все функции (или ссылку перехода в полный режим), чтобы увидеть список регистров.
- Отметьте галками регистры, где расходятся остатки. Если не знаете, какие именно, выделите все.
- Нажмите Пересчитать итоги. Для регистров остатков достаточно сначала попробовать Пересчитать текущие итоги — это быстрее.
- Если нужно ограничить пересчёт периодом, используйте команду Пересчитать итоги за период и укажите начало и конец. Это экономит время на базе за много лет.
- Для регистров оборотов, если в отчётах неверные обороты, на вкладке агрегатов выполните Перестроить и Заполнить агрегаты.
- Дождитесь окончания и сформируйте отчёт, где было расхождение.
Если остатки в отчётах стали правильными, но через неделю снова «поплыли», ищите источник: регулярный обмен, внешнюю обработку или нестабильный диск. Пересчёт лечит симптом, а не причину.
Пересчёт через Конфигуратор
Когда база падает при открытии отчётов или обработка «Управление итогами» не запускается, используйте Конфигуратор:
- Попросите всех выйти из базы. Этой процедуре нужен монопольный доступ: сеансы пользователей будут прерваны, несохранённые данные пропадут.
- Запустите 1С в режиме Конфигуратор.
- Меню
Администрирование → Тестирование и исправление. - Отметьте Пересчёт итогов. Для «лёгкого» прохода больше ничего не нужно. При подозрении на физическое повреждение добавьте Реиндексацию таблиц и Проверку логической целостности.
- Нажмите Выполнить и дождитесь сообщения о завершении.
Тот же пересчёт можно запустить из командной строки, например ночным заданием:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /IBCheckAndRepair -RecalcTotals /Out"D:\Logs\recalc.log"
Номер платформы в пути замените на свой. Для серверной базы вместо /F укажите /S"сервер\имябазы".
Как проверить остатки запросом в консоли
Прежде чем что-то пересчитывать на большой базе, убедитесь, что проблема именно в итогах. Для этого сравните остатки из виртуальной таблицы с суммой движений по регистру.
Консоль запросов — внешняя обработка, она входит в состав дистрибутивов для разработчиков и есть в открытом доступе. Откройте её через Файл → Открыть в режиме Предприятие. Нужны права на открытие внешних обработок.
Пример для регистра остатков. Замените ИмяРегистра, Номенклатура и Количество на имена из вашей конфигурации (их видно в Конфигураторе в дереве метаданных):
ВЫБРАТЬ
Движения.Номенклатура КАК Номенклатура,
СУММА(ВЫБОР
КОГДА Движения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
ТОГДА Движения.Количество
ИНАЧЕ -Движения.Количество
КОНЕЦ) КАК ПоДвижениям
ПОМЕСТИТЬ ВТ_Движения
ИЗ
РегистрНакопления.ИмяРегистра КАК Движения
ГДЕ
Движения.Активность
СГРУППИРОВАТЬ ПО
Движения.Номенклатура
;
ВЫБРАТЬ
ЕСТЬNULL(Остатки.Номенклатура, ВТ_Движения.Номенклатура) КАК Номенклатура,
ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК ПоИтогам,
ЕСТЬNULL(ВТ_Движения.ПоДвижениям, 0) КАК ПоДвижениям
ИЗ
РегистрНакопления.ИмяРегистра.Остатки КАК Остатки
ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Движения КАК ВТ_Движения
ПО Остатки.Номенклатура = ВТ_Движения.Номенклатура
ГДЕ
ЕСТЬNULL(Остатки.КоличествоОстаток, 0) <> ЕСТЬNULL(ВТ_Движения.ПоДвижениям, 0)
Как читать результат:
- пусто — итоги верные, пересчёт не нужен; ищите ошибку в движениях документов;
- есть строки — итоги разошлись с движениями, пересчитайте их для этого регистра.
Виртуальная таблица Остатки без параметров даёт остатки на текущий момент, поэтому в первом запросе отбора по дате нет. Если в регистре несколько измерений (склад, организация), добавьте их и в группировку, и в условие соединения. Иначе одинаковые суммы по разным складам «схлопнутся», и расхождение спрячется.
Для регистра бухгалтерии в БП 3.0 быстрее проверить штатно: Отчеты → Анализ учета → Экспресс-проверка. Она не сравнивает итоги с проводками, но покажет отрицательные остатки, незакрытые счета и пропущенные регламентные операции — частые причины «странных» цифр.
Как не допустить повторного расхождения
Итоги редко портятся сами. Обычно за этим стоит причина, которая повторится.
Ещё несколько настроек, которые снижают риск:
- 🕒 Регламентные задания. В клиент-серверной базе проверьте, что задания по итогам и агрегатам включены. Найти их можно в
Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. - 🔒 Дата запрета изменения данных. Закрытые периоды защищены от случайного перепроведения, а значит и от неожиданных изменений итогов задним числом.
- 🧾 Журнал регистрации. Если остатки «плывут» регулярно, отфильтруйте журнал по событию записи данных и посмотрите, кто и какой обработкой правит регистр.
- 🗂 Разделение итогов в серверной базе с большим числом пользователей уменьшает ошибки блокировок при одновременном проведении.
Если пересчёт итогов не помог
Пересчитали, перепровели, а цифры всё равно не те. Варианты:
- Физическое повреждение файловой базы. Закройте 1С у всех пользователей и запустите утилиту
chdbfl.exeиз папкиbinплатформы — она проверяет физическую целостность файла1Cv8.1CD. Затем повторите тестирование и исправление в Конфигураторе. - Перенос через выгрузку. Выгрузите базу в
.dt(Конфигуратор → Администрирование → Выгрузить информационную базу) и загрузите в новую пустую базу. При загрузке таблицы, итоги и индексы строятся заново. Проверьте результат в копии, прежде чем заменять рабочую базу. - Ошибка в конфигурации. Если база доработана, проверьте, не пишет ли нетиповой модуль движения в регистр в обход проведения. Сравните поведение на копии базы с типовой конфигурацией того же релиза.
- Ошибка в логике учёта. Часто «неверный остаток» на деле верный: например, товар числится на другом складе или другой организации. Перед пересчётом сформируйте отчёт с детализацией по всем измерениям регистра.