Similar presentations:
1C:ERP Управление предприятием. Оптимизация времени обработки строк в табличных частях
1.
1C:ERP Управление предприятиемОптимизация времени обработки
строк в табличных частях
2. Что улучшено
Значительно ускорено время интерактивных операций в документах, обработках,общих формах, содержащих большое количество строк в табличных частях.
Наиболее часто используемые сценарии:
Запись/проведение/открытие документов
Создание копированием документов
Ввод на основании
Загрузка строк из табличного документа в табличную часть документа
Вставка строк из буфера обмена
Подбор товаров
Заполнение цен/скидок/бонусов
Интеграция с маркетплейсами
Подбор товаров из других документов (в реализацию из заказа, документы производства по
спецификации)
Обработка табличной части при изменении ключевых реквизитов шапки (тип налогообложения,
соглашения с партнером)
Заполнение по входящим данным, например загрузка данных из ТСД
Обработка строк по нераспределённым остаткам (на складах, зарезервированный товар)
Изменение ключевых реквизитов в шапке документа (дата, соглашение налогообложение и
прочие)
2
3. Примеры уменьшения времени. Открытие документов.
Приобретение товаров и услугЗаказ переработчику 2.5
Отчет переработчика 2.5
Заказ поставщику
3
4. Примеры уменьшения времени
Заполнение выпуска по спецификации.Производство без заказа
Заполнение материалов и услуг по
спецификации. Производство без заказа
Заполнение товаров в возврат поставщику по
данным закупки
Изменение реквизита Налогообложение в шапке.
Акт выполненных работ
4
5. Примеры уменьшения времени
Загрузка данных из внешнего табличного документа.Заказ клиента
Заполнение таблицы в форме загрузки товаров из
внешних файлов
Вставка строк из буфера обмена. Заказ на
перемещение товаров
Загрузка данных из ТСД в РТУ
5
6. Что было сделано
Ускорение достигнуто в результате:Как было ранее:
При интерактивных операция, требующих обработки строк открывался цикл внутри которого для каждой строки
вызывался метод ОбработкаТабличнойЧасти.ОбработатьСтрокуТЧ
При этом зачастую внутри этого цикла формировался список действий над строкой, эти действия могли
содержать разного рода параметры.
Далее уже внутри ОбработкаТабличнойЧасти.ОбработатьСтрокуТЧ вызывались более 200 методов, которые
внутри себя проверяли, нужно ли делать определённое действие или нет, так же действие могло приводить к
тяжелым запросам в цикле.
Это приводило к большому количеству строк исполняемого кода и генерации запросов в количестве число строк
* число действий с запросами
Как стало:
В месте вызова обработки строк из цикла вынесен статичный код, не относящийся к текущей строке, например
формирование списка действий над строкой.
Внутри цикла наполняется массив строк к обработке.
Механизм пакетной обработки строк вызывается за циклом.
Для каждого действия составлено соответствие между названием действия и методом, который его выполняет.
По обрабатываемой коллекции строк формируется временная таблица.
Для действий, требующих выполнения запроса в базе данных, написан запрос, который получает данные сразу по
всем строкам из временной таблицы. Запросы объединены в пакет.
Из методов обработки строк удалён весь лишний код: проверка на необходимость выполнения, код подготовки и
выполнения запроса. Добавлен код, обращающийся к кэшу, который содержит в себе результаты запросов.
Формируется блок кода, содержащий в себе необходимые методы обработки строк, растиражированный по
количеству обрабатываемых строк в табличной части.
Для зависимых действий над строкой реализована очередь.
6
7. Результаты
Ускорение достигнуто в результате:Значительного уменьшения количества запросов к базе данных
Сокращения количества строк исполняемого прикладного кода в среднем в 2 раза
Использования механизма кэширования данных.
Показатели ускорения
При небольшом количестве строк, до 100, ускорение в среднем составляет 2-5 раз.
При большом количестве, 100 - 1000 строк и выше, ускорение может быть десятикратным и выше.
7
software