Что такое минимальный период итогов в 1С и как убрать ошибки в регистрах

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

В процессе работы с программами на платформе 1С:Предприятие 8.3 (например, в 1С:Бухгалтерии предприятия 3.0) специалисты часто сталкиваются с понятием «минимальный период итогов». При проведении регламентных операций или вызове обработки расчета итогов можно заметить колонку «Минимальный период итогов». Если в базе имеются документы за даты ранее этого периода, данные в регистрах накопления и бухгалтерии могут начать расходиться с реальными движениями. Разберем по шагам, что представляет собой этот механизм, почему возникают ошибки и как их исправить.

Суть и механизм работы минимального периода итогов

В платформе 1С:Предприятие 8.3 для регистров накопления остатков и регистров бухгалтерии реализован специальный механизм хранения рассчитанных итогов в определенном интервале времени. Это позволяет оптимизировать размер таблицы итогов и ускорить работу системы.

Рассмотрим ключевые особенности функционирования этого механизма:

  1. Нижняя граница хранения данных: Минимальный период рассчитанных итогов определяет дату, начиная с которой платформа сохраняет готовые остатки и обороты в служебных таблицах.
  2. Автоматическое округление: Переданная в систему дата всегда приводится к началу месяца (00:00:00 первого числа).
  3. Отсутствие записей до границы: За пределами установленной нижней границы (ранее указанной даты) агрегированные данные в таблицах итогов платформой не хранятся.

Программный интерфейс и синтаксис методов

Для работы с границами итогов у менеджеров регистров накопления и бухгалтерии предусмотрен следующий программный интерфейс:


// Установка минимального периода рассчитанных итогов
РегистрыНакопления.ТоварыНаСкладах.УстановитьМинимальныйПериодРассчитанныхИтогов(Дата("20000101"));

// Получение текущей нижней границы итогов
МинПериод = РегистрыНакопления.ТоварыНаСкладах.ПолучитьМинимальныйПериодРассчитанныхИтогов();

// Установка одновременно минимального и максимального периодов
РегистрыНакопления.ТоварыНаСкладах.УстановитьМинимальныйИМаксимальныйПериодыРассчитанныхИтогов(ДатаМин, ДатаМакс);

Проанализируем параметры и спецификацию метода УстановитьМинимальныйПериодРассчитанныхИтогов():

Параметр метода является обязательным и имеет тип Дата. Если передать дату 01.01.2000, платформа рассчитает и сохранит итоги на 00:00:00 01.01.2000 и для всех последующих периодов. Периодичность расчета и хранения итогов составляет один месяц.

Важное ограничение: Если для конфигурации установлен режим совместимости Версия8_3_2 или ниже, вызов метода УстановитьМинимальныйПериодРассчитанныхИтогов() сгенерирует исключение.

Причины расхождения данных в регистрах

Выясним причину, почему регистры начинают «разъезжаться», если в базе есть движения за период ранее минимальной границы:

  1. Проведение документов задним числом: При записи или корректировке документов за период ранее минимального платформа не обновляет исторические таблицы итогов за прошлые года, а выполнят пересчет только начиная с установленной нижней границы.
  2. Запросы к виртуальным таблицам на старые даты: Если отчет или обработка запрашивает остатки на дату ранее минимального периода, платформа рассчитывает их «на лету» путем полного сканирования таблицы движений. При наличии ошибок в последовательности движений за старые года данные отчетов до и после границы будут расходиться.
  3. Падение производительности: Отсутствие рассчитанных итогов за старые периоды заставляет СУБД считывать миллионы строк из таблицы движений вместо быстрого чтения итоговых значений.

Пошаговая инструкция по исправлению ошибок

Рассмотрев причины возникновения проблем, разберем порядок действий для полного восстановления корректности итогов в базе данных.

Шаг 1. Изменение минимального периода и пересчет итогов

Для восстановления корректности расчетов необходимо сдвинуть минимальную границу на самую раннюю дату учета и пересчитать итоги:

  1. В режиме «1С:Предприятие» откроем форму управления итогами. Для этого перейдем через меню «Все функции» (или «Функции для администратора») в раздел «Стандартные» — «Управление итогами и агрегатами» (либо через раздел Администрирование — Обслуживание).
  2. Установим минимальный период итогов на дату первого документа в базе данных (или на начало учета).
  3. Выполним полный пересчет итогов по регистрам за весь период.
  4. Альтернативно в режиме «Конфигуратор» запустим процедуру «Тестирование и исправление» с включенной опцией Пересчет итогов.

Шаг 2. Обновление статистики СУБД

После сброса границ и полного пересчета итогов на стороне платформы необходимо выполнить обслуживание базы данных на уровне СУБД:

  1. Запустим процедуру обновления статистики СУБД (UPDATE STATISTICS). Это необходимо, чтобы оптимизатор запросов СУБД корректно учитывал новый объем и структуру данных в таблицах итогов.
  2. При необходимости выполним реиндексацию и дефрагментацию индексов таблиц базы данных.
← На главную