Дозвіл підсумків для періодичних регістрів відомостей
<em>Область застосування: керований застосунок, мобільний застосунок, звичайний застосунок.</em>
Область застосування: керований застосунок, мобільний застосунок, звичайний застосунок.
Методична рекомендація (корисна порада)
1.1. Для періодичних регістрів відомостей рекомендується дозволити підсумки, якщо виконано всі наступні умови:
- у регістрі очікується великий обсяг даних (наприклад, виправдано для регістру з цінами номенклатури; але не має сенсу для регістру з курсами валют);
- у конфігурації передбачено часті запити до зрізів останніх на поточний момент часу та/або до зрізів перших для отримання актуальних даних (тобто коли не задано період у параметрах віртуальних таблиць СрезПервых і СрезПоследних);
- при цьому інші умови для віртуальних таблиць СрезПервых і СрезПоследних задаються лише на значення вимірів (і роздільників, що перебувають у режимі Незалежно і спільно);
- в обмеженнях доступу до даних регістру використовуються лише виміри (і роздільники, що перебувають у режимі Незалежно і спільно).
Повний список усіх умов, коли в запитах задіюються підсумки регістру відомостей, див. у документації до платформи 1С:Підприємство.
Наприклад, якщо в конфігурації передбачено часто виконувані запити до регістру ЦеныНоменклатуры для отримання поточних цін номенклатури:
ВИБРАТИ Номенклатура.Артикул ЯК Артикул, ЦеныНоменклатуры.Цена ЯК Цена, ... З Довідник.Номенклатура ЯК Номенклатура ЛІВЕ З'ЄДНАННЯ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) ЯК ЦеныНоменклатуры ПО ЦеныНоменклатуры.Номенклатура = Номенклатура.Посилання ...
то за дотримання всіх інших умов, перелічених вище, встановлення властивості Дозволити підсумки: зріз останніх істотно прискорить виконання таких запитів за рахунок того, що вибірка виконуватиметься безпосередньо з додаткових таблиць, у яких зберігаються лише останні значення (для зрізу останніх) і перші значення (для зрізу перших).
1.2. Крім того, слід розглянути альтернативні варіанти перегляду запитів до регістру таким чином, щоб ці умови виконувалися.
Наприклад, якщо в деяких випадках дані до регістру ЦеныНоменклатуры записуються майбутньою датою, а під час добору товарів до цього регістру виконується запит завжди на поточну дату (дату явно задано в параметрі віртуальної таблиці СрезПоследних), то підсумки не прискорюватимуть виконання таких запитів. Оскільки підсумки будуються лише для перших і останніх записів регістру.
Однак якщо під час відкриття форми добору товарів аналізувати, чи є реєстратори з майбутньою датою, і якщо їх немає — виконувати інший запит до зрізу останніх без встановлення дати, то такий запит працюватиме швидше.
2. В усіх інших випадках не слід дозволяти підсумки для періодичних регістрів відомостей. Насамперед, якщо
- найчастіше (завжди) до віртуальних таблиць зрізу перших/останніх періодичного регістру відомостей виконуються запити на конкретний період (наприклад, на дату документа).
- в умовах для віртуальних таблиць СрезПервых і СрезПоследних найчастіше (завжди) використовуються підзапити та з'єднання (звернення «через крапку» до полів пов'язаних таблиць). Наприклад, у цьому випадку:
ВИБРАТИ ... З РегистрСведений.КурсыВалют.СрезПоследних(, Валюта.Код = &КодВалютыСклада) ЯК КурсыВалют
3. Не потрібно передбачати в конфігурації окремий механізм перерахунку підсумків, оскільки актуалізація таблиць підсумків виконується автоматично за кожного запису набору записів до регістру.
Виняток становлять окремі випадки, коли актуалізацію підсумків під час запису було примусово вимкнено за допомогою виклику методу РегистрСведенийМенеджер.УстановитьИспользованиеИтогов(Ложь).