Склонение словосочетаний в 1С 8

Склонение словосочетаний с числительными

При формировании печатных форм документов возникает потребность вывести словосочетание, согласованное с числительными в определенной падежной форме. Например: в акте приема-передачи товара написать, что получено «3,5 метра медного провода».

Для реализации подобных задач в 1С предусмотрен метод ПолучитьСклоненияСтрокиПоЧислу(), который доступен, начиная с версии 8.3.14

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

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

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

Метод ПолучитьСклоненияСтрокиПоЧислу() доступен, начиная с версии 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) — числительное будет записано с окончанием (Например, «5» — «5-ый» в случае порядкового числительного в именительном падеже, «7» — «7-и» в случае количественного числительного в родительном падеже).
    • Авто (Auto) — для порядковых числительных используется «ЧислоСОкончанием», для количественных — «Число».

ФорматнаяСтрокаЧисла — необязательный параметр типа Строка. В качестве параметра передается строка, содержащая параметры форматирования для преобразования исходного числа в строку в указанном формате с помощью метода Формат.

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

Примеры использования метода ПолучитьСклоненияСтрокиПоЧислу()

Склонение.

В самом простом случае вы можете использовать только возможности склонения, а числовое значение выводить одними цифрами:

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

Порядковые и количественные числительные

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

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

Представление числа

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

//Третьего товарища
ПолучитьСклоненияСтрокиПоЧислу("товарищ", 3, "", "ЧС=Порядковое", "ПД=Родительный; ПЧ=ЧислоПрописью");
//3-го товарища
ПолучитьСклоненияСтрокиПоЧислу("товарищ", 3, "", "ЧС=Порядковое", "ПД=Родительный; ПЧ=ЧислоСОкончанием");
//3 товарища
ПолучитьСклоненияСтрокиПоЧислу("товарищ", 3, "", "ЧС=Порядковое", "ПД=Родительный; ПЧ=Число");

Склонение единиц измерения

Довольно часто вместе с цифровым значением указываются единицы его измерения. И эти единицы тоже нужно склонять. Причём если значение дробное, то целая и дробная части обычно измеряются в разных единицах.

В такой ситуации вы можете указать те единицы, которые нужно использовать, а кроме этого можете указать ещё и количество разрядов дробной части, которое должно использоваться:

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

Сложные словосочетания

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

//15 килограммов 750 граммов муки, смолотой из цельного зерна пшеницы
ПолучитьСклоненияСтрокиПоЧислу("мука, смолотая из цельного зерна пшеницы", 15.75, "килограмм, грамм, 3", "ЧС=Количественное", "ПД=Родительный; ПЧ=Число");
//15 килограммов 750 граммов муки "Пшеничная", смолотой из цельного зерна пшеницы
ПолучитьСклоненияСтрокиПоЧислу("мука ""Пшеничная"", смолотая из цельного зерна пшеницы", 15.75, "килограмм, грамм, 3", "ЧС=Количественное", "ПД=Родительный; ПЧ=Число");

Склонение словосочетаний без числительных

Не менее часто при формировании документов, выводимых на печать, возникает похожая задача склонения словосочетаний, но без числительных. Например: вывести на печать должность, фамилию, имя и отчество сотрудника в правильном падеже.
Для этого в 1С реализован метод ПолучитьСклоненияСтроки().

Метод ПолучитьСклоненияСтроки().

ПолучитьСклоненияСтроки(<СклоняемаяСтрока>, <ОписаниеСтроки>, <ФорматнаяСтрока>);

Склоняет указанную строку.

Метод ПолучитьСклоненияСтроки() доступен, начиная с версии 8.3.13

Описание метода ПолучитьСклоненияСтроки()

Параметры:

СклоняемаяСтрока — обязательный параметр типа Строка. Содержит строку, которую нужно и просклонять.

ОписаниеСтроки — необязательный параметр типа Строка. Содержит информацию о строке, которую требуется просклонять.

Каждый параметр задается именем параметра, символом «=» (равно) и значением параметра. Параметры перечисляются через символ «;» (точка с запятой).
Допустимы следующие параметры:

  • Л (L) — Код локализации. По умолчанию используется код локализации, установленный в операционной системе. Примеры кодов локализации: ru_RU — Русский (Россия); en_US — Английский (США). В настоящий момент поддерживается только русский язык. Если код локализации не указан, то используется текущая локализация пользователя.
  • ПЛ (GN) — Пол. Параметр используется при склонении имен собственных. Если пол не указан, то платформа пытается распознать его на основании переданного словосочетания. Возможные варианты:
    • Мужской (Masculine),
    • Женский (Feminine).

Значение по умолчанию: Пустая строка.

ФорматнаяСтрока — необязательный параметр типа Строка. Содержит параметры форматирования. Каждый параметр задается именем параметра, символом «=» (равно) и значением параметра. Параметры перечисляются через символ «;» (точка с запятой).

Допустимы следующие параметры:

  • ПД (CS) – Падеж. Если не указан, то выполняется только согласование и возвращается форма именительного падежа. Возможные значения:
    • Именительный (Nominative),
    • Родительный (Genitive),
    • Дательный (Dative),
    • Винительный (Accusative),
    • Творительный (Instrumental),
    • Предложный (Prepositional).

Значение по умолчанию: Пустая строка.

Метод возвращает Массив. Массив, содержащий возможные варианты склонения строки.
Если требуется только один вариант, можно использовать первый. Также в конфигурации может быть предусмотрен выбор пользователем варианта склонения из нескольких вариантов.

Примеры использования метода ПолучитьСклоненияСтроки()

//инженеру-конструктору третьего разряда Петрову Виктору Анатольевичу
ПолучитьСклоненияСтроки("инженер-конструктор третьего разряда Петров Виктор Анатольевич", , "ПД=Дательный");

Метод понимает несклоняемые фамилии и правильно склоняет сложные и иностранные имена. В сложных случаях можно «подсказать» ему, какой род использовать. Например: имя Джайлан – женское, а значит склонять его не надо:

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

Однако и без «подсказок» метод ПолучитьСклоненияСтроки() правильно обрабатывает грамматические правила русского языка.

Например:

  • не склоняет мужские имена, оканчивающиеся на гласную,
  • в ряде случаев не склоняет женские имена, оканчивающиеся на некоторые гласные
  • в двойных именах склоняет только второй компонент
  • фамилии, оканчивающиеся на согласный, не склоняет у женщин

Эти методы помогают сделать прикладные решения более «дружественными» и удобными для пользователей.

Оцените статью
( 2 оценки, среднее 5 из 5 )
Добавить комментарий