Почему после обновления Бухгалтерии в марте 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 Бесплатно (free)

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

06.06.2024    7233    Evg-Lylyk    61    

41

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

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

13.03.2024    4248    spyke    28    

48

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

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

13.03.2024    6452    vasilev2015    20    

40

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

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

2 стартмани

15.02.2024    10139    206    ZAOSTG    74    

110

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

Принимать, хранить и анализировать показания счетчиков (метрики) в базе 1С? Почему бы нет? Но это решение быстро привело к проблемам с производительностью при попытках построить какую-то более-менее сложную аналитику. Переход на PostgresSQL только временно решил проблему, т.к. количество записей уже исчислялось десятками миллионов и что-то сложное вычислить на таких объемах за разумное время становилось все сложнее. Кое-что уже практически невозможно. А что будет с производительностью через пару лет - представить страшно. Надо что-то предпринимать! В этой статье поделюсь своим первым опытом применения СУБД Clickhouse от Яндекс. Как работает, что может, как на нее планирую (если планирую) переходить, сравнение скорости работы, оценка производительности через пару лет, пример работы из 1С. Все это приправлено текстами запросов, кодом, алгоритмами выполненных действий и преподнесено вам для ознакомления в этой статье.

1 стартмани

24.01.2024    4375    glassman    17    

39

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

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

09.01.2024    9203    doom2good    49    

70
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ubper 11 05.04.22 13:34 Сейчас в теме
В моей базе на данном релизе проблема не проявляется. Длина уточнения периода равна 0.
2. DBOdin_Lab 104 05.04.22 13:36 Сейчас в теме
У вас "Длина уточнения периода" равна нулю в конфигурации?
3. ubper 11 05.04.22 13:43 Сейчас в теме
Прошу прощения. "Длина уточнения периода" равна 1. И релиз 3.0.108.36. Но проблема не проявляется.
4. DBOdin_Lab 104 05.04.22 13:44 Сейчас в теме
Какая у вас версия платформы?
5. TMV 14 05.04.22 13:52 Сейчас в теме
Любопытно, зачем же оно было добавлено и почему это так негативно влияет на производительность - кто-нибудь в курсе?
6. ubper 11 05.04.22 13:59 Сейчас в теме
7. DBOdin_Lab 104 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 104 07.04.22 09:57 Сейчас в теме
(9) Поддерживать не сложно, 5 минут заняло удаление условий в запросах УточнениеПериода = 0.
В дальнейшем будем проверять новые версии платформы, если увидим решение проблемы, вернёмся к типовому варианту.
11. JohnyDeath 301 08.04.22 09:36 Сейчас в теме
На партнерку или на v8 не писали?
12. DBOdin_Lab 104 08.04.22 09:37 Сейчас в теме
Доступа к партнёрке не имею, в поодержку написал.
JohnyDeath; +1 Ответить
13. JohnyDeath 301 08.04.22 10:26 Сейчас в теме
(12) напишите, пожалуйста, что они ответят на это.
sanjabor; +1 Ответить
14. DBOdin_Lab 104 08.04.22 10:30 Сейчас в теме
21. SergeJohnson 21.04.22 10:18 Сейчас в теме
(14) Ответили что-нибудь?
Может ошибку на bugboard зарегистрировали?
22. DBOdin_Lab 104 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 104 18.04.22 14:15 Сейчас в теме
(16)
ФСБУ 6
Спасибо за информацию! ФСБУ 6 изменяет порядок учета основных средств, правильно?
Получается, в отчете по основным средствам нужно искать использование уточнения периода.
18. MaksIvanov 6 18.04.22 14:32 Сейчас в теме
(17) в том числе, к примеру в ведомости амортизации присутствует запрос в схеме компоновки "МежотчетныйПериодОбороты", да и в целом по конфе поищите по словам "МежотчетныйПериод", там много где. Но в целом, если вы делали переход на ФСБУ 6 по первоначальной методике где предлагалось сделать отчетность,а только потом переходить, или же вообще перешли перспективно, то вам не критично. Если только в дальнейшем еще для чего-то не станут использовать уточнение периода.
19. DBOdin_Lab 104 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 104 13.05.22 10:35 Сейчас в теме
Да, ошибка зарегистирована.
Ссылка: bugboard
31. acsent 1201 08.09.22 09:11 Сейчас в теме
(25) 1с считает это не ошибкой
>>>
Причина неисправления:
Не ошибка. Это проектное поведение, реализованное в задаче Поддержки межотчетного периода.
32. DBOdin_Lab 104 08.09.22 13:20 Сейчас в теме
(31) Вот так решение... И что нам теперь с этим делать?
Так ведь и придется удалять из каждого релиза обращения к УточнениеПериода.
26. zaxarovsky 111 16.08.22 08:32 Сейчас в теме
Вообще странно, что 1С до сих пор не отработало по этой ошибке.
У нас тоже проявляется. Закрытие месяца идет с этим свойством = 1 - 8 часов, с = 0 - 2,5 часа как и ранее.
27. DBOdin_Lab 104 16.08.22 08:36 Сейчас в теме
(26) Да, похоже лица, принимающие решения в 1С не в курсе проблемы.
По сути это свойство не что-то очень необходимое. Без него легко можно обойтись.
28. zaxarovsky 111 16.08.22 14:47 Сейчас в теме
(27) как-то надо поднять рейтинг этой ошибки... только как?
29. DBOdin_Lab 104 16.08.22 14:51 Сейчас в теме
(28) Установить пометку "Для меня исправление ошибки важно" в каталоге ошибок.
30. zaxarovsky 111 16.08.22 15:05 Сейчас в теме
33. DBOdin_Lab 104 22.09.22 17:02 Сейчас в теме
Для нового релиза потребовалось создать расширение, чтобы отключить все места использования межотчетного периода.
Оно здесь https://infostart.ru/public/1731683/
Andreev.a; +1 Ответить
Оставьте свое сообщение