Каталог решений - Склонение по падежам на казахском

Склонение по падежам на казахском

Склонение по падежам на казахском

В наличии

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

Категория:

Описание

Добавляете в конфигурацию регистр сведений со следующей структурой:

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

Функция ПолучитьСклонениеКаз(Строка, Падеж)

    Последние2БуквыФИО = Прав(Строка,2);
    ПоследняяБуква = Прав(Последние2БуквыФИО,1);
    ПредпоследняяБуква = Лев(Последние2БуквыФИО,1);

    //Получить по последним 2 буквам
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Падеж", Падеж);
    Запрос.УстановитьПараметр("ПоследняяБуква", ПоследняяБуква);
    Запрос.УстановитьПараметр("ПредпоследняяБуква", ПредпоследняяБуква);
    Запрос.Текст =
    "ВЫБРАТЬ
    | mega_ПравилаСклонения.Окончание КАК Окончание
    ИЗ
    | РегистрСведений.mega_ПравилаСклонения КАК mega_ПравилаСклонения
    ГДЕ
    | mega_ПравилаСклонения.Падеж = &Падеж
    | И mega_ПравилаСклонения.ПредпоследняяБуква ПОДОБНО ""%"" + &ПредпоследняяБуква + ""%""
    | И mega_ПравилаСклонения.ПоследняяБуква ПОДОБНО ""%"" + &ПоследняяБуква + ""%"";
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Следующий() Тогда
        Возврат Строка + Выборка.Окончание;
    КонецЕсли;

    //Получить по последней букве
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Падеж", Падеж);
    Запрос.УстановитьПараметр("ПоследняяБуква", ПоследняяБуква);
    Запрос.Текст =
    "ВЫБРАТЬ
    | mega_ПравилаСклонения.Окончание КАК Окончание
    ИЗ
    | РегистрСведений.mega_ПравилаСклонения КАК mega_ПравилаСклонения
    ГДЕ
    | mega_ПравилаСклонения.Падеж = &Падеж
    | И mega_ПравилаСклонения.ПоследняяБуква ПОДОБНО ""%"" + &ПоследняяБуква + ""%"";
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Следующий() Тогда
        Возврат Строка + Выборка.Окончание;
    КонецЕсли;

    Возврат Строка;

КонецФункции

Во вложении — Excel-файл для заполнения регистра. Позволяет получать окончание по предпоследней и последней букве слова. Структура файла следующая:

ПадежПредпоследняя букваПоследняя букваОкончаниеПравило
БарысСептік|1; }7; w9; і е э иб в г u1; д к u9; п т ф y1; ц ч ш щкеглухие / (б в г д)
БарысСептік|1; }7; w9; і е э и яж з л м н v7; р ю угеВсе, кроме
БарысСептіка о x1; ы уб в г u1; д к u9; п т ф y1; ц ч ш щu9;аглухие / (б в г д)
БарысСептіка о x1; ы уж з л м н v7; р ю уu1;аВсе, кроме

Заполненный регистр выглядит так:

has been added to your cart:
Оформление заказа