Найти тему
АиБ Цифровизация

Скорость 1С. Как оптимизировать производительность 1С. Часть 2.

Ранее в статье «Cкорость 1С. Как оптимизировать производительность 1C». Мы рассмотрели несколько вариантов, как оптимизировать 1С. Там мы писали, что одно из направлений оптимизации – это выявление и устранение неоптимальных участков конфигурации и оптимизация запросов (что особенно критично при переходе на СУБД Postgree).

Рассмотрим подробнее:

1) Запросы в цикле

Почему плохо: Каждый запрос внутри цикла - это обращение к базе данных, и занимает определенное время на выполнение. Итоговое время выполнения равно времени выполнения одного запроса, умноженное на количество итераций цикла.

Как правильно: Необходимо выполнить один общий запрос данных, и в цикле оперировать полученными данными.

2) Запрос в цикле неявный

При обращении к реквизитам ссылки через точку выполняется такое же обращение к базе данных, как при цикле в п.1. Еще один пример неявных запросов в цикле, когда в цикле вызывается какая-то процедура или функция, внутри которой выполняется запрос.

-2

3) Виртуальные таблицы

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

-3

4) Отбор по измерениям

Отбор по измерениям необходимо накладывать в секции параметров виртуальной таблицы, а не в секции ГДЕ, так как при выполнении запроса сначала формируется виртуальная таблица по заданным параметрам, а уже потом выполняется отбор по условиям, указанным в секции ГДЕ.

-4

5) Разыменовывание ссылочных полей составного типа

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

Для оптимизации следует выражать необходимый тип из составного при помощи оператора ВЫРАЗИТЬ(), например ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПриобретениеТоваровУслуг).Номер

-5

6) Соединение с вложенными запросами

Не следует использовать в запросах соединение с вложенными запросами, так как это может привести к замедлению выполнения запроса. При необходимости, следует использовать временные таблицы вместо вложенных запросов.

-6

7) Отсутствие индексов или несоответствующие индексы

При выполнении условий, указанных в запросе (условия в секциях ГДЕ, ИМЕЮЩИЕ, условия соединения таблиц, условия в параметрах виртуальных таблиц) СУБД проверяет наличие подходящих индексов, и если их не находит, выполняет полное сканирование таблицы. Это приводит к увеличению времени выполнения запросов.

Подходящим будет индекс, который:

содержит все поля из условия;

поля из условия идут с начала индекса и подряд (без вхождения полей не участвующих в условии).

Часть индексов 1с создает автоматически, но в некоторых случаях их недостаточно, и необходимо устанавливать дополнительные индексы на реквизиты объектов.

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

Примеры как ставить индексы, из типовой 1С:ERP:

-7
-8

Если у Вас есть вопросы – задайте их на нашем сайте, или в VK. Мы обязательно ответим.

-9

Другие интересные статьи по теме внедрения «1С:ERP», «1С:УХ», «1С:ЗУП» и других продуктов «1С»

➡️ Проблемы перехода с иностранной ERP на «1С:ERP»

➡️ Внедрить «1С:ERP» для регламентированного и раздельного учёта (по ГОЗ) без запуска системы в производстве

➡️ Зарплата в ГОЗ: делимся лайфхаками

➡️ Тормозит 1С. В чём проблема?

➡️ Что нужно предприятию: WMS или «1С:Склад»?

➡️ В 1С:УХ нет «Заявки»

➡️ Как считать себестоимость, когда элемент сбора затрат – это единица техники?

-10

☎️ Мы на связи: +7 (495) 120-40-02

➡️https://aibcifra.ru/

➡️https://t.me/aibcifra/

➡️https://vk.com/aibcifra/

➡️https://dzen.ru/aibcifra/

➡️https://rutube.ru/channel/429892/

➡️https://www.youtube.com/@chestno_pro_1C_ERP/

---------

#аибцифровизация #скорость1С #повыситьскорость1С #оптимизироватьпроизводительность1С