В процессе работы с программами на платформе 1С:Предприятие 8.3 (например, в 1С:Бухгалтерии предприятия 3.0) специалисты часто сталкиваются с понятием «минимальный период итогов». При проведении регламентных операций или вызове обработки расчета итогов можно заметить колонку «Минимальный период итогов». Если в базе имеются документы за даты ранее этого периода, данные в регистрах накопления и бухгалтерии могут начать расходиться с реальными движениями. Разберем по шагам, что представляет собой этот механизм, почему возникают ошибки и как их исправить.
В платформе 1С:Предприятие 8.3 для регистров накопления остатков и регистров бухгалтерии реализован специальный механизм хранения рассчитанных итогов в определенном интервале времени. Это позволяет оптимизировать размер таблицы итогов и ускорить работу системы.
Рассмотрим ключевые особенности функционирования этого механизма:
Для работы с границами итогов у менеджеров регистров накопления и бухгалтерии предусмотрен следующий программный интерфейс:
// Установка минимального периода рассчитанных итогов
РегистрыНакопления.ТоварыНаСкладах.УстановитьМинимальныйПериодРассчитанныхИтогов(Дата("20000101"));
// Получение текущей нижней границы итогов
МинПериод = РегистрыНакопления.ТоварыНаСкладах.ПолучитьМинимальныйПериодРассчитанныхИтогов();
// Установка одновременно минимального и максимального периодов
РегистрыНакопления.ТоварыНаСкладах.УстановитьМинимальныйИМаксимальныйПериодыРассчитанныхИтогов(ДатаМин, ДатаМакс);
Проанализируем параметры и спецификацию метода УстановитьМинимальныйПериодРассчитанныхИтогов():
Параметр метода является обязательным и имеет тип Дата. Если передать дату 01.01.2000, платформа рассчитает и сохранит итоги на 00:00:00 01.01.2000 и для всех последующих периодов. Периодичность расчета и хранения итогов составляет один месяц.
Важное ограничение: Если для конфигурации установлен режим совместимости Версия8_3_2 или ниже, вызов метода УстановитьМинимальныйПериодРассчитанныхИтогов() сгенерирует исключение.
Выясним причину, почему регистры начинают «разъезжаться», если в базе есть движения за период ранее минимальной границы:
Рассмотрев причины возникновения проблем, разберем порядок действий для полного восстановления корректности итогов в базе данных.
Для восстановления корректности расчетов необходимо сдвинуть минимальную границу на самую раннюю дату учета и пересчитать итоги:
Пересчет итогов.После сброса границ и полного пересчета итогов на стороне платформы необходимо выполнить обслуживание базы данных на уровне СУБД:
UPDATE STATISTICS). Это необходимо, чтобы оптимизатор запросов СУБД корректно учитывал новый объем и структуру данных в таблицах итогов.