Может ли быть таблица итогов у регистра сведений?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Таблица итогов регистра сведений: возможности и ограничения
Это классический вопрос собеседования, проверяющий понимание архитектуры регистров в 1С. Дам четкий и полный ответ.
Прямой ответ: НЕТ
Регистр сведений НЕ может иметь таблицу итогов. Таблица итогов (в 1С её называют "Таблица итогов" или "Итоги") доступна только для регистров накопления.
Почему это так
Для понимания логики нужно разобраться в различиях регистров:
Регистр накопления:
- Хранит движения (суммовые операции)
- Может работать с итогами — суммами по периодам, измерениям
- Таблица итогов создается автоматически при проведении
- Данные пересчитываются при каждой операции
Регистр сведений:
- Хранит последние значения (сведения о состоянии)
- Не накапливает, не суммирует
- Всегда содержит актуальные данные
- Не требует пересчета итогов
Другими словами:
- Накопление = "сколько прошло денег по счету" (нужны суммы по периодам)
- Сведения = "какой текущий баланс счета" (просто последнее значение)
Практический пример
Регистр накопления — МОЖЕТ иметь таблицу итогов:
// Регистр: "Движение денежных средств"
Регистр Накопления ДвижениеДенежныхСредств
Измерения:
Счет ссылка на Справочник.БанковскиеСчета
Период дата
Ресурсы:
Сумма десятичное число
// Таблица итогов НА ОСНОВЕ этого регистра может выглядеть так:
// Счет = "Счет 1" → Итог за январь = 100000, за февраль = 50000
// Счет = "Счет 2" → Итог за январь = 30000, за февраль = 20000
Процедура ПолучитьИтогиПоСчетам()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Счет,
| ПЕРИОД(Период, МЕСЯЦ) КАК Месяц,
| СУММА(Сумма) КАК ИтоговаяСумма
|ИЗ
| РегистрНакопления.ДвижениеДенежныхСредств
|СГРУППИРОВАТЬ ПО
| Счет,
| ПЕРИОД(Период, МЕСЯЦ)";
Возврат Запрос.Выполнить().Выгрузить();
КонецПроцедуры
Регистр сведений — НЕ может иметь таблицу итогов:
// Регистр: "Текущие остатки товаров"
Регистр Сведений ТекущиеОстатки
Измерения:
Товар ссылка на Справочник.Товары
Склад ссылка на Справочник.Склады
Ресурсы:
ОстатокКоличество десятичное число
ОстатокСумма десятичное число
// Есть только последнее значение!
// Товар = "Ноутбук" на Складе 1 → Остаток = 5 шт
// Товар = "Ноутбук" на Складе 2 → Остаток = 3 шт
// Таблица итогов здесь не имеет смысла, т.к.:
// - Не накапливаем суммы по времени
// - Каждая запись — это текущее состояние
// - Всегда одна версия для каждого измерения
// Для получения итогов можно только просто суммировать текущие остатки:
Процедура ПолучитьОбщиеОстатки()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Товар,
| СУММА(ОстатокКоличество) КАК ВсегоОстаток
|ИЗ
| РегистрСведений.ТекущиеОстатки
|СГРУППИРОВАТЬ ПО
| Товар";
Возврат Запрос.Выполнить().Выгрузить();
КонецПроцедуры
Типы регистров в 1С
Для полноты картины:
1. Регистр накопления (может иметь таблицу итогов)
- Отрасли: Приход, Расход, Остатки и обороты
- Есть таблица итогов
- Есть проведение
- Пример: Движение денег, Ордера товаров
2. Регистр сведений (НЕ может иметь таблицу итогов)
- Хранит последние известные значения
- Нет проведения
- Автоматически перезаписывается
- Примеры: Текущие остатки, Цены товаров, Параметры конфигурации
3. Регистр расчета (не обсуждается здесь, но тоже не имеет таблицы итогов)
- Специален для расчётов зарплаты
- Для специализированных конфигураций ЗУП
Важные следствия
Потому что у регистра сведений нет таблицы итогов:
- Нет пересчета — при изменении записи не пересчитываются итоги
- Всегда актуальные данные — смотришь текущее состояние всегда
- Большое количество записей — нет ограничений на хранение истории
- Простая логика — легче управлять и разбираться
Когда выбрать регистр сведений вместо накопления
- Если нужны только последние значения — сведения
- Если нужны суммы по периодам — накопление
- Если нужна история всех изменений — сведения
- Если нужны итоги за период — накопление
Итак, четко: регистр сведений не может иметь таблицу итогов по определению и архитектуре своей работы в 1С.