Неверные остатки и обороты в регистре накопления: поиск причины и ремонт данных

· 10 мин

Содержание

Ошибки в регистре накопления 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С:Предприятие откройте Все функции → Стандартные → Управление итогами.

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

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

Ремонт регистра кодом и запросами

Этот раздел для программиста или администратора с правами на внешние обработки. Имена регистров и полей ниже — пример из УТ 11, свои берите из дерева метаданных в Конфигураторе.

Найти все отрицательные остатки одним запросом

Запрос выполняется в консоли запросов (внешняя обработка, которую обычно держат программисты) или в своей обработке:

ВЫБРАТЬ
	Остатки.Номенклатура,
	Остатки.Склад,
	Остатки.ВНаличииОстаток КАК Остаток
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки(&НаДату) КАК Остатки
ГДЕ
	Остатки.ВНаличииОстаток < 0
УПОРЯДОЧИТЬ ПО
	Остатки.Номенклатура

Параметр &НаДату задайте как Новый Граница(КонецДня(Дата), ВидГраницы.Включая), чтобы учесть движения последнего дня.

Найти движения без документа

Если документ удалили непосредственно, без контроля ссылок, записи регистра остаются с битой ссылкой. Такие строки видны запросом по физической таблице регистра:

ВЫБРАТЬ
	Движения.Регистратор,
	Движения.Период,
	Движения.Номенклатура
ИЗ
	РегистрНакопления.ТоварыНаСкладах КАК Движения
ГДЕ
	Движения.Регистратор.Номер ЕСТЬ NULL

Перепровести документ программно

ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект();
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);

Код выполняйте на сервере. Обработчики проведения отработают так же, как при ручном проведении, с теми же проверками остатков.

Очистить движения регистратора

Если документа нет, а его движения нужно убрать, запишите пустой набор записей с отбором по регистратору:

Набор = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(БитыйРегистратор);
Набор.Записать(Истина); // замещение пустым набором удаляет все записи регистратора

Запись набора напрямую обходит логику документа: связанные регистры (резервы, себестоимость, взаиморасчёты) останутся без изменений. Чистите так только «сиротские» движения, а для живых документов используйте перепроведение.

Не включайте ОбменДанными.Загрузка = Истина при записи наборов «чтобы быстрее». Этот режим отключает проверки в подписках и модулях, и именно так в базу попадают новые ошибки.

Исправление без программирования

Бухгалтер без доступа к Конфигуратору может закрыть большую часть случаев сам.

  • ✅ Перепроведение документа или группы документов — описано выше, прав пользователя обычно достаточно.
  • ✅ Ручная корректировка движений документа. Открываете движения, ставите флажок ручной корректировки, правите строку регистра накопления. Используйте это как временную меру с комментарием в документе: при следующем перепроведении ваши правки сохранятся, и через год их никто не вспомнит.
  • ✅ Корректировочный документ. В УТ 11 и ERP есть документ «Корректировка регистров», в БП 3.0 — документ «Операция», в котором можно добавить движения по регистрам накопления. Это прозрачнее ручной правки: корректировка видна в журнале отдельным документом с датой и автором.
  • ✅ Инвентаризация для складских остатков. Если фактический остаток известен, оформите пересчёт товаров и оприходование или списание. Это не исправляет причину, но приводит учёт к факту законным документом.
Что показывает проверка регистра?

Тестирование и исправление в Конфигураторе

Для повреждений на уровне базы — сбой итогов после аварийного отключения, битые ссылки после удаления — служит штатный режим Администрирование → Тестирование и исправление в Конфигураторе.

Отметьте флажки «Проверка логической целостности», «Проверка ссылочной целостности» и «Пересчёт итогов». Для ссылок на несуществующие объекты выберите действие «Очищать ссылки» или «Удалять объекты» — второе удалит строки регистра с битым регистратором.

Режим требует монопольного доступа: все пользователи должны выйти из базы, их сеансы будут завершены. Запускайте вечером или в выходной, после резервной копии. Для файловой базы есть ещё утилита chkdbfl.exe из каталога bin платформы — она проверяет физическую структуру файла 1Cv8.1CD.

Как не допускать ошибок в регистрах

Профилактика проще ремонта. Пять правил, которые действительно работают:

  1. 🔒 Дата запрета изменения данных. Закрытый период никто не перепроведёт случайно. В БП и УТ настройка находится в разделе Администрирование.
  2. 📦 Контроль остатков при проведении. В УТ 11 контроль отрицательных остатков включается в настройках склада и запасов, в БП — в параметрах проведения документов. Без контроля документ спокойно спишет то, чего нет.
  3. 🗑️ Удаление только через пометку. Непосредственное удаление объектов отключите в ролях пользователей. Пометка удаления с последующим «Удалением помеченных объектов» проверяет ссылки и не оставляет сирот.
  4. 🔄 Обмены с проверкой. После каждой загрузки из другой базы смотрите отчёт о проблемах обмена или сверяйте остатки выборочно по 5–10 позициям.
  5. 🛠️ Регламент обслуживания. Раз в месяц-квартал — пересчёт итогов и проверка базы. Для крупных баз в клиент-серверном варианте — регламентные задания СУБД по обслуживанию индексов и статистики.
Ежемесячная проверка регистров
Выполнено: 0 / 5

Частые вопросы по исправлению регистров

Чем пересчёт итогов отличается от перепроведения?
Пересчёт итогов заново складывает существующие движения и не меняет их. Перепроведение удаляет движения документа и записывает новые по его текущим данным.
Можно ли пересчитать итоги, пока пользователи работают?
Через «Управление итогами» в клиент-серверной базе — да, но отчёты будут работать медленнее. «Тестирование и исправление» требует, чтобы все вышли из базы.
Почему отрицательный остаток пропадает при формировании отчёта на другую дату?
Минус был временным: расход провели раньше прихода. На конец периода остаток положительный, но себестоимость списания в такой ситуации может посчитаться неверно — перепроведите документы по порядку.
Удалит ли пересчёт итогов мои ручные корректировки?
Нет. Ручные движения — это обычные записи регистра, пересчёт итогов их учитывает как есть.
Что делать, если регистр огромный и пересчёт идёт часами?
Установите период рассчитанных итогов на прошлый месяц и пересчитывайте только нужный регистр, а не все сразу. В клиент-серверной базе запускайте ночью.

Когда звать специалиста

Самостоятельный ремонт оправдан, пока ошибка локальная: один-два документа, одна позиция, понятная причина. Обратитесь к программисту 1С или администратору базы, если:

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

Программисту передайте то, что собрали на шагах 1–3: отбор, дату первого расхождения, номер документа-регистратора и что уже пробовали. Это сокращает диагностику с дней до часов.