Могут ли быть таблицы итогов у регистра сведений
1. Понятие «таблицы итогов» в 1С
-
Таблицы итогов (или агрегированные таблицы) мы обычно ассоциируем с регистрами накопления или расчётов:
– В регистрах накопления есть виртуальные таблицы ТекущиеДанные, ОборотыПоРегистратору, ОборотыПоСрезуДанных, которые хранят предварительно рассчитанные суммы/остатки.
– Эти «итоговые» таблицы позволяют быстро получать агрегаты (остатки или обороты) без длительных вычислений по истории. -
У регистров сведений другой характер: они фиксируют факты — значения атрибутов на определённые периоды, без автоматического накопления сумм.
2. Отсутствие встроенных «итоговых» таблиц в регистрах сведений
Нету виртуальных агрегатов
– Для регистров сведений доступны только четыре виртуальных таблицы:
<br/>РегистрСведений.<Имя>
РегистрСведений.<Имя>.СрезДанных
РегистрСведений.<Имя>.СрезДанныхПоРегистратору
РегистрСведений.<Имя>.СрезДанныхПоИзмерению
-
– Ни ТекущиеДанные, ни Обороты… у них не определены.
-
Архитектура данных
– Регистры сведений не предполагают накопление числовых показателей (сумм, остатков), они хранят «статические» параметры или справочные факты (константы, настройки, характеристики предметов). -
Причина
– Платформа считает, что «итоги» по сведениям логичнее считать ad-hoc (по SELECT … GROUP BY) или встраивать в отчёты, а не хранить постоянно, чтобы не нагружать систему избыточными расчётами.
3. Как получить «итоговые» данные по регистру сведений
Хотя у регистра сведений нет встроенных итоговых таблиц, агрегаты можно построить самостоятельно:
**СКД / Запрос с группировкой
<br/>**Запрос.Текст =
"ВЫБРАТЬ
Измерение1,
Измерение2,
Макс(Период) КАК ПоследнийПериод,
Макс(ЗначениеАтрибута) КАК АктуальноеЗначение
ИЗ
РегистрСведений.МойРегистр
ГДЕ
Период <= &НаПериод
СГРУППИРОВАТЬ ПО
Измерение1,
Измерение2";
-
– Позволяет выбрать «итоги» (последнее значение) по комбинации измерений.
-
Использование СрезДанных
– Виртуальная таблица .СрезДанных(Период = &Период) уже возвращает по каждому набору измерений единственную (последнюю) запись — аналог «текущих данных».
– Фактически это и есть самый близкий эквивалент «итоговой таблицы» для сведений. -
Создание вспомогательного регистра накопления
– Если нужен быстрый доступ к часто востребованным агрегатам (например, средним, суммам значений), можно завести регистр накопления и при каждом изменении сведений обновлять в нём итоговые показатели:-
Документ–регистратор записывает данные в оба регистра: в регистр сведений (для истории) и в регистр накопления (для «быстрых цифр»).
-
Это классический шаблон «Событие → Обработка → Агрегирование».
-
-
Временные таблицы и кэш в ОбщихМодулях
– При сложных расчётах можно в памяти (в Соответствие или ТаблицаЗначений) хранить агрегаты за сессию, чтобы не перегружать базу.
4. Когда всё-таки можно «смоделировать» итоговую таблицу у регистра сведений
-
Расширения платформы
– Теоретически, внутри кластера 1С сам механизм хранения может быть изменён, но API к регистру сведений всё равно не даст доступа к «итогам» напрямую. -
Встроенные оптимизации
– Платформа оптимизирует .СрезДанных под капотом, используя собственные структуры данных, но это остаётся «чёрным ящиком» — вы не получаете отдельную таблицу, только результат запроса.
5. Ключевые рекомендации для собеседования
-
Краткий ответ:
«Нет, в регистре сведений нет таблиц итогов как в накопительных регистрах» — и сразу переходите к пояснению «почему» и «как обойти». -
Покажите глубину:
– Расскажите про виртуальную таблицу .СрезДанных и её работу.
– Упомяните возможность делать группировки в запросах и заводить вспомогательный регистр накопления. -
Приведите пример:
Вышеописанный запрос с Макс(Период) или использование .СрезДанных.
Таким образом, у регистра сведений нет «таблиц итогов» в классическом понимании, но есть инструменты (виртуальная таблица .СрезДанных, группировки в запросах) и архитектурные приёмы (регистр накопления, кэш в модулях), позволяющие получить эффективные агрегированные данные.