January 5, 2022

Итоги - продолжение

Внимательный читатель прошлой заметки задаст вопрос: если часть итоговых данных какого-либо регистра удалено, то как теперь использовать стандартный пересчет?

Дело в том, что размер описываемой базы немаленький и стандартный пересчет итогов и так не заканчивался за вменяемое время. Поэтому я пересчитываю не по всем регистрам, а только по какому-нибудь одному, где итоги реально сломались (конечный остаток одного периода не равен начальному остатку следующего).

На файловой 1С 7.7 это можно сделать с помощью такого лайфхака:

  1. После завершения работы пользователей делаем копию базы для манипуляций
  2. Удаляем все индексы
  3. Удаляем все файлы итогов (RG)
  4. Удаляем все файлы движений (RA), кроме файла итоги которого нужно пересчитать
  5. Запускаем режим 1С:Предприятия - создадутся пустые файлы вместо удаленных и индексы
  6. Запускаем пересчет итогов
  7. Копируем пересчитанный файл итогов (RG) вместе с индексом в рабочую базу

Если же сломается именно тот регистр у которого удалены старые итоги, то после его пересчета в копии, надо будет удалить старые данные снова. В самом крайнем случае, если пересчет все-таки упадет из-за размера, можно будет для манипуляций в копии временно использовать SQL, а в рабочую базу вернуть снова обрезанный файл.

Почти любую проблему можно решить, надо только понимать внутреннее устройство рассматриваемого предмета и не бояться пробовать.

←9 | заметка 10 | 11→