Склонение строки с аббривиатурой

1. userOleg 03.07.24 16:15 Сейчас в теме
Кто подскажет как выполнить склонение "Электродвигатель ТЕ-006". чтобы получилось "Электродвигателя ТЕ-006"
Пробовал так:
РезультатСклонения = ПолучитьСклоненияСтроки( "Электродвигатель ТЕ-006", ,"ПД=Родительный")

Выдает "Электродвигателя ТЕХ-006"

Как просклонять без аббревиатуры?
Найденные решения
14. userOleg 04.07.24 12:43 Сейчас в теме
(13) СтрРазделить() Пока самая подходящая идея.
16. userOleg 04.07.24 14:59 Сейчас в теме
Пока написал такую функцию:

Функция ПолучитьСклоненияСтрокиБезЗГЛ(СклоняемаяСтрока,Род,Формат)  Экспорт
	 МассивСлов= СтрРазделить(СклоняемаяСтрока," ");
	 Результат="";
	 Для каждого Элемент Из МассивСлов  Цикл
		 Если Лев(Элемент,2)=ВРег(Лев(Элемент,2)) Тогда
		 иначе
			 МассивЭлемент=ПолучитьСклоненияСтроки(Элемент, ,Формат); 
			 Элемент=МассивЭлемент[0]";
		 КонецЕсли;
		 Результат= Результат+" "+Элемент;	 
	 КонецЦикла;
	 Возврат Результат;		
 КонецФункции
Показать



Для моих случаев подходит, если 2 заглавные буквы значит это не слово и склонять не нужно.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
15. vladimir_korshun 87 04.07.24 12:54 Сейчас в теме
(1)
В 1С, начиная с версии 8.3.13 доступны две встроенные функции для склонения:
ПолучитьСклоненияСтроки()
ПолучитьСклоненияСтрокиПоЧислу()

А что не будет получаться, обработать руками.
СтрЗаменить("что-то не правильное", "что-то", "как нужно");

Когда совсем ничего не получается, создай свой регистр, и пиши туда склонения Номенклатуры руками.
2. haereticus 03.07.24 16:53 Сейчас в теме
Например, можно предварительно анализировать строку и отбрасывать все что написано заглавными буквами и цифрами, остальное склонять и потом соединять обратно
user1880116; Zevzm; +2 Ответить
3. userOleg 04.07.24 07:47 Сейчас в теме
(2) Это если из строка из двух частей, слово и модель, а если что то типа "Двигатель УЕ-50 головного устройства ДОГ-40 на базе угловой машины ТОР" тут можно потом собрать такого монстра ;-)
6. Vadim-SH 04.07.24 09:20 Сейчас в теме
(3) А если аббревиатуру обернуть в кавычки, будет склонять?
9. userOleg 04.07.24 09:59 Сейчас в теме
(6) Если в кавычки забить. то не склоняется, но в справочнике уже без кавычек все набрано.
12. SlavaKron 04.07.24 10:28 Сейчас в теме
(3)
Двигатель УЕ-50 головного устройства ДОГ-40 на базе угловой машины ТОР
Никак. В учетных системах такой фигней не принято страдать. Для красоты в печатных формах можно добавлять определяемое слово, а наименование в кавычках без склонения, например:
вместо Характеристики двигателя УЕ-50 головного устройства ДОГ-40 на базе угловой машины ТОР...
Характеристики товара: "Двигатель УЕ-50 головного устройства ДОГ-40 на базе угловой машины ТОР"...
13. haereticus 04.07.24 10:38 Сейчас в теме
(3) Делаешь СтрРазделить() , разделитель пробел, оно тебе возвращает массив, затем анализируешь каждый элемент массива и собираешь.
Но вообще, насколько я понимаю, надо склонять только первое слово в описании(если оно не числовое и не заглавными буквами), т.е. задача несколько упрощается
14. userOleg 04.07.24 12:43 Сейчас в теме
(13) СтрРазделить() Пока самая подходящая идея.
4. userOleg 04.07.24 07:48 Сейчас в теме
Неужели не существует простого решения?
5. user1880116 04.07.24 08:53 Сейчас в теме
(4)
Неужели не
Как ты сам-то собираешься отличать аббревиатуру "ТЕХ" от склоняемого слова "ЭТИХ", турист?
7. userOleg 04.07.24 09:32 Сейчас в теме
(5) Очень просто то , что большими буквами мне не нужно склонять.
8. user2033930 04.07.24 09:44 Сейчас в теме
10. odinsmot 04.07.24 10:06 Сейчас в теме
В конфигурации есть регистр сведений СклоненияПредставленийОбъектов?
11. userOleg 04.07.24 10:09 Сейчас в теме
(10)Конфигурация своя с нуля.
16. userOleg 04.07.24 14:59 Сейчас в теме
Пока написал такую функцию:

Функция ПолучитьСклоненияСтрокиБезЗГЛ(СклоняемаяСтрока,Род,Формат)  Экспорт
	 МассивСлов= СтрРазделить(СклоняемаяСтрока," ");
	 Результат="";
	 Для каждого Элемент Из МассивСлов  Цикл
		 Если Лев(Элемент,2)=ВРег(Лев(Элемент,2)) Тогда
		 иначе
			 МассивЭлемент=ПолучитьСклоненияСтроки(Элемент, ,Формат); 
			 Элемент=МассивЭлемент[0]";
		 КонецЕсли;
		 Результат= Результат+" "+Элемент;	 
	 КонецЦикла;
	 Возврат Результат;		
 КонецФункции
Показать



Для моих случаев подходит, если 2 заглавные буквы значит это не слово и склонять не нужно.
Оставьте свое сообщение

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