Склонение ФИО родительного падежа обратно в именительный падеж

1. user1088693 05.09.19 10:53 Сейчас в теме
Есть ли какая-нибудь общее доступная обработка, которая позволяет просклонять ФИО родительного падежа обратно в именительный падеж?
Вознаграждение за ответ
Показать полностью
Найденные решения
7. Ruschel 20.09.19 21:19 Сейчас в теме +0.25 $m
Предложенные варианты(Морфер с ИТС/БСП) не умеют восстанавливать именительный падеж даже примерно.
На 100% точно врядли удастся решить данную задачу, но я бы попробовал следующее решение. Если подключить анализ исходного справочника (ФизическиеЛица или какой там у вас), выгружая данные в компоненту, можно добиться высокой точности.

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=412#Chapter_16551563267161
user1088693; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Aitbay 05.09.19 11:56 Сейчас в теме
3. Lexx100 15 05.09.19 11:57 Сейчас в теме
В ЗУП есть экспортная функция

ФизическиеЛицаЗарплатаКадры.Просклонять(ФИО, Падеж, Результат, Пол)

падеж указываем по номеру, в других конфах тоже должно быть, БСП ведь
4. ASKiselev 3 09.09.19 13:39 Сейчас в теме +0.15 $m
Я сделал так:
ФамилияПоставщика=СокрЛП(Лев(СокрЛП(СсылкаНаДокумент.ПредПоставщика),Найти(СсылкаНаДокумент.ПредПоставщика," "))); ///Находим фамилию Поставщика
ИмяОтПоставщика=Прав(СсылкаНаДокумент.ПредПоставщика,СтрДлина(СсылкаНаДокумент.ПредПоставщика)-СтрДлина(СокрЛП(ФамилияПоставщика))-1); //Получаем Имя и Отчетсво
ИмяПоставщика=СокрЛП(Лев(СокрЛП(ИмяОтПоставщика),Найти(СокрЛП(ИмяОтПоставщика)," "))); /// Находим Имя
ОтчествоПоставщика=СОкрЛП(Сред(СсылкаНаДокумент.ПредПоставщика,(СтрДлина(СокрЛП(ФамилияПоставщика))+СтрДлина(СокрЛП(ИмяПоставщика))+2),(СтрДлина(СсылкаНаДокумент.ПредПоставщика)-СтрДлина(СокрЛП(ФамилияПоставщика))-СтрДлина(СокрЛП(ИмяПоставщика))-1))); //ну и Отчество

//переводим ФамилияПоставщика из родительного падежа в именительный - 4 варианта: "а"=""; "ой"="а"; "ого"="ий"; "ой"="ая"

Окончание=?(Прав(ФамилияПоставщика,1)="а",Строка(Прав(ФамилияПоставщика,1)+"!"),?(Прав(ФамилияПоставщика,3)="ого",Строка(Прав(ФамилияПоставщика,3)+"!"),?(Прав(ФамилияПоставщика,5)="вской",Строка(Прав(ФамилияПоставщика,5)+"!"),?(Прав(ФамилияПоставщика,2)="ой",Строка(Прав(ФамилияПоставщика,2)+"!"),"!"))));
Окончание2=?(Прав(ФамилияПоставщика,1)="а","",?(Прав(ФамилияПоставщика,3)="ого","ий",?(Прав(ФамилияПоставщика,5)="вской","вская",?(Прав(ФамилияПоставщика,2)="ой","а",""))));
ФамилияПоставщикаХ=Строка(ФамилияПоставщика+"!");
ФамилияПоставщикаХу=СтрЗаменить(ФамилияПоставщикаХ,Окончание,Окончание2);
ОбластьШапка.Параметры.ПоставщикИнициалы = Строка("/"+Лев(ИмяПоставщика,1)+"."+Лев(ОтчествоПоставщика,1)+". "+ФамилияПоставщикаХу);
user1088693; +1 Ответить
5. bintape 10.09.19 03:55 Сейчас в теме
Какая версия платформы? Можно попробовать типовой функционал платформы "ПолучитьСклоненияСтроки "
8. user1088693 02.10.19 06:25 Сейчас в теме
(5) Версия платформы 8.2, база УПП, нету такой функций "ПолучитьСклоненияСтроки"
6. acces969 345 18.09.19 13:21 Сейчас в теме
Я использовал экспортную компоненту, которая была предназначена как раз для склонения фамилий и имен.
9. user1088693 02.10.19 06:30 Сейчас в теме
(6) Как называется компонента?
12. acces969 345 02.10.19 15:16 Сейчас в теме +0.1 $m
Название компоненты не помню, поэтому закинул ее на диск https://yadi.sk/d/Y3LP6-qswakHJA. Вот функция:
Просьба добавить рейтинг если возможно, нету на аккаунте ничего.

Функция Просклонять(Текст, Падеж)
	Попытка
		// Подключаем внешнюю компоненту
		ПодключитьВнешнююКомпоненту("ОбщийМакет.Падежи", "NameDecl",ТипВнешнейКомпоненты.Native); 
		Компонента = Новый("AddIn.NameDecl.CNameDecl");
	Исключение
		Попытка
			//УстановитьВнешнююКомпоненту("ОбщийМакет.Падежи"); - выполнить на клиенте 1 раз
			ПодключитьВнешнююКомпоненту("ОбщийМакет.Падежи", "NameDecl",ТипВнешнейКомпоненты.Native); 
			Компонента = Новый("AddIn.NameDecl.CNameDecl");
		Исключение
			// Не удалось выполнить операции с внешней компонентой
			Сообщить("Не удалось подключить внешнюю компоненту по причине: " + ОписаниеОшибки());
			Сообщить("Выполните код на клиенте: ""ПодключитьВнешнююКомпоненту(""ОбщийМакет.Падежи"", ""NameDecl"",ТипВнешнейКомпоненты.Native);""");	
		КонецПопытки;
	КонецПопытки;	
	
	Возврат Компонента.Просклонять(Текст, Падеж);
	
КонецФункции
Показать
user1088693; +1 Ответить
7. Ruschel 20.09.19 21:19 Сейчас в теме +0.25 $m
Предложенные варианты(Морфер с ИТС/БСП) не умеют восстанавливать именительный падеж даже примерно.
На 100% точно врядли удастся решить данную задачу, но я бы попробовал следующее решение. Если подключить анализ исходного справочника (ФизическиеЛица или какой там у вас), выгружая данные в компоненту, можно добиться высокой точности.

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=412#Chapter_16551563267161
user1088693; +1 Ответить
10. user1088693 02.10.19 06:36 Сейчас в теме
(7) В моем случае в справочнике "Контактные лица" изначально заведены ФИО в родительном падеже только в одном справочнике. Что с этим можно сделать в таком случае?
11. Ruschel 02.10.19 13:23 Сейчас в теме
(10) Я вам указал ссылку на компоненту, которая решит вашу задачу
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот