Цели и задачи
Оптимизация проведения документов
Обращения к физическим таблицам
Обращения к физическим таблицам
Обращения к физическим таблицам
Решение проблемы
Необходимость выполнения запроса
Необходимость выполнения запросов
Изменения в конфигурации
Изменения в конфигурации
Изменения в конфигурации
Изменения в конфигурации
Оценка производительности
Оценка производительности
Оценка производительности
Оценка производительности
Оптимизация расчета курсовых разниц по взаиморасчетам
Прочие задачи оптимизации

1C:ERP Управление предприятием. Оптимизация ERP 2.5.13

1.

1C:ERP Управление предприятием
Оптимизация ERP 2.5.13

2. Цели и задачи

Оптимизация проведения документов
Оптимизация расчета курсовых разниц (перенесено так же в 2.5.12)
Удаление устаревших обработчиков обновления
Оптимизация механизма «Исправление документов»
Оптимизация запросов контролей
Оптимизация журналов, работающих на регистре сведений «Реестр
документов»

3. Оптимизация проведения документов

В модулях менеджера документов, в функции «ДанныеДокументаДляПроведения», содержится
перечень методов, возвращающих тексты запросов данных, необходимых для проведения документа по
регистрам учетных механизмов. В данных методах есть следующие неоптимальности:
У большинства запросов идет повторное обращение к физическим таблицам, к примеру,
Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары
В текстах запросов многократно получаются дополнительные данные из полей документа, например
Товары.Номенклатура.ВидНоменклатуры
ЭтапыГрафикаОплаты.ОбъектРасчетов.Организация
В методах с текстами запросов отсутствует проверка на необходимость выполнения этих текстов
запроса при проведении одного документа.
В зависимости от заполнения документа данными, часть запросов будут содержать пустой результат выполнения. К примеру,
в тексте запроса в секции «ГДЕ» есть проверка условия на значения реквизитов «Статус» и «Хозяйственная операция»: для
одного экземпляра документа запрос всегда вернет результат, а для другого результат выполнения запроса всегда будет
пустым, при этом запрос в любом случае будет выполняться, и на его выполнение будут тратиться системные ресурсы.
В текстах проведения производятся группировки результатов, не влияющих на количество записей, но
замедляющие запросы данных
3

4. Обращения к физическим таблицам

У большинства запросов идет обращение к физическим таблицам
4

5. Обращения к физическим таблицам

В начале функции «ДанныеДокументаДляПроведения» модуля менеджера документа выполнить запросы к шапке
документа и его табличным частям, результат выполнения поместить во временные таблицы. В последующих
пакетах запросов обращаться не к физическим таблицам, а к созданным временным таблицам.

6. Обращения к физическим таблицам

В начале функции «ДанныеДокументаДляПроведения» модуля менеджера документа выполнить запросы к шапке
документа и его табличным частям, результат выполнения поместить во временные таблицы. В последующих
пакетах запросов обращаться не к физическим таблицам, а к созданным временным таблицам.
Помещение результата запроса к табличной части
во временную таблицу
Замена обращения к физической таблице табличной части документа
на обращение к временной таблице

7. Решение проблемы

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

8. Необходимость выполнения запроса

В процедурах и функциях с тексами запросов отсутствует проверка на необходимость
выполнения пакета запроса
В данном примере результат запроса будет пустым,
но запрос будет выполняться в любом случае
8

9. Необходимость выполнения запросов

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

10. Изменения в конфигурации

В модуль менеджера документа необходимо добавить новую процедуру «ПолучитьДанныеДокумента»,
содержащую в себе запросы обращения к физическим таблицам: шапке документа и всем табличным частям с
целью формирования временных таблиц.

11. Изменения в конфигурации

В модуле менеджера документа , в функции «ДанныеДокументаДляПроведения», прописать обращение к
процедуре «ПолучитьДанныеДокумента».

12. Изменения в конфигурации

В текстах запросов, обращение к которым осуществляется из функции «ДанныеДокументаДляПроведения»,
заменить обращение к физическим таблицам на обращение к подготовленным временным.

13. Изменения в конфигурации

В процедуры и функции, формирующие тексты запросов для последующего их выполнения, добавляется проверка
на попадание значений реквизитов документа в условия выборки.
В функцию «ДанныеДокументаДляПроведения» добавляется новая переменная ДокументОбъект, благодаря
которой и осуществляется проверка на значения заполнения реквизитов документа.

14. Оценка производительности

Конфигурация: 1С:ERP Управление предприятием 2, версия 2.5.12.53 – демо-версия
Замеры осуществлялись на конфигурации без нагрузки и под полными правами
Релиз платформы: 1С:Предприятие 8.3 (8.3.21.1775)
Замеры выполнялись на MS SQL SERVER 2017 и POSTGRESQL 15.1
Сценарий
Замер производился по двум типам документов: Реализация товаров и услуг и Приобретение товаров и услуг.
Для каждого типа отбиралось по 4 документа с различными видами хоз.операций.
Сначала проводился документ без замера - «прогревался» кэш.
Затем было выполнено 5 проведений подряд каждого из документов, получено время выполнения пакетов запросов,
найдено среднее время выполнения.

15. Оценка производительности

Результаты замеров выполнения пакетов запросов документа «Реализация товаров и услуг»

16. Оценка производительности

Результаты замеров выполнения пакетов запросов документа «Приобретение товаров и услуг»

17. Оценка производительности

Результаты замеров выполнения проведения документов
«Реализация товаров и услуг», «Приобретение товаров и услуг»
(данные получены с использованием подсистемы «Оценка производительности»)

18. Оптимизация расчета курсовых разниц по взаиморасчетам

Механизм пересчета курсовых разниц в закрытии месяца производил запрос
в цикле по кортежам аналитики взаиморасчетов с партнерами и
регистраторам расчетов
Запрос переделан на единую выборку картежей для переформирования.
Сокращение времени выполнения операции составило в среднем 50%
Протестировано на большой базе пилотного клиента.

19. Прочие задачи оптимизации

Ускорено время открытия форм документов на 0,2 сек за счет оптимизации механизма
поиска исправлений документа (если соответствующая ФО включена).
Удалены обработчики обновления на версию 2.5.12 и ниже
В запросе контроля заказов исправлено соединение с полем составного типа.
Устранена ошибка взаимоблокировки регистров «ТоварыНаСкладах» и
«ТоварыОрганизаций» при проведении складских документов. Так же сокращено время
проведения, уходящее на установку блокировок.
Исправлена ошибка долгого открытия формы элемента справочника «Основные
средства» на Postgres
Исправлен медленный запрос заполнения суммы взаиморасчетов в табличных частях.
В текстах запросов динамических списков журналов документов удалено условие
«ИЛИ» в секции «ГДЕ»
English     Русский Правила