Глобальный контекст.ПолучитьСклоненияСтрокиПоЧислу

Методы · GetStringDeclensionsByNumber

Склоняет переданное сочетание числа и строки в указанном падеже.

Синтаксис

ПолучитьСклоненияСтрокиПоЧислу(<СклоняемаяСтрока>, <Число>, <СклоняемыеЕдиницыИзмерения>, <ОписаниеСтроки>, <ФорматнаяСтрока>, <ФорматнаяСтрокаЧисла>)

Примеры платформы

Результат = ПолучитьСклоненияСтрокиПоЧислу("стул", 12, "",
    "ЧС=Порядковое", "ПД=Родительный; ПЧ=ЧислоСОкончанием");
Результат = ПолучитьСклоненияСтрокиПоЧислу("автомобиль", 5, "",
    "ЧС=Количественное", "ПД=Дательный; ПЧ=ЧислоПрописью");
Результат = ПолучитьСклоненияСтрокиПоЧислу("медный купорос", 3.5,
    "килограмм, грамм, 2", "ЧС=Количественное", "ПД=Винительный;
    ПЧ=ЧислоПрописью");
Полное описание, параметры и ограничения

Глобальный контекст.ПолучитьСклоненияСтрокиПоЧислу (Global context.GetStringDeclensionsByNumber)

Глобальный контекст (Global context)

ПолучитьСклоненияСтрокиПоЧислу (GetStringDeclensionsByNumber)

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

Синтаксис:
ПолучитьСклоненияСтрокиПоЧислу(<СклоняемаяСтрока>, <Число>, <СклоняемыеЕдиницыИзмерения>, <ОписаниеСтроки>, <ФорматнаяСтрока>, <ФорматнаяСтрокаЧисла>)
Параметры:

<СклоняемаяСтрока> (обязательный)
Тип: Строка.
Содержит строку, которую требуется согласовать и просклонять.

<Число> (обязательный)
Тип: Число.
Содержит число, относительно которого будет выполнено согласование и склонение строки.

<СклоняемыеЕдиницыИзмерения> (необязательный)
Тип: Строка.
Содержит строку с единицей измерения, которую необходимо согласовать и просклонять. Также поддерживается передача нескольких единиц измерения в следующем виде (перечисляются через запятую):
Единица измерения для целой части (Например, "килограмм").

Единица измерения для дробной части (Например, "грамм").

Количество разрядов дробной части (Может отсутствовать, по умолчанию - 2).
В результате, общая строка параметра будет выглядеть так: "килограмм, грамм, 2".

<ОписаниеСтроки> (необязательный)
Тип: Строка.
Содержит информацию о строке, которую нужно обработать.
Каждый параметр задается именем параметра, символом "=" (равно) и значением параметра. Параметры перечисляются через символ ";" (точка с запятой).
Допустимые параметры:
Л (L) - Код локализации. По умолчанию используется код локализации информационной базы. Примеры кодов локализации: ru_RU - Русский (Россия), en_US - Английский (США). В настоящий момент поддерживается только русский язык. Если код локализации не указан, то используется текущая локализация информационной базы.

ЧС (NM) – тип числительного. Возможные варианты:
Количественное (Cardinal) - Используется для целых и дробных значений.

Порядковое (Ordinal) - Используется только для целых значений.

Если тип числительного не указан, то в качестве параметра будет использовано количественное числительное. Если переданное число является дробью и указано, что оно является порядковым числительным, то будет сгенерировано исключение.

<ФорматнаяСтрока> (необязательный)
Тип: Строка.
Содержит параметры форматирования.
Каждый параметр задается именем параметра, символом "=" (равно) и значением параметра. Параметры перечисляются через символ ";" (точка с запятой).
Допустимы следующие параметры:
ПД (CS) – Падеж. Если не указан, то выполняется только согласование и возвращается форма именительного падежа. Возможные значения:
Именительный (Nominative),

Родительный (Genitive),

Дательный (Dative),

Винительный (Accusative),

Творительный (Instrumental),

Предложный (Prepositional).

ПЧ (NP) – представление числа. Если не указано, то используется "Авто". Возможные варианты:
Число (Number) - числительное будет записано цифрами.

ЧислоПрописью (NumberInWords) - числительное будет записано прописью (Например, "120" - "сто двадцать").

ЧислоСОкончанием (NumberWithEnding) - числительное будет записано с окончанием:
Для порядкового числительного (ЧС=Порядковое - если предпоследняя буква в окончании является согласной, то формируется двухбуквенное наращение окончания (Например, "двенадцатого автомобиля" - "12-го автомобиля").

Для порядкового числительного (ЧС=Порядковое) - если предпоследняя буква в окончании является гласной, то формируется однобуквенное наращение окончания (Например, "двенадцатый автомобиль" – "12-й автомобиль").

Для количественного числительного (ЧС=Количественное): генерируется исключение о невозможности использования параметров <ЧС=Количественное> и <ПЧ=ЧислоСОкончанием> вместе.

Авто (Auto) - для порядковых числительных используется "ЧислоСОкончанием", для количественных - "Число".

<ФорматнаяСтрокаЧисла> (необязательный)
Тип: Строка.
В качестве параметра передается строка, содержащая параметры форматирования для преобразования исходного числа в строку в указанном формате с помощью метода Формат.
Возвращаемое значение:
Тип: Массив.
Если указано только число, то возвращает представление этого числа в виде прописи в форме единственного числа мужского рода.
Если указано только словосочетание без единицы измерения, метод заменит единицу измерения на словосочетание и выполнить склонение по соответствующим правилам.
Описание:

Склоняет переданное сочетание числа и строки в указанном падеже.

Доступность:

Сервер, толстый клиент, внешнее соединение, интеграция.

Пример:

Результат = ПолучитьСклоненияСтрокиПоЧислу("стул", 12, "",
"ЧС=Порядковое", "ПД=Родительный; ПЧ=ЧислоСОкончанием");
// Результат будет содержать массив со строкой "12-го стула".

Результат = ПолучитьСклоненияСтрокиПоЧислу("автомобиль", 5, "",
"ЧС=Количественное", "ПД=Дательный; ПЧ=ЧислоПрописью");
// Результат будет содержать массив со строкой "пяти автомобилям".

Результат = ПолучитьСклоненияСтрокиПоЧислу("медный купорос", 3.5,
"килограмм, грамм, 2", "ЧС=Количественное", "ПД=Винительный;
ПЧ=ЧислоПрописью");
// Результат будет содержать массив со строкой "три килограмма

//пятьдесят граммов медного купороса".".

Использование в версии:

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

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

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

Оформить номер стула и количество автомобилей в разных падежах

Собственные 12-й стул и пять автомобилей показывают различие порядкового и количественного числительных, окончание цифры и представление прописью.

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

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

Подготовка

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

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

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

  4. Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.

Процедура ВыполнитьПример() Экспорт
    Стулья = ПолучитьСклоненияСтрокиПоЧислу("стул", 12, "", "Л=ru_RU;ЧС=Порядковое", "ПД=Родительный;ПЧ=ЧислоСОкончанием");
    Автомобили = ПолучитьСклоненияСтрокиПоЧислу("автомобиль", 5, "", "Л=ru_RU;ЧС=Количественное", "ПД=Дательный;ПЧ=ЧислоПрописью");
    Если Стулья.Количество() = 0 Или Автомобили.Количество() = 0 Тогда
        ВызватьИсключение "Не получен вариант собственной учебной строки";
    КонецЕсли;
    Сообщить(НРег(СокрЛП(Стулья[0])) = "12-го стула");
    Сообщить(НРег(СокрЛП(Автомобили[0])) = "пяти автомобилям");
    Сообщить("Номер собственного предмета: " + Стулья[0]);
    Сообщить("Кому: " + Автомобили[0]);
    ОшибкаОбработана = Ложь;
    Попытка
        НеверныйНомер = ПолучитьСклоненияСтрокиПоЧислу("стул", 3.5, "", "Л=ru_RU;ЧС=Порядковое", "ПД=Родительный;ПЧ=ЧислоСОкончанием");
        Сообщить(НеверныйНомер.Количество());
    Исключение
        ОшибкаОбработана = Истина;
        Диагностика = ИнформацияОбОшибке();
        Сообщить(Диагностика.Описание);
        Сообщить("Дробное число нельзя использовать как порядковое числительное");
    КонецПопытки;
    Сообщить(ОшибкаОбработана);
КонецПроцедуры

Разбор по шагам

  1. В первом вызове число 12 обозначает порядковый номер. Родительный падеж и ЧислоСОкончанием дают 12-го стула.

  2. Во втором число 5 обозначает количество. Дательный падеж и ЧислоПрописью дают пяти автомобилям.

  3. Пустая строка третьего аргумента означает отсутствие отдельной единицы измерения, а не пропуск локализации или падежа.

  4. Оба результата — массивы. Проверить, что они не пустые, до чтения первого элемента.

  5. Отдельный контролируемый отрицательный тест передаёт 3.5 для порядкового числительного. Справка прямо указывает, что это вызывает исключение.

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

  1. Три проверки Истина, а также строки с 12-го стула и пяти автомобилям и сообщение о недопустимом дробном порядковом числе.

  2. Если заменить 3.5 на 3, ошибочного ввода больше нет: последний флаг станет Ложь. Проверьте отдельно полученный вариант порядкового числительного.

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

Полные вызовы различают смысл числа, падеж, вид представления и документированное ограничение дробного порядкового числительного.

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

  1. ЧислоСОкончанием несовместимо с ЧС=Количественное. Не смешивайте эти параметры для пяти автомобилей.

  2. Отрицательный тест намеренно создаёт ошибку только в собственной учебной строке и явно её обрабатывает.

  3. Массив вариантов — не утверждение, что грамматика любой произвольной товарной карточки всегда будет однозначна.

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

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

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

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

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