Почему после обновления Бухгалтерии в марте 2022 года отчеты стали такими медленными

05.04.22

База данных - HighLoad оптимизация

Статья раскрывает причину, почему время формирования отчетов после обновления Бухгалтерии в марте 2022 сильно увеличилось. И рассказывает, как можно исправить ситуацию.

Данная статья относится к конфигурациям 1С:Бухгалтерия (стандартная и КОРП). Возможно, схожие проблемы есть у пользователей Комплексной автоматизации.

В марте 2022 года мы установили обновление конфигурации Бухгалтерия КОРП. Мы обратили внимание на длительную реструктуризацию базы данных, и связали её большей частью с повышением версии совместимости конфигурации с платформой до версии 8.3.16. Но, оказалось, это было не самое главное изменение.

Вскоре после установки обновления наши пользователи стали сигнализировать нам, что время формирования отчетов Оборотно-сальдовая ведомость (по счету) стало катастрофически большим. Например, ОСВ за прошлый год формировалась полчаса, при том, что раньше это происходило за несколько секунд.

Для информации, наша информационная база имеет размер около 1 Тбайт, и изображения в самой базе мы не храним.

Мы подумали сначала, что это произошло из сильной фрагментации индексов после обновления. Сразу скажу, что это оказалось не так. Поглядев на планы исполнения запросов СУБД MS SQL SERVER 2019 я искренне удивился, если не сказать больше.
Вместо ожидаемого получения оборотов из таблиц хранимых итогов, я увидел суммирование всех проводок регистра бухгалтерии для получения оборотов за период.

Что-то мешало системе получать данные итогов!

У нас версия платформы в тот момент была рекомендуемой - 8.3.18.1741, поэтому платформу обновлять я не хотел.
Я продолжил изучение проблемы на этой версии платформы.

Для начала я проверил, включены ли итоги, где находятся минимальные и максимальные границы, но все было в норме.
Еще раз изучив план исполнения запроса в СУБД я обратил внимание, что добавилось условие по новому полю PeriodAdjustment, причем очень плохое условие, через OR. Получалось, что сравнивается Period и PeriodAdjustment.

В языке запросов 1С PeriodAdjustment представлен полем УточнениеПериода. Поиск по этому полю в конфигурации не дал результата, в запросе отчета 1С не было условий по этому полю, а было условие только по полю Период в параметрах виртуальной таблицы ОстаткиИОбороты.

И тут до меня дошло! Платформа неправильно работает с итогами (оборотами) в случае наличия в регистре бухгалтерии дополнительного поля УточнениеПериода.

Вот оно главное изменение, влияющее на производительность! В свойствах регистра бухгалтерии Хозрасчетный увеличили значение Длина уточнения периода на единицу. В таблицы регистра в СУБД были добавлены поля PeriodAdjustment, но не во все таблицы, а только в основную и значений субконто. В таблицы итогов поле PeriodAdjustment не добавилось.

Так как у нас проведение и закрытие месяца после обновления замедлилось в 15 раз, а объем проводимых документов в месяц превышает 300 тысяч, нам надо было срочно что-то делать!

Единственное, что спасало нашу производительность, это использование расширения Оперативное проведение документов, которое сокращает использование получения оборотов при проведении.

Для проверки я установил значение свойства Длина уточнения периода равным 0.
После длительной оптимизированной реструктуризации (V2) я проверил формирование отчетов ОСВ. Они снова стали формироваться за секунды.

Теперь я начал думать как справиться с проблемой уже в рабочей системе. Для начала я проверил работу в более новой версии платформы - 8.3.20.1710. Результат так же был плачевный.

Все упоминания в конфигурации УточнениеПериода сводились к условиям: УточнениеПериода = 0.
Значит, по крайней мере в версии Бухгалтерии 3.0.108.31, реальное использование возможности уточнения периода еще не началось. За пять минут удалось удалить все упоминания УточнениеПериода из конфигурации.

В итоге нами было принято решение обнулить УточнениеПериода в продуктовой системе и удалить все использования поля УточнениеПериода в запросах. Что мы и сделали, и нам пока не пришлось сожалеть об этом.

Уточнение периода Длина уточнения регистр Бухгалтерии

См. также

Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    3692    spyke    28    

47

Быстродействие типовой 1С

HighLoad оптимизация Платформа 1С v8.3 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    5693    vasilev2015    19    

38

Анализируем SQL сервер глазами 1С-ника

HighLoad оптимизация Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих зааросов на sql, ожиданий, конвертация запроса в 1с и рекомендации где может тормозить

