Поставили задачу программно генерировать номенклатуру. В ходе работы обратил внимание на медленную работу при пакетной записи элементов номенклатуры. Причина оказалась в общем модуле УчетПрослеживаемыхТоваровЛокализация. При каждой записи номенклатуры выполняется запрос, обрабатывающий весь справочник номенклатуры.
Я у себя просто убрал выполнение этого кода, и запись 4 позиций номенклатуры вместо 24 секунд стала выполняться за 2.
Какие вижу пути оптимизации:
- Если у вас нет прослеживаемых товаров, то можно просто закомментировать этот код.
- Добавить некую переменную - семафор. У нас для этих целей служит собственный справочник с предопределенными элементами. Выполнять медленную часть кода зависимости от значения в переменной. Перед пакетной записью выставлять нужное значение переменной, а после снимать.
- Перенести функционал процедуры в фоновую задачу.
- Ваши решения.