Администрирование · 9 мин
Как хранятся обороты в 1С: регистры накопления и итоги
Разбираем, как 1С хранит обороты: регистры накопления, таблицы итогов, виртуальные таблицы оборотов, периодичность итогов и способы ускорить отчёты.
Обороты в 1С — это суммарные изменения по какому-либо ресурсу (количеству товара, сумме денег, задолженности) за период времени. Непосредственно обороты в базе не хранятся: платформа хранит движения документов (записи регистров) и предрассчитанные итоги, а оборот за произвольный период вычисляется на их основе в момент обращения. Понимание этой механики важно и бухгалтеру, формирующему оборотно-сальдовую ведомость, и разработчику, оптимизирующему отчёт.
Механизм различается для бухгалтерских итогов и для регистров накопления, но принцип один: никогда не пересчитывать все документы от начала времён. Вместо этого система опирается на заранее рассчитанные остатки на начало периода и движения внутри периода. Именно поэтому отчёт за месяц строится быстро, а отчёт «за всё время» — медленно.
Где физически лежат данные об оборотах
Основной источник оборотов — записи регистров: регистров накопления (остатки и обороты товаров, денег, взаиморасчётов) и регистров бухгалтерии (проводки по счетам). Каждая запись привязана к документу-регистратору, содержит период, измерения (склад, номенклатура, счёт, контрагент) и ресурсы (количество, сумма). Эти записи хранятся в таблицах движений в базе данных.
Поверх таблиц движений платформа автоматически поддерживает служебные таблицы итогов. Для регистров накопления вида «Остатки» это таблица итоговых остатков на начало каждого месяца, для оборотных регистров и регистров бухгалтерии — таблицы оборотов за периоды. Итоги пересчитываются при проведении документов, а не при формировании отчёта.
Как устроены регистры накопления и их итоги
Регистр накопления вида «Остатки» (например, «Товары на складах») хранит движения двух видов: приход и расход. Для него платформа поддерживает таблицу итогов, где на начало каждого месяца зафиксирован остаток в разрезе всех измерений. Чтобы получить обороты за период, система берёт остатки на начало и конец периода из итогов и досчитывает движения только внутри выбранного интервала.
Регистр накопления вида «Обороты» (например, «Продажи») не хранит остатков — для него итоги хранятся как суммы оборотов за период по комбинациям измерений. Периодичность итогов по умолчанию — месяц. Это значит, что оборот за целый месяц читается одной записью итогов, а оборот за три дня потребует чтения движений.
Виртуальные таблицы «Обороты» в запросах — это не отдельные таблицы базы, а конструкция языка запросов, которую платформа разворачивает в обращение к физическим таблицам движений и итогов. От того, как вы задали период и отборы, зависит, какие таблицы реально будут прочитаны.
Как хранятся обороты по счетам бухгалтерского учёта
Регистр бухгалтерии хранит проводки: счёт дебета, счёт кредита, субконто, суммы и количества. Поверх проводок платформа поддерживает таблицы итогов по счетам: остатки и обороты в разрезе субконто за каждый месяц. Оборотно-сальдовая ведомость при стандартных настройках читает именно эти итоги, поэтому формируется быстро даже в большой базе.
Особенность бухгалтерских итогов — раздельное хранение по видам учёта (суммовой, количественный, валютный, налоговый) и по субконто. Если в отчёте запросить разворот по аналитике, которой нет в составе итоговых комбинаций, системе придётся читать сами проводки, и время формирования заметно вырастет.
Периодичность итогов и её влияние на хранение оборотов
Для регистров накопления вида «Остатки» можно включить режим «Итоги по периодам» с периодичностью (месяц, квартал, год). Чем чаще хранятся промежуточные итоги, тем быстрее строятся отчёты за короткие периоды в глубине истории, но тем больше места занимает база и дольше идёт проведение документов.
Для оборотных регистров периодичность виртуальной таблицы оборотов (день, месяц, квартал, год) задаётся в самом запросе. Платформа выберет ближайшие доступные итоги. Если задать периодичность «День» за год, итоги по месяцам не помогут полностью — часть данных будет дочитана из движений.
Хранение оборотов: варианты
Подходит большинству баз: баланс скорости отчётов и объёма хранения.
Оправдана, когда часто строят отчёты за короткие периоды в старых данных; плата — рост базы и замедление проведения.
Фактически так работает отчёт с нестандартной детализацией: максимальная гибкость, но самое медленное формирование.
Как получить обороты запросом правильно
Для чтения оборотов используйте виртуальные таблицы: РегистрНакопления.ТоварыНаСкладах.Обороты или РегистрБухгалтерии.Хозрасчетный.Обороты. Обязательно передавайте период через параметры виртуальной таблицы, а не через условие ГДЕ — тогда платформа сможет использовать итоги. Отборы по измерениям тоже лучше размещать в параметрах виртуальной таблицы.
Типичный пример корректного обращения:
ВЫБРАТЬ
Обороты.Номенклатура,
Обороты.КоличествоПриход,
Обороты.КоличествоРасход,
Обороты.КоличествоОборот
ИЗ
РегистрНакопления.ТоварыНаСкладах.Обороты(
&НачалоПериода, &КонецПериода, , ) КАК Обороты
Если соединять виртуальную таблицу оборотов с другими таблицами, сначала ограничьте её параметрами и отборами, иначе соединение будет выполняться по полному набору записей. Для отчётов на СКД эти правила сохраняются: параметры периода должны попадать в параметры виртуальной таблицы, а не в отбор результата.
Запрос.Текст = "ВЫБРАТЬ Номенклатура, КоличествоОборот ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&Нач, &Кон, , )"; Запрос.УстановитьПараметр("Нач", НачалоМесяца(ТекущаяДата())); Запрос.УстановитьПараметр("Кон", КонецМесяца(ТекущаяДата()));Актуальность итогов и типичные проблемы
Итоги могут стать неактуальными: после восстановления базы из копии, массовой загрузки данных, сбоев или отключенного расчёта итогов. Признак — отчёты показывают неверные остатки или формируются неожиданно медленно. Проверить и пересчитать итоги можно в конфигураторе: «Администрирование → Тестирование и исправление» или через управление итогами регистров.
Ещё одна частая ситуация — рассчитанные итоги только до определённой даты. При проведении документов задним числом платформа может сдвигать границу актуальности итогов, и отчёты за «старые» периоды начинают тормозить. Решение — выполнить полный пересчёт итогов в нерабочее время.
Как проверить, что обороты считаются правильно
Базовый контроль — сверка оборотов с движениями: постройте отчёт по оборотам за период и сравните с суммой движений по регистру за тот же период. Для бухгалтерии сверьте оборотно-сальдовую ведомость с карточкой счёта. Расхождение почти всегда означает проблему с итогами или с периодом в параметрах отчёта.
Полезно контролировать и границу актуальности итогов: если она старше текущего периода, отчёты за прошлые месяцы будут работать медленнее обычного. В типовых конфигурациях состояние итогов видно в разделе администрирования, в конфигураторе — через управление итогами конкретного регистра.
Как проверить результат
Значения совпадают
Расхождение — пересчитайте итоги
Формируется за секунды
Минуты — проверьте актуальность итогов
Период и отборы заданы в параметрах
Фильтрация через ГДЕ по всем записям
FAQ
Хранятся ли обороты в 1С отдельной таблицей?
Нет. В базе хранятся записи движений регистров и служебные таблицы итогов (остатки на начало периодов, обороты за периоды). Оборот за конкретный произвольный интервал вычисляется из этих данных в момент запроса.
Почему отчёт по оборотам за год формируется долго, а за месяц — быстро?
Итоги хранятся с месячной периодичностью, поэтому отчёт за месяц читает готовые агрегаты. За длинный период с детализацией платформа вынуждена читать больше данных, а при нестандартных отборах — сами движения.
Что делать, если обороты в отчёте не сходятся с движениями документов?
Сначала проверьте период и отборы отчёта. Если они корректны — вероятно, итоги неактуальны: выполните пересчёт итогов по регистру через конфигуратор или раздел администрирования, предварительно сделав резервную копию.
Чем отличается регистр накопления «Остатки» от «Обороты» по хранению?
Для регистра «Остатки» итоги хранятся как остатки на начало каждого периода, обороты вычисляются из разности остатков и движений. Для регистра «Обороты» итоги хранятся непосредственно как суммы оборотов за период, остатков у него нет.
Нужно ли создавать собственные таблицы для хранения оборотов?
Обычно нет: стандартные итоги покрывают большинство задач. Собственные агрегаты оправданы только для тяжёлых аналитических отчётов с нестандартной детализацией, и тогда придётся обеспечивать их актуальность самостоятельно.
Влияет ли проведение документов задним числом на обороты?
Да. Проведение в прошлом периоде пересчитывает итоги начиная с даты изменений и может сдвинуть границу актуальности итогов, из-за чего отчёты за старые периоды временно замедляются до полного пересчёта.
Что важно запомнить
Обороты в 1С вычисляются из записей регистров и предрассчитанных итогов с месячной периодичностью. Быстрые отчёты получаются, когда период и отборы заданы параметрами виртуальных таблиц и итоги актуальны. Расхождения и тормоза — повод проверить итоги и пересчитать их после резервного копирования.