Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. При вычислении количества записей на языке запросов следует всегда использовать функцию КОЛИЧЕСТВО, а не СУММА. В противном случае, при количестве записей 10 млн. и более произойдет переполнение, что связано с разрядностью числа по умолчанию (7 разрядов), используемого в СУБД платформой 1С:Предприятие.
Правильно:
КОЛИЧЕСТВО(*)
КОЛИЧЕСТВО(<Поле>)
Неправильно:
СУММА(1)
ЕСТЬNULL(СУММА(1), 0)
2. Если количество требуется вычислять условно и функцию КОЛИЧЕСТВО применить невозможно, тогда следует расширить разрядность числа по умолчанию с помощью оператора ВЫРАЗИТЬ (например, до 17 разрядов).
Правильно:
ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК Количество,
СУММА(ВЫБОР
КОГДА Номенклатура.ЭтоГруппа
ТОГДА ВЫРАЗИТЬ(1 КАК ЧИСЛО(17, 0))
ИНАЧЕ 0
КОНЕЦ) КАК КоличествоГрупп,
СУММА(ВЫБОР
КОГДА НЕ Номенклатура.ЭтоГруппа
ТОГДА ВЫРАЗИТЬ(1 КАК ЧИСЛО(17, 0))
ИНАЧЕ 0
КОНЕЦ) КАК КоличествоЭлементов
ИЗ
Справочник. Номенклатура КАК Номенклатура
Неправильно:
ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК Количество,
СУММА(ВЫБОР
КОГДА Номенклатура.ЭтоГруппа
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ) КАК КоличествоГрупп,
СУММА(ВЫБОР
КОГДА НЕ Номенклатура.ЭтоГруппа
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ) КАК КоличествоЭлементов
ИЗ
Справочник. Номенклатура КАК Номенклатура