Столкнулся с тем, что число дней в договоре необходимо указывать в склонении (например, 3 (Трех) дней), перекопал инет и мануал 1С-ный, ничего не нашел. Может, я слепой или не там искал, не суть.
Накатал склонялку, реализовал до 999999, т.к. более не нужно. Можно посмотреть, как сделано, и добавить, кому надо, и больше, добавляем слово в структуру и его аналог, в общем, все просто.
Работает так: у функции на входе число прописью, обработанное стандартной функцией 1С ЧислоПрописью(...)
На выходе склоненное или, если не удалось, то, что передали.
Тестил так: от балды вбивал всякие числа - склоняет.
Вот код, может, кому пригодится.
Функция ПолучитьСтруктуруСклонени(ЧислоПрописью)
ЧислоПрописью = СокрЛП(ЧислоПрописью);
ПадежРодительный = новый структура;
ПадежРодительный.Вставить("Один","Одного");
ПадежРодительный.Вставить("Два","Двух");
ПадежРодительный.Вставить("Три","Трех");
ПадежРодительный.Вставить("Четыре","Четырех");
ПадежРодительный.Вставить("Пять","Пяти");
ПадежРодительный.Вставить("Шесть","Шести");
ПадежРодительный.Вставить("Семь","Семи");
ПадежРодительный.Вставить("Восемь","Восьми");
ПадежРодительный.Вставить("Девять","Девяти");
ПадежРодительный.Вставить("Десять","Десяти");
ПадежРодительный.Вставить("Одиннадцать","Одиннадцати");
ПадежРодительный.Вставить("Двенадцать","Двенадцати");
ПадежРодительный.Вставить("Тринадцать","Тринадцати");
ПадежРодительный.Вставить("Четырнадцать","Четырнадцати");
ПадежРодительный.Вставить("Пятнадцать","Пятнадцати");
ПадежРодительный.Вставить("Шестнадцать","Шестнадцати");
ПадежРодительный.Вставить("Семнадцать","Семнадцати");
ПадежРодительный.Вставить("Восемнадцать","Восемнадцати");
ПадежРодительный.Вставить("Девятнадцать","Девятнадцати");
ПадежРодительный.Вставить("Двадцать","Двадцати");
ПадежРодительный.Вставить("Тридцать","Тридцати");
ПадежРодительный.Вставить("Сорок","Сорока");
ПадежРодительный.Вставить("Пятьдесят","Пятидесяти");
ПадежРодительный.Вставить("Шестьдесят","Шестидесяти");
ПадежРодительный.Вставить("Семьдесят","Семидесяти");
ПадежРодительный.Вставить("Восемьдесят","Восьмидесяти");
ПадежРодительный.Вставить("Девяносто","Девятоста");
ПадежРодительный.Вставить("Сто","Ста");
ПадежРодительный.Вставить("Двести","Двухсот");
ПадежРодительный.Вставить("Триста","Трехсот");
ПадежРодительный.Вставить("Четыреста","Четырехсот");
ПадежРодительный.Вставить("Пятьсот","Пятисот");
ПадежРодительный.Вставить("Шестьсот","Шестисот");
ПадежРодительный.Вставить("Семьсот","Семисот");
ПадежРодительный.Вставить("Восемьсот","Восьмисот");
ПадежРодительный.Вставить("Девятьсот","Девятисот");
ПадежРодительный.Вставить("Тысяча","Тысячи");
ПадежРодительный.Вставить("Одна","Одной");
ПадежРодительный.Вставить("Две","Двух");
ПадежРодительный.Вставить("Тысяч","Тысяч");
ПадежРодительный.Вставить("Тысячи","Тысяч");
МассивСлов = новый массив;
готово = ложь;
ПервоеСлово = Истина;
НовоеСлово = "";
Перваябуква = "";
Вырезка= "";
ВернутьОшибка = ЧислоПрописью;
Пока НЕ Готово Цикл
НайденноеЗначение = "";
НайденныйПробел = Найти(ЧислоПрописью," ");
Если НайденныйПробел = 0 Тогда
Если ПервоеСлово Тогда
Если ПадежРодительный.Свойство(ЧислоПрописью, НайденноеЗначение) Тогда
Возврат НайденноеЗначение;
Иначе
Возврат ВернутьОшибка;
КонецЕсли;
Иначе
Вырезка = СокрЛП(ЧислоПрописью);
Перваябуква = Врег(ЛЕВ(Вырезка,1));
ЧислоПрописью = Перваябуква + Прав(Вырезка,СтрДлина(Вырезка)-1);
Если ПадежРодительный.Свойство(ЧислоПрописью, НайденноеЗначение) Тогда
НайденноеЗначение = НРЕГ(НайденноеЗначение);
НовоеСлово = НовоеСлово + НайденноеЗначение + " ";
Возврат сОКРлп(НовоеСлово);
Иначе
Возврат ВернутьОшибка;
КонецЕсли;
КонецЕсли;
Иначе
Вырезка = СокрЛП(ЛЕВ(ЧислоПрописью,НайденныйПробел));
Перваябуква = Врег(ЛЕВ(Вырезка,1));
Вырезка = Перваябуква + Прав(Вырезка,СтрДлина(Вырезка)-1);
Если ПадежРодительный.Свойство(Вырезка, НайденноеЗначение) Тогда
Если ПервоеСлово Тогда
НовоеСлово = НовоеСлово + НайденноеЗначение + " ";
первоеСлово = Ложь;
ЧислоПрописью = СокрЛП(Прав(ЧислоПрописью,СтрДлина(ЧислоПрописью)-НайденныйПробел));
Иначе
НовоеСлово = НовоеСлово + НРЕГ(НайденноеЗначение) + " ";
ЧислоПрописью = СокрЛП(Прав(ЧислоПрописью,СтрДлина(ЧислоПрописью)-НайденныйПробел));
КонецЕсли;
Иначе
Возврат ВернутьОшибка;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецФункции