Каждый бухгалтер или технический специалист хотя бы раз сталкивался с ситуацией, когда при анализе движений по счету в программе «1С:Предприятие» цифры начинают «плясать». Вы открываете отчет, листаете его до самого конца, смотрите на последнюю строчку с текущим остатком по операции, затем опускаете взгляд на итоговую таблицу — и видите там совершенно другую сумму. Возникает закономерный вопрос: как у одного и того же счета на одну и ту же секунду времени могут быть разные конечные остатки?
В этой статье мы подробно разберем, почему возникает подобное расхождение, как правильно интерпретировать показатели отчетов и что делать, если в базе данных произошел технический сбой.
Прежде чем переходить к техническим деталям, устраним главную терминологическую путаницу, в которую часто попадают пользователи. Программа 1С предлагает множество специализированных отчетов, и два самых популярных из них — это «Оборотно-сальдовая ведомость по счету» (ОСВ) и «Карточка счета».
Оборотно-сальдовая ведомость по счету показывает агрегированные (сгруппированные) данные: начальный остаток, обороты за период по дебету и кредиту и конечный остаток в разрезе установленной аналитики (субконто). В ней нет детальной расшифровки по каждой конкретной проводке.
Карточка счета, напротив, представляет собой подробный хронологический регистратор. В ней выводятся абсолютно все проводки по выбранному счету за указанный период, упорядоченные по времени. Именно в Карточке счета есть колонка «Текущее сальдо», которая пересчитывается после каждой строки (каждого документа).
Проанализируем, как формируются эти показатели на уровне платформы 1С, так как именно в алгоритмах расчета кроется ключ к разгадке нашей проблемы.
В подавляющем большинстве случаев расхождение между текущим сальдо в последней строке и итоговым сальдо внизу страницы не является ошибкой программы. Это следствие правил ведения бухгалтерского учета на активно-пассивных счетах.
Рассмотрим эту ситуацию на примере счета 76.05 («Расчеты с прочими поставщиками и подрядчиками»). Этот счет является активно-пассивным. Это означает, что по нему одновременно может быть как дебетовое сальдо (например, наша предоплата поставщику), так и кредитовое сальдо (наш долг перед поставщиком за оказанные услуги).
Выясним, как рассчитываются показатели в разных частях отчета «Карточка счета»:
Разберем математику этого процесса на конкретном примере:
Предположим, у нас есть два контрагента по счету 76.05:
Когда программа выводит итоговую таблицу внизу отчета:
А теперь посчитаем свернутый итог: 107 835,65 (Дебет) - 40 211,90 (Кредит) = 67 623,75. Это ровно та сумма, которая вывелась в последней строке детальных записей как текущее сальдо! Никакой ошибки нет — программа просто показала в строках математический итог без учета аналитики, а в подвале отчета вывела правильное развернутое сальдо по субконто.
Решение: Сформируйте полноценную Оборотно-сальдовую ведомость (ОСВ) по счету 76.05 за этот же период, обязательно включив в настройках группировку по всем субконто (Контрагенты, Договоры, Документы расчетов). Вы увидите, по каким именно аналитическим разрезам у вас «разошлись» дебет и кредит, и сможете закрыть («схлопнуть») эти суммы с помощью документа «Корректировка долга» или путем перепроведения документов с правильным указанием зачетов авансов.
Если же вы проверили аналитику, свернули все субконто, но математическая разница все равно не сходится, мы имеем дело с технической проблемой. В СУБД (или в файловой базе данных) произошло рассогласование между таблицей детальных записей (самими проводками документов) и таблицей агрегированных итогов.
Такое случается при аварийном завершении работы компьютера, сбоях в сети при работе в файловом режиме, некорректно написанном кастомном коде или незавершенных транзакциях.
Рассмотрим по шагам два способа решения этой проблемы.
Это классический и самый надежный метод восстановления целостности базы данных 1С. Выполнять его нужно строго в монопольном режиме через Конфигуратор.
Важно: Перед выполнением любых административных процедур в обязательном порядке создайте резервную копию вашей информационной базы!
В процессе пересчета платформа полностью очистит существующие таблицы итогов регистров накопления и регистров бухгалтерии, а затем заново последовательно рассчитает их на основе детальных проводок, хранящихся в базе. После окончания процесса запустите систему в режиме «1С:Предприятие» и проверьте отчет заново.
Если у вас нет доступа к Конфигуратору или монопольному режиму (например, в базе работают другие пользователи, которых нельзя прерывать), можно воспользоваться встроенным интерактивным механизмом управления итогами.
Рассмотрим, как это сделать:
Пользователь в обсуждении упомянул: «движения конечно были доработаны». Если программисты вносили изменения в алгоритмы проведения документов, это может стать причиной регулярного появления таких ошибок.
Проанализируем ситуацию с технической точки зрения. При проведении документа в 1С записи в регистр бухгалтерии должны вноситься по определенным правилам. Если программист пишет движения напрямую в обход стандартных механизмов платформы, например, используя некорректный набор записей:
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = Дата;
НоваяЗапись.СчетДт = ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками;
// Ошибка: Разработчик забыл заполнить обязательные субконто для этого счета!
НоваяЗапись.Сумма = 10000;
НаборЗаписей.Записать();
В этом случае проводка запишется в базу данных без аналитики. Стандартный запрос Карточки счета выведет строку с суммой 10 000 руб. и прибавит её к текущему сальдо. Однако при формировании итогов по субконто система столкнется с пустой аналитикой, что вызовет серьезный перекос между детальными записями и таблицей итогов регистра.
Если после каждого перепроведения документов или ввода новых данных расхождение появляется снова, необходимо обратиться к разработчикам с требованием проверить качество доработки движений документов по регистру бухгалтерии Хозрасчетный.