1 стартмани

15.02.2024    8643    171    ZAOSTG    74    

104

Удаление строк из таблицы значений различными способами с замером производительности

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    6974    doom2good    49    

65

Опыт оптимизации 1С на PostgreSQL

HighLoad оптимизация Бесплатно (free)

При переводе типовой конфигурации 1C ERP/УТ/КА на PostgreSQL придется вложить ресурсы в доработку и оптимизацию запросов. Расскажем, на что обратить внимание при потерях производительности и какие инструменты/подходы помогут расследовать проблемы после перехода.

20.11.2023    9720    ivanov660    6    

76

ТОП проблем/задач у владельцев КОРП лицензий 1С на основе опыта РКЛ

HighLoad оптимизация Бесплатно (free)

Казалось бы, КОРП-системы должны быть устойчивы, быстры и надёжны. Но, работая в рамках РКЛ, мы видим немного другую картину. Об основных болевых точках КОРП-систем и подходах к их решению пойдет речь в статье.

15.11.2023    5493    a.doroshkevich    20    

72

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16820    skovpin_sa    14    

101
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ubper 11 05.04.22 13:34 Сейчас в теме
В моей базе на данном релизе проблема не проявляется. Длина уточнения периода равна 0.
2. DBOdin_Lab 100 05.04.22 13:36 Сейчас в теме
У вас "Длина уточнения периода" равна нулю в конфигурации?
3. ubper 11 05.04.22 13:43 Сейчас в теме
Прошу прощения. "Длина уточнения периода" равна 1. И релиз 3.0.108.36. Но проблема не проявляется.
4. DBOdin_Lab 100 05.04.22 13:44 Сейчас в теме
Какая у вас версия платформы?
5. TMV 14 05.04.22 13:52 Сейчас в теме
Любопытно, зачем же оно было добавлено и почему это так негативно влияет на производительность - кто-нибудь в курсе?
6. ubper 11 05.04.22 13:59 Сейчас в теме
7. DBOdin_Lab 100 05.04.22 14:02 Сейчас в теме
(6) Возможно, у вас не так много проводок за выбранный период, чтобы заметить разницу. Еще зависит от попадания этих данных в кэш СУБД.
Попробуйте увеличить период и вывести ОСВ по всем счетам.
8. EliasShy 48 06.04.22 07:27 Сейчас в теме
У нас пока проявилась ошибка платформы при работе с итогами (8.3.20.1674).
Проявляется при нестандартных настройках Анализа счета

