Количественное числительное (например: один, восемьдесят, и т.д.).
Полное описание, параметры и ограничения
ВидЧисловогоЗначения.Количественное (NumericValueType.Cardinal)
ВидЧисловогоЗначения (NumericValueType)
Количественное (Cardinal)
Доступен, начиная с версии 8.3.10.
Описание:
Количественное числительное (например: один, восемьдесят, и т.д.).
Использование в версии:
Доступен, начиная с версии 8.3.10.
Методическая информация
Практические примеры
Согласовать количество книг: 1, 2, 5, 11 и 21
СтрокаСЧислом выбирает одну из шести форм по языковым правилам. Отдельно проверяем окончания 11 и 21, которые нельзя обработать только последней цифрой.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.
Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().
Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.
Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.
Процедура ВыполнитьПример() Экспорт
Формы = ";%1 книга;;%1 книги;%1 книг;%1 книги";
Числа = Новый Массив;
Числа.Добавить(0);
Числа.Добавить(1);
Числа.Добавить(2);
Числа.Добавить(5);
Числа.Добавить(11);
Числа.Добавить(21);
Ожидается = Новый Массив;
Ожидается.Добавить("0 книг");
Ожидается.Добавить("1 книга");
Ожидается.Добавить("2 книги");
Ожидается.Добавить("5 книг");
Ожидается.Добавить("11 книг");
Ожидается.Добавить("21 книга");
Если Числа.Количество() <> Ожидается.Количество() Тогда
ВызватьИсключение "Учебные значения и ожидаемые подписи должны иметь одинаковый размер";
КонецЕсли;
Для Индекс = 0 По Числа.Количество() - 1 Цикл
Подпись = СтрокаСЧислом(Формы, Числа[Индекс], ВидЧисловогоЗначения.Количественное, "L=ru");
Сообщить(Подпись = Ожидается[Индекс]);
Сообщить(Подпись);
КонецЦикла;
КонецПроцедурыРазбор по шагам
Формы идут строго в порядке Ноль, Один, Два, Немного, Много, Другое. Пустые русские категории сохранены разделителями, не выброшены из строки.
Категория Один использует книга, Немного — книги, Много — книг. %1 задаёт место числового представления.
Создать шесть собственных чисел и отдельный массив ожидаемых подписей. Их одинаковый размер проверить до индексного обхода.
Передать ВидЧисловогоЗначения.Количественное и L=ru: это количественный счёт книг на русском, не порядковый номер книги.
Для каждого числа сравнить готовую подпись с отдельным ожиданием. 11 относится к книг, а 21 — к книга.
Как проверить результат
Шесть Истина, чередующихся с 0 книг, 1 книга, 2 книги, 5 книг, 11 книг и 21 книга.
Замените 2 на 12, а его ожидание на 12 книг: правило исключения 12 должно пройти. Не удаляйте пустые категории в строке Формы.
Ожидаемый результат
Функция применена к реальным подписям собственного количества и проверена на важных русских грамматических границах.
На что обратить внимание
Шесть категорий — позиции формата, а не шесть последовательных числовых диапазонов.
Последняя цифра 1 не всегда требует книга: число 11 — исключение.
Для дробных чисел отдельно задайте ожидаемое числовое форматирование. Этот урок проверяет целые числа и не обещает универсальный вид дробного разделителя.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.