Склоняет переданное сочетание числа и строки в указанном падеже.
Синтаксис
ПолучитьСклоненияСтрокиПоЧислу(<СклоняемаяСтрока>, <Число>, <СклоняемыеЕдиницыИзмерения>, <ОписаниеСтроки>, <ФорматнаяСтрока>, <ФорматнаяСтрокаЧисла>)Примеры платформы
Результат = ПолучитьСклоненияСтрокиПоЧислу("стул", 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-й стул и пять автомобилей показывают различие порядкового и количественного числительных, окончание цифры и представление прописью.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.
Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().
Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.
Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.
Процедура ВыполнитьПример() Экспорт
Стулья = ПолучитьСклоненияСтрокиПоЧислу("стул", 12, "", "Л=ru_RU;ЧС=Порядковое", "ПД=Родительный;ПЧ=ЧислоСОкончанием");
Автомобили = ПолучитьСклоненияСтрокиПоЧислу("автомобиль", 5, "", "Л=ru_RU;ЧС=Количественное", "ПД=Дательный;ПЧ=ЧислоПрописью");
Если Стулья.Количество() = 0 Или Автомобили.Количество() = 0 Тогда
ВызватьИсключение "Не получен вариант собственной учебной строки";
КонецЕсли;
Сообщить(НРег(СокрЛП(Стулья[0])) = "12-го стула");
Сообщить(НРег(СокрЛП(Автомобили[0])) = "пяти автомобилям");
Сообщить("Номер собственного предмета: " + Стулья[0]);
Сообщить("Кому: " + Автомобили[0]);
ОшибкаОбработана = Ложь;
Попытка
НеверныйНомер = ПолучитьСклоненияСтрокиПоЧислу("стул", 3.5, "", "Л=ru_RU;ЧС=Порядковое", "ПД=Родительный;ПЧ=ЧислоСОкончанием");
Сообщить(НеверныйНомер.Количество());
Исключение
ОшибкаОбработана = Истина;
Диагностика = ИнформацияОбОшибке();
Сообщить(Диагностика.Описание);
Сообщить("Дробное число нельзя использовать как порядковое числительное");
КонецПопытки;
Сообщить(ОшибкаОбработана);
КонецПроцедурыРазбор по шагам
В первом вызове число 12 обозначает порядковый номер. Родительный падеж и ЧислоСОкончанием дают 12-го стула.
Во втором число 5 обозначает количество. Дательный падеж и ЧислоПрописью дают пяти автомобилям.
Пустая строка третьего аргумента означает отсутствие отдельной единицы измерения, а не пропуск локализации или падежа.
Оба результата — массивы. Проверить, что они не пустые, до чтения первого элемента.
Отдельный контролируемый отрицательный тест передаёт 3.5 для порядкового числительного. Справка прямо указывает, что это вызывает исключение.
Как проверить результат
Три проверки Истина, а также строки с 12-го стула и пяти автомобилям и сообщение о недопустимом дробном порядковом числе.
Если заменить 3.5 на 3, ошибочного ввода больше нет: последний флаг станет Ложь. Проверьте отдельно полученный вариант порядкового числительного.
Ожидаемый результат
Полные вызовы различают смысл числа, падеж, вид представления и документированное ограничение дробного порядкового числительного.
На что обратить внимание
ЧислоСОкончанием несовместимо с ЧС=Количественное. Не смешивайте эти параметры для пяти автомобилей.
Отрицательный тест намеренно создаёт ошибку только в собственной учебной строке и явно её обрабатывает.
Массив вариантов — не утверждение, что грамматика любой произвольной товарной карточки всегда будет однозначна.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.