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

22.02.2024

Новые режимы записи подчиненных регистров сведений и регистров накопления

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

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

От разработчиков, использующих наши технологии, мы получаем пожелания об ускорении операций со значительным объемом записей. В версии 8.3.26 мы сделаем доработку, позволяющую ускорить такие операции у ряда регистров.

Новое значение перечисления: РежимЗамещения.Обновление

В методы
РегистрСведенийНаборЗаписей.<Имя регистра сведений>.Записать(<Замещение>)
и
РегистрНакопленийНаборЗаписей.<Имя регистра сведений>.Записать(<Замещение>)  
в качестве параметра Замещение может передаваться одно из значений перечисления РежимЗамещения.

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

Подчиненные регистры сведений и накопления

Для наборов записей подчиненных регистров сведений и регистров накопления у метода Записать(<Замещать>) появляется возможность использовать РежимЗамещения в качестве значения параметра <Замещать>. У метода регистра накопления такая возможность есть (начиная с версии 8.3.25), но разрешено использование только значений РежимЗамещения.Добавление и РежимЗамещения.Замещение. Для метода Записать(<Замещать>) наборов записей подчиненных регистров допустимыми значениями параметра становятся все элементы перечисления РежимЗамещения, кроме Слияние.

Запись набора записей подчиненных регистров сведений и накопления в режимах Обновление и Удаление

Появляется возможность записи набора записей в режиме Обновление и Удаление.

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

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

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

Запись набора записей подчиненных регистров сведений и накопления в режиме Добавление

Появляется возможность записи набора записей в режиме Добавление без установленного отбора по регистратору.

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

Сценарий использования: свертка остатков

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

Используя новую функциональность, процедуру свертки можно значительно ускорить. В общих чертах это выглядит так (подробный пример будет приведен в документации):

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

  • Сформированные новые «интегральные» записи добавляются в набор записей без замещения.

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

 

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

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

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