#std708

Разрешение итогов для периодических регистров сведений

1.1.

Для периодических регистров сведений рекомендуется разрешать итоги, если одновременно выполняются все условия:

  • в регистре ожидается большой объем данных (например, это оправдано для регистра цен номенклатуры, но обычно не имеет смысла для регистра курсов валют);
  • в конфигурации есть частотные запросы к СрезПоследних на текущий момент и/или СрезПервых для получения актуальных данных (без задания периода в параметрах виртуальных таблиц);
  • остальные условия для СрезПервых и СрезПоследних задаются только по измерениям и разделителям в режиме Независимо и совместно;
  • в ограничениях доступа к данным регистра используются только измерения и разделители в режиме Независимо и совместно.

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

Пример

Частотный запрос к регистру ЦеныНоменклатуры для получения текущих цен:

ВЫБРАТЬ
    Номенклатура.Артикул КАК Артикул,
    ЦеныНоменклатуры.Цена КАК Цена,
    ...
ИЗ
    Справочник.Номенклатура КАК Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатуры
        ПО ЦеныНоменклатуры.Номенклатура = Номенклатура.Ссылка
    ...

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

1.2.

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

Пример: если иногда данные в регистр ЦеныНоменклатуры записываются будущей датой, а в форме подбора всегда выполняется запрос к СрезПоследних с явно заданной текущей датой, итоги такой запрос не ускорят.

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

2.

Во всех остальных случаях итоги для периодических регистров сведений разрешать не следует. В первую очередь, если:

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

Пример

ВЫБРАТЬ
    ...
ИЗ
    РегистрСведений.КурсыВалют.СрезПоследних(, Валюта.Код = &КодВалютыСклада) КАК КурсыВалют
3.

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

Исключение: случаи, когда актуализация итогов при записи была отключена вызовом РегистрСведенийМенеджер.УстановитьИспользованиеИтогов(Ложь).

Источник

https://its.1c.ru/db/v8std#content:708