#std787

Вычисление количества записей в запросах

1.

При вычислении количества записей в запросе всегда используйте функцию КОЛИЧЕСТВО, а не СУММА.

Иначе при количестве записей 10 млн и более возможно переполнение, связанное с разрядностью чисел по умолчанию, используемых СУБД платформой 1С:Предприятие.

Правильно

КОЛИЧЕСТВО(*)
КОЛИЧЕСТВО(<Поле>)

Неправильно

СУММА(1)
ЕСТЬNULL(СУММА(1), 0)
2.

Если количество нужно вычислять условно и КОЛИЧЕСТВО применить нельзя, расширяйте разрядность числа по умолчанию через ВЫРАЗИТЬ (например, до 17 разрядов).

Правильно

ВЫБРАТЬ
    КОЛИЧЕСТВО(*) КАК Количество,
    СУММА(ВЫБОР
        КОГДА Номенклатура.ЭтоГруппа
            ТОГДА ВЫРАЗИТЬ(1 КАК ЧИСЛО(17, 0))
        ИНАЧЕ 0
    КОНЕЦ) КАК КоличествоГрупп,
    СУММА(ВЫБОР
        КОГДА НЕ Номенклатура.ЭтоГруппа
            ТОГДА ВЫРАЗИТЬ(1 КАК ЧИСЛО(17, 0))
        ИНАЧЕ 0
    КОНЕЦ) КАК КоличествоЭлементов
ИЗ
    Справочник.Номенклатура КАК Номенклатура

Неправильно

ВЫБРАТЬ
    КОЛИЧЕСТВО(*) КАК Количество,
    СУММА(ВЫБОР
        КОГДА Номенклатура.ЭтоГруппа
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ) КАК КоличествоГрупп,
    СУММА(ВЫБОР
        КОГДА НЕ Номенклатура.ЭтоГруппа
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ) КАК КоличествоЭлементов
ИЗ
    Справочник.Номенклатура КАК Номенклатура
См. также
Источник

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