Заметки из Зазеркалья

11.09.2023

Улучшения производительности при использовании регистров сведений

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Планируется в версии 8.3.25

Анализируя производительность платформы 1С:Предприятия в различных сценариях, а также изучая отзывы партнеров и пользователей наших продуктов, мы нашли пути оптимизации работы сценариев, связанных с использованием регистров сведений (в частности, распределение запасов и оперативное планирование производства).

В версии 8.3.25 будут предложены дополнительные режимы при записи наборов записей независимых регистров сведений.

На текущий момент, единственный параметр метода Записать(<Замещение>) регистра сведений может принимать значение типа Булево. В версии 8.3.25 он сможет также принимать значение нового перечисления РежимЗамещения / ReplacementMode:

  • Добавление / Append

  • Замещение / Replace

  • Слияние / Merge

  • Удаление / Delete

Значение параметра Замещение равное Ложь функционально эквивалентно РежимЗамещения.Добавление, а значение Истина – РежимЗамещения.Замещение.

Значения параметров РежимЗамещения.Слияние и РежимЗамещения.Удаление допустимы только для независимого регистра сведений. При попытке использовать эти значения для регистра сведений, подчиненного регистратору будет выброшено исключение.

При использовании в качестве значения параметра РежимЗамещения.Слияние все записи из набора записей записываются в основную таблицу регистра сведений. Если в регистре уже есть записи с совпадающими значениями ключевых полей (период, измерения, разделители), то такие записи обновляются, остальные записи набора просто добавляются в регистр.

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

Отдельно следует упомянуть про использование отбора при записи набора записей в режимах РежимЗамещения.Слияние и РежимЗамещения.Удаление. Множество добавляемых/обновляемых/удаляемых записей регистра в этих режимах определяется исключительно записями, присутствующими в наборе записей. Но при этом все равно проверяется соответствие установленному отбору, что может привести к ошибке, если какая-либо из записей не соответствует отбору. Поэтому при записи набора записей в режимах РежимЗамещения.Слияние и РежимЗамещения.Удаление отбор лучше всего не устанавливать вовсе.

При развитии существующих прикладных решений мы рекомендуем рассмотреть вариант использования новых возможностей независимых регистров сведений для улучшения производительности.

Мы планируем развитие этой функциональности в следующей версии.

Теги: 8.3.25  разработка 

Рассказать друзьям: