ВидЧисловогоЗначения.Количественное

Свойства · Cardinal

Количественное числительное (например: один, восемьдесят, и т.д.).

Полное описание, параметры и ограничения

ВидЧисловогоЗначения.Количественное (NumericValueType.Cardinal)

ВидЧисловогоЗначения (NumericValueType)

Количественное (Cardinal)

Доступен, начиная с версии 8.3.10.

Описание:
Количественное числительное (например: один, восемьдесят, и т.д.).
Использование в версии:

Доступен, начиная с версии 8.3.10.

Методическая информация

Практические примеры

Согласовать количество книг: 1, 2, 5, 11 и 21

СтрокаСЧислом выбирает одну из шести форм по языковым правилам. Отдельно проверяем окончания 11 и 21, которые нельзя обработать только последней цифрой.

Где и как запускать

Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.

Подготовка

  1. Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.

  2. Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().

  3. Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.

  4. Браузер показывает код, но не исполняет 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. Формы идут строго в порядке Ноль, Один, Два, Немного, Много, Другое. Пустые русские категории сохранены разделителями, не выброшены из строки.

  2. Категория Один использует книга, Немного — книги, Много — книг. %1 задаёт место числового представления.

  3. Создать шесть собственных чисел и отдельный массив ожидаемых подписей. Их одинаковый размер проверить до индексного обхода.

  4. Передать ВидЧисловогоЗначения.Количественное и L=ru: это количественный счёт книг на русском, не порядковый номер книги.

  5. Для каждого числа сравнить готовую подпись с отдельным ожиданием. 11 относится к книг, а 21 — к книга.

Как проверить результат

  1. Шесть Истина, чередующихся с 0 книг, 1 книга, 2 книги, 5 книг, 11 книг и 21 книга.

  2. Замените 2 на 12, а его ожидание на 12 книг: правило исключения 12 должно пройти. Не удаляйте пустые категории в строке Формы.

Ожидаемый результат

Функция применена к реальным подписям собственного количества и проверена на важных русских грамматических границах.

На что обратить внимание

  1. Шесть категорий — позиции формата, а не шесть последовательных числовых диапазонов.

  2. Последняя цифра 1 не всегда требует книга: число 11 — исключение.

  3. Для дробных чисел отдельно задайте ожидаемое числовое форматирование. Этот урок проверяет целые числа и не обещает универсальный вид дробного разделителя.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.