В процессе эксплуатации программы «1С:Бухгалтерия государственного учреждения 1.0» (или иных конфигураций на платформе 1С:Предприятие 8.3) пользователи иногда сталкиваются с ситуацией, когда граница рассчитанных итогов перестает сдвигаться. Программа продолжает указывать устаревшую дату (например, за прошлый месяц или год), процедура «Тестирование и исправление информационной базы» проходит без ошибок, но фактический пересчет итогов так и не происходит, а при запуске программы пересчитать итоги не предлагается.
Рассмотрим подробно причины возникновения этой проблемы и разберем проверенные практические способы ее решения.
Выясним, почему платформенный механизм расчета итогов регистров бухгалтерии и накопления может давать сбой:
01.01.0001 или даты далекого будущего вроде 3999 год) сдвигает границу расчета иторов в некорректный интервал.РегистрБухгалтерии.ЕПСБУ) ранее выполнялось программное отключение итогов, граница перестает обновляться штатно.Проанализируем базовый способ, который часто помогает после проведения свертки базы или переноса остатков. Если в информационной базе была установлена дата запрета изменения данных (например, 31.12.2016), а данные за прошлые периоды сворачивались, граница итогов может застрять на дате свертки.
Для восстановления корректного расчета выполним следующие действия:
Посмотрим на решение, связанное с точной настройкой периода пересчета через стандартный интерфейс платформы:
Если стандартный пересчет не реагирует, проанализируем процедуру полного пересоздания таблиц итогов СУБД:
При наличии административных прав или внешних обработок разберем способ принудительной установки итогов через встроенный язык. Для регистра бухгалтерии ЕПСБУ в БГУ можно выполнить следующий код:
// Выполнять в монопольном режиме!
РегистрыБухгалтерии.ЕПСБУ.УстановитьИспользованиеИтогов(Истина);
РегистрыБухгалтерии.ЕПСБУ.УстановитьПериодРассчитанныхИтогов(КонецМесяца(ТекущаяДата()));
ВызватьИсключение "Итоги успешно обновлены";
Для поиска некорректных или битых дат в движении регистра вызовем запрос к журналу проводок:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МИНИМУМ(ЖурналПроводок.Период) КАК МинДата,
| МАКСИМУМ(ЖурналПроводок.Период) КАК МаксДата
|ИЗ
| РегистрБухгалтерии.ЕПСБУ КАК ЖурналПроводок";
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Сообщить("Минимальная дата: " + Строка(Результат.МинДата));
Сообщить("Максимальная дата: " + Строка(Результат.МаксДата));
КонецЕсли;
Если запрос возвращает пустые даты или даты с недопустимыми годами, их необходимо исправить, так как именно они препятствуют правильному сдвигу границы итогов.
В файловом режиме работы информационной базы причиной сбоя могут выступать повреждения внутренних индексов файловой СУБД. Проанализируем технический порядок действий:
1Cv8.1CD).C:\Program Files\1cv8\8.3.X.X\bin) запустим утилиту chkdbfl.exe.Последовательное применение описанных шагов позволяет полностью восстановить корректный пересчет итогов и обеспечить стабильную работу программы.