Каталог решений - Учим внешнюю компоненту правильному склонению не только ФИО, но и должностей, и подразделений (ЗУП 2.5)

Учим внешнюю компоненту правильному склонению не только ФИО, но и должностей, и подразделений (ЗУП 2.5)

Учим внешнюю компоненту правильному склонению не только ФИО, но и должностей, и подразделений (ЗУП 2.5)

В наличии

Многие из нас сталкивались с проблемой неверного склонения должностей и подразделений внешней компонентой склонения ФИО. Результат при этом может напоминать следующее:

1.Именительный  "Главный специалист"
2.Родительный "Главныя специалиста"
3.Дательный  "Главныю специалисту "
4.Винительный  "Главныя специалиста "
5.Творительный  "Главныем специалистом "
6.Предложный "Главные специалисте "

Метод борьбы с данным недугом предлагаю ниже.

Категория:

Описание

Метод прост и достаточно эффективен.

Суть решения: разложить фразу, состоящую из нескольких слов на отдельные слова, и просклонять каждое из них отдельно.

Ниже привожу пример кода.

ДолжностьРуководителяРодительный = ПросклонятьФразуПоСловам(ДолжностьРуководителя, 2);

…………………………………

…………………………..

………………………………

Функция ПросклонятьФразуПоСловам(Знач ИсходнаяСтрока, Падеж) Экспорт

    Результат = «»;

    ИсходнаяСтрока = СокрЛП(ИсходнаяСтрока);
    Если
СтрДлина(ИсходнаяСтрока) = 0 Тогда
        Возврат
Результат;
    КонецЕсли;

    Поз = Найти(ИсходнаяСтрока, » «);
    Пока
Поз > 0 Цикл

        СловоВПадеже = «»;

        Слово = Лев(ИсходнаяСтрока, Поз1);
       
УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной(«глКомпонентаСклоненияФИО»), Слово,       Падеж, , СловоВПадеже);

        Результат = СокрЛП(Результат + » » + НРег(СловоВПадеже));
       
ИсходнаяСтрока = СокрЛП(Сред(ИсходнаяСтрока, Поз));

        Если ПустаяСтрока(ИсходнаяСтрока) Тогда
            Прервать;
// Это перестраховка. Цикл и так должен прерваться
       
КонецЕсли;

        Поз = Найти(ИсходнаяСтрока, » «);
    КонецЦикла;

    Если НЕ ПустаяСтрока(ИсходнаяСтрока) Тогда // добавляем заключительное слово
       
СловоВПадеже = «»;
       
УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной(«глКомпонентаСклоненияФИО»), ИсходнаяСтрока, Падеж, , СловоВПадеже);
       
Результат = СокрЛП(Результат + » » + НРег(СловоВПадеже));

    КонецЕсли;
    Возврат Результат;

КонецФункции // ПросклонятьФразуПоСловам()

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