Неверные остатки и обороты в регистре накопления: поиск причины и ремонт данных
Содержание
Ошибки в регистре накопления 1С исправляют тремя способами, по нарастанию риска. Первый — перепровести документ-источник, чтобы он заново записал свои движения. Второй — пересчитать итоги регистра через Все функции → Стандартные → Управление итогами или через Конфигуратор. Третий — вручную скорректировать движения или удалить «осиротевшие» записи кодом. Чаще всего хватает первого способа: регистр редко «ломается» сам, в нём лежит ровно то, что записали документы.
Поэтому ремонт всегда начинается с вопроса «какой документ дал эту цифру». Пока ответа нет, любые пересчёты только маскируют проблему. Порядок у бухгалтера и программиста один: от симптома к документу, от документа к исправлению.
Как понять, что ошибка именно в регистре накопления
Регистр накопления хранит движения (приход и расход) и итоги, которые платформа считает по этим движениям. Отчёты по остаткам, оборотам, взаиморасчётам, резервам и НДС в типовых конфигурациях строятся как раз по таким регистрам.
Характерные признаки сбоя:
- 📉 отрицательный остаток там, где его быть не может: минус на складе, минус в резерве, отрицательная задолженность при закрытых расчётах;
- 🔁 разные цифры в двух отчётах об одном и том же: ведомость по товарам показывает 10 шт., а подбор в документе — 7 шт.;
- 👻 движения без документа: в списке записей регистра регистратор отображается как
<Объект не найден>; - 🐢 отчёт на прошлую дату показывает одно, на текущую — другое без документов между этими датами (так обычно выглядит сбой итогов);
- ⛔ документ перестаёт проводиться с сообщением о нехватке остатка, хотя остаток в отчёте есть.
В 1С:Бухгалтерии 3.0 товары, деньги и расчёты учитываются в основном на регистре бухгалтерии Хозрасчетный, а регистры накопления работают на вспомогательных участках: НДС, раздельный учёт, расчёты по налогу на прибыль. В 1С:Управлении торговлей 11 и ERP почти весь оперативный учёт держится на регистрах накопления. Методы ниже одинаковы для всех конфигураций на платформе 8.3.
Откуда берутся ошибки в регистрах накопления и как найти источник
Причина почти всегда в одном из пяти сценариев. От сценария зависит способ исправления.
| Причина | Как выглядит | Чем лечится |
|---|---|---|
| Документ введён или изменён задним числом | Минус появляется не в дате документа, а позже | Перепроведение документов после этой даты |
| Ручная корректировка движений | Документ перепровели, а цифра не изменилась | Снять ручную корректировку, перепровести |
| Загрузка из другой базы через обмен | Движения пришли без проверки остатков | Перепроведение загруженных документов |
| Удалён документ, движения остались | Регистратор <Объект не найден> | Тестирование и исправление или удаление записей |
| Сбой итогов после аварии или прерванной записи | Остатки не сходятся с суммой движений | Пересчёт итогов |
Шаг 1. Зафиксируйте симптом цифрой
Выпишите, что именно не так: номенклатура, склад, организация, дата и ожидаемое значение. Например: «Бумага А4, Основной склад, на 31.03 остаток −15 пачек, должно быть 0».
Шаг 2. Найдите движения регистра по этому отбору
Откройте сам регистр: Все функции → Регистры накопления → <имя регистра>. Если пункта «Все функции» нет в меню, включите его в главном меню: Сервис → Параметры, флажок «Отображать команду “Все функции”».
В списке записей поставьте отбор по измерениям из шага 1 и отсортируйте по периоду. Колонка «Регистратор» показывает документ, который сделал каждое движение. Ищите:
- 🔍 расход, после которого остаток впервые ушёл в минус;
- 🔍 движение с датой, сильно отличающейся от остальных;
- 🔍 запись с пустым значением измерения (пустой склад, пустая организация) — такой документ «увёл» остаток в другую строку итогов;
- 🔍 регистратор
<Объект не найден>.
Шаг 3. Проверьте найденный документ
Откройте документ и посмотрите его движения. В БП это кнопка Дт/Кт в командной панели документа, в УТ 11 и ERP — команда отчёта о движениях документа в группе «Отчёты» формы. Сравните: совпадают ли движения с табличной частью, нет ли лишних строк.
Если в форме движений стоит флажок «Ручная корректировка», документ при перепроведении сохранит старые записи. Это частая причина того, что «перепровёл, а ничего не изменилось».
Исправление по шагам: от документа к итогам
Порядок важен. Каждый следующий шаг выполняйте, только если предыдущий не помог.
Перед любыми массовыми действиями сделайте резервную копию базы . Перепроведение сотен документов и пересчёт итогов нельзя откатить кнопкой «Отменить».
1. Исправьте и перепроведите сам документ
Если в документе неверное количество, склад или дата — исправьте реквизит и проведите документ заново. Платформа удалит старые движения регистратора и запишет новые.
Если стоит ручная корректировка, снимите флажок в форме движений и перепроведите. Учтите: ручные правки, сделанные кем-то раньше, пропадут. Выясните, зачем их вносили, прежде чем снимать.
2. Перепроведите документы после даты ошибки
Когда документ задним числом поменял остатки, последующие расходы были рассчитаны по старым данным. Их нужно перепровести в хронологическом порядке, начиная с даты исправленного документа.
- БП 3.0: групповое перепроведение запускается из раздела
Операции. Документы проводятся по порядку дат, а после него стоит заново выполнить закрытие месяца за затронутые периоды. - УТ 11, ERP, КА 2: обработка группового проведения находится в разделе
Администрированиесреди сервисных функций. После перепроведения перезапустите расчёт себестоимости за период, иначе партии и стоимость останутся старыми.
Перепроведение в закрытом периоде меняет уже сданную отчётность. Если дата запрета изменения данных стоит, программа не даст провести документ — и это правильно. Снимайте запрет только по согласованию с главным бухгалтером.
3. Пересчитайте итоги регистра
Если движения верные, а остатки в отчётах с ними не сходятся, повреждены итоги. В режиме 1С:Предприятие откройте Все функции → Стандартные → Управление итогами.
- Выберите нужный регистр накопления в списке.
- Запустите команду пересчёта итогов. Для больших регистров это занимает от нескольких минут до часов.
- Проверьте «Период рассчитанных итогов». Если он установлен на месяц, а ошибка в текущем месяце, остатки за текущий период платформа считает по движениям на лету — пересчёт здесь ничего не изменит.
Пересчёт итогов не трогает движения. Это безопасная операция, но на время пересчёта отчёты по регистру тормозят, а в файловой базе другим пользователям лучше не работать.
Ремонт регистра кодом и запросами
Этот раздел для программиста или администратора с правами на внешние обработки. Имена регистров и полей ниже — пример из УТ 11, свои берите из дерева метаданных в Конфигураторе.
Найти все отрицательные остатки одним запросом
Запрос выполняется в консоли запросов (внешняя обработка, которую обычно держат программисты) или в своей обработке:
ВЫБРАТЬ
Остатки.Номенклатура,
Остатки.Склад,
Остатки.ВНаличииОстаток КАК Остаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&НаДату) КАК Остатки
ГДЕ
Остатки.ВНаличииОстаток < 0
УПОРЯДОЧИТЬ ПО
Остатки.Номенклатура
Параметр &НаДату задайте как Новый Граница(КонецДня(Дата), ВидГраницы.Включая), чтобы учесть движения последнего дня.
Найти движения без документа
Если документ удалили непосредственно, без контроля ссылок, записи регистра остаются с битой ссылкой. Такие строки видны запросом по физической таблице регистра:
ВЫБРАТЬ
Движения.Регистратор,
Движения.Период,
Движения.Номенклатура
ИЗ
РегистрНакопления.ТоварыНаСкладах КАК Движения
ГДЕ
Движения.Регистратор.Номер ЕСТЬ NULL
Перепровести документ программно
ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект();
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Код выполняйте на сервере. Обработчики проведения отработают так же, как при ручном проведении, с теми же проверками остатков.
Очистить движения регистратора
Если документа нет, а его движения нужно убрать, запишите пустой набор записей с отбором по регистратору:
Набор = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(БитыйРегистратор);
Набор.Записать(Истина); // замещение пустым набором удаляет все записи регистратора
Запись набора напрямую обходит логику документа: связанные регистры (резервы, себестоимость, взаиморасчёты) останутся без изменений. Чистите так только «сиротские» движения, а для живых документов используйте перепроведение.
Не включайте ОбменДанными.Загрузка = Истина при записи наборов «чтобы быстрее». Этот режим отключает проверки в подписках и модулях, и именно так в базу попадают новые ошибки.
Исправление без программирования
Бухгалтер без доступа к Конфигуратору может закрыть большую часть случаев сам.
- ✅ Перепроведение документа или группы документов — описано выше, прав пользователя обычно достаточно.
- ✅ Ручная корректировка движений документа. Открываете движения, ставите флажок ручной корректировки, правите строку регистра накопления. Используйте это как временную меру с комментарием в документе: при следующем перепроведении ваши правки сохранятся, и через год их никто не вспомнит.
- ✅ Корректировочный документ. В УТ 11 и ERP есть документ «Корректировка регистров», в БП 3.0 — документ «Операция», в котором можно добавить движения по регистрам накопления. Это прозрачнее ручной правки: корректировка видна в журнале отдельным документом с датой и автором.
- ✅ Инвентаризация для складских остатков. Если фактический остаток известен, оформите пересчёт товаров и оприходование или списание. Это не исправляет причину, но приводит учёт к факту законным документом.
Тестирование и исправление в Конфигураторе
Для повреждений на уровне базы — сбой итогов после аварийного отключения, битые ссылки после удаления — служит штатный режим Администрирование → Тестирование и исправление в Конфигураторе.
Отметьте флажки «Проверка логической целостности», «Проверка ссылочной целостности» и «Пересчёт итогов». Для ссылок на несуществующие объекты выберите действие «Очищать ссылки» или «Удалять объекты» — второе удалит строки регистра с битым регистратором.
Режим требует монопольного доступа: все пользователи должны выйти из базы, их сеансы будут завершены. Запускайте вечером или в выходной, после резервной копии. Для файловой базы есть ещё утилита chkdbfl.exe из каталога bin платформы — она проверяет физическую структуру файла 1Cv8.1CD.
Как не допускать ошибок в регистрах
Профилактика проще ремонта. Пять правил, которые действительно работают:
- 🔒 Дата запрета изменения данных. Закрытый период никто не перепроведёт случайно. В БП и УТ настройка находится в разделе
Администрирование. - 📦 Контроль остатков при проведении. В УТ 11 контроль отрицательных остатков включается в настройках склада и запасов, в БП — в параметрах проведения документов. Без контроля документ спокойно спишет то, чего нет.
- 🗑️ Удаление только через пометку. Непосредственное удаление объектов отключите в ролях пользователей. Пометка удаления с последующим «Удалением помеченных объектов» проверяет ссылки и не оставляет сирот.
- 🔄 Обмены с проверкой. После каждой загрузки из другой базы смотрите отчёт о проблемах обмена или сверяйте остатки выборочно по 5–10 позициям.
- 🛠️ Регламент обслуживания. Раз в месяц-квартал — пересчёт итогов и проверка базы. Для крупных баз в клиент-серверном варианте — регламентные задания СУБД по обслуживанию индексов и статистики.
Частые вопросы по исправлению регистров
Чем пересчёт итогов отличается от перепроведения?
Можно ли пересчитать итоги, пока пользователи работают?
Почему отрицательный остаток пропадает при формировании отчёта на другую дату?
Удалит ли пересчёт итогов мои ручные корректировки?
Что делать, если регистр огромный и пересчёт идёт часами?
Когда звать специалиста
Самостоятельный ремонт оправдан, пока ошибка локальная: один-два документа, одна позиция, понятная причина. Обратитесь к программисту 1С или администратору базы, если:
- ❗ минус по сотням позиций сразу и непонятно, с какого документа начался;
- ❗ ошибка возвращается после перепроведения — значит, проблема в алгоритме проведения, часто после доработки конфигурации или неудачного обновления;
- ❗ «Тестирование и исправление» завершается с ошибками или база падает при пересчёте;
- ❗ расхождение затрагивает сданную отчётность и надо решить, в каком периоде исправлять;
- ❗ в базе есть доработки, а документы проводит не типовой код.
Программисту передайте то, что собрали на шагах 1–3: отбор, дату первого расхождения, номер документа-регистратора и что уже пробовали. Это сокращает диагностику с дней до часов.