Указанная автором проблема в ОСВ пока миновала.
9. pstrig 07.04.22 09:54 Сейчас в теме
Жесткое решение. А как его поддерживать потом?
10. DBOdin_Lab 100 07.04.22 09:57 Сейчас в теме
(9) Поддерживать не сложно, 5 минут заняло удаление условий в запросах УточнениеПериода = 0.
В дальнейшем будем проверять новые версии платформы, если увидим решение проблемы, вернёмся к типовому варианту.
11. JohnyDeath 301 08.04.22 09:36 Сейчас в теме
На партнерку или на v8 не писали?
12. DBOdin_Lab 100 08.04.22 09:37 Сейчас в теме
Доступа к партнёрке не имею, в поодержку написал.
JohnyDeath; +1 Ответить
13. JohnyDeath 301 08.04.22 10:26 Сейчас в теме
(12) напишите, пожалуйста, что они ответят на это.
sanjabor; +1 Ответить
14. DBOdin_Lab 100 08.04.22 10:30 Сейчас в теме
21. SergeJohnson 21.04.22 10:18 Сейчас в теме
(14) Ответили что-нибудь?
Может ошибку на bugboard зарегистрировали?
22. DBOdin_Lab 100 21.04.22 10:19 Сейчас в теме
(21) Пока не зарегистрировали. Ответ пока формальный.
23. SergeJohnson 27.04.22 13:49 Сейчас в теме
(22) А можете хотя бы код обращения указать? если это не секрет)
24. Rusbread 13.05.22 10:18 Сейчас в теме
(21) Зарегистрировал ошибку на bugboard, Код ошибки: 10238696
15. sanjabor 17 08.04.22 17:42 Сейчас в теме
Жесть, уже страшно обновлять. После прошлого обновления на 3.0.106 вынуждены были перейти с 8.3.17 на 8.3.19.1467, документы стали проводиться примерно в 2 раза медленнее. К счастью, переход на 8.3.20.1710 вернул скорость на место.
akR00b; it-expertise; +2 Ответить
16. MaksIvanov 6 18.04.22 14:05 Сейчас в теме
Уточнение периода "1" появилось если не ошибаюсь в одном из 106 релизов, в декабре 2021-январе 2022, сделано это для того, чтобы корректно отразить ретроспективный переход на ФСБУ 6 с 2022 года, чтобы отчетность за 2021 формировалась без учета проводок по переходу на ФСБУ 6, а входящий остаток в 2022 был уже с учетом этих проводок.
AleksAaron; +1 Ответить
17. DBOdin_Lab 100 18.04.22 14:15 Сейчас в теме
(16)
ФСБУ 6
Спасибо за информацию! ФСБУ 6 изменяет порядок учета основных средств, правильно?
Получается, в отчете по основным средствам нужно искать использование уточнения периода.
18. MaksIvanov 6 18.04.22 14:32 Сейчас в теме
(17) в том числе, к примеру в ведомости амортизации присутствует запрос в схеме компоновки "МежотчетныйПериодОбороты", да и в целом по конфе поищите по словам "МежотчетныйПериод", там много где. Но в целом, если вы делали переход на ФСБУ 6 по первоначальной методике где предлагалось сделать отчетность,а только потом переходить, или же вообще перешли перспективно, то вам не критично. Если только в дальнейшем еще для чего-то не станут использовать уточнение периода.
19. DBOdin_Lab 100 18.04.22 14:58 Сейчас в теме
Поиск по словам "МежотчетныйПериод" привел к модулю РасчетИмущественныхНалоговБП, процедуре ДобавитьТекстЗапросаСтоимостьИАмортизация, в которой есть комментарии разработчика:
// Оборотами межотчетного периода признаются обороты 31.12 23:59:59 с корреспонденциями:
// 01.03 - 84.01 (Переход на ФСБУ 25)
// 01.03 - 76.х7.1 (Переход на ФСБУ 25)
// 02 - 84.01 (Переход на ФСБУ 6, корректировка амортизации)
// 01.09 -01 (Переход на ФСБУ 6, перевод в малоценное оборудование)
// 02 - 01.09 (Переход на ФСБУ 6, перевод в малоценное оборудование)

Собственно, использования уточнения периода в запросе нет.
В отчете ВедомостьАмортизацииОСБухгалтерскийУчет так же использования нет.
Получается, разработчики здесь так же не использовали новый реквизит, обошлись исключением оборотов последней секунды года.
Andreev.a; Perk0n; +2 Ответить
20. akR00b 22 19.04.22 16:55 Сейчас в теме
Отличный кейс, немного бы изображений как и где нашли истину.
25. DBOdin_Lab 100 13.05.22 10:35 Сейчас в теме
Да, ошибка зарегистирована.
Ссылка: bugboard
31. acsent 1200 08.09.22 09:11 Сейчас в теме
(25) 1с считает это не ошибкой
>>>
Причина неисправления:
Не ошибка. Это проектное поведение, реализованное в задаче Поддержки межотчетного периода.
32. DBOdin_Lab 100 08.09.22 13:20 Сейчас в теме
(31) Вот так решение... И что нам теперь с этим делать?
Так ведь и придется удалять из каждого релиза обращения к УточнениеПериода.
26. zaxarovsky 111 16.08.22 08:32 Сейчас в теме
Вообще странно, что 1С до сих пор не отработало по этой ошибке.
У нас тоже проявляется. Закрытие месяца идет с этим свойством = 1 - 8 часов, с = 0 - 2,5 часа как и ранее.
27. DBOdin_Lab 100 16.08.22 08:36 Сейчас в теме
(26) Да, похоже лица, принимающие решения в 1С не в курсе проблемы.
По сути это свойство не что-то очень необходимое. Без него легко можно обойтись.
28. zaxarovsky 111 16.08.22 14:47 Сейчас в теме
(27) как-то надо поднять рейтинг этой ошибки... только как?
29. DBOdin_Lab 100 16.08.22 14:51 Сейчас в теме
(28) Установить пометку "Для меня исправление ошибки важно" в каталоге ошибок.
30. zaxarovsky 111 16.08.22 15:05 Сейчас в теме
33. DBOdin_Lab 100 22.09.22 17:02 Сейчас в теме
Для нового релиза потребовалось создать расширение, чтобы отключить все места использования межотчетного периода.
Оно здесь https://infostart.ru/public/1731683/
Andreev.a; +1 Ответить
Оставьте свое сообщение