Почему после обновления Бухгалтерии в марте 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, реальное использование возможности уточнения периода еще не началось. За пять минут удалось удалить все упоминания УточнениеПериода из конфигурации.

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

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

См. также

Как эффективно настроить autovacuum в Postgres для 1С

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

Кто не любит убирать мусор? Думаю, практически все, а вот в Postgres это обязательный ритуал для эффективной работы. Как эффективно настроить уборку за 1С в Postgres, можно прочитать в этой статье и еще раз задуматься о бесплатности Postgres.

05.08.2023    3530    1CUnlimited    4    

43

MS SQL Server: изучаем планы запросов

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

Многие знают, что для ускорения работы запроса нужно «изучить план». При этом сам план обычно обескураживает: куча разноцветных иконок и стрелочек; ничего не понятно, но очень интересно! Аналитик производительности Александр Денисов на конференции Infostart Event 2021 Moscow Premiere рассказал, как выполняется план запроса и что нужно сделать, чтобы с его помощью находить проблемы производительности.

20.06.2023    7888    Филин    37    

93

Простой способ проверки быстродействия

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

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

10.04.2023    3059    vkrivov@yandex.ru    15    

36

Пример многопоточной обработки (БСП)

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

Обработка-шаблон, на основе которой можно делать свои многопоточные обработки данных для конфигураций на БСП.

13.02.2023    7625    6    echo77    8    

83

Нагрузочное тестирование в 1С:ERP

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

Для того чтобы еще до внедрения информационной системы убедиться, что целевая система справится с ожидаемой нагрузкой, требуется провести нагрузочное тестирование. О том какие инструменты и методики помогут организовать подобный проект при внедрении 1С:ERP, и о том, какие неожиданные факторы могут влиять на производительность системы я и хотел бы рассказать в данной статье.

02.11.2022    5233    Tavalik    23    

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