|
Как просклонять фразу в 1с 8.2 в зависимости от числительного? | ☑ | ||
---|---|---|---|---|
0
Eeelena
30.03.15
✎
11:21
|
Подскажите, как просклонять фразу в 1с 8.2 в зависимости от числительного? Например фраза, 21 КАЛЕНДАРНЫХ ДНЕЙ
|
|||
1
Cube
30.03.15
✎
11:22
|
(0) Именно эти слова надо склонять или произвольные?
|
|||
2
Eeelena
30.03.15
✎
11:22
|
даже скорее фраза "на 21 календарный день"
|
|||
3
Eeelena
30.03.15
✎
11:23
|
(1) именно вот эту фразу "на 21 календарный день" только меняется число и в зависимости от числа должно меняться склонение слов
|
|||
4
Cube
30.03.15
✎
11:24
|
(3) Это можно. Ожидайте... :)
|
|||
5
Fish
30.03.15
✎
11:25
|
(3) Напиши свою функцию склонения.
|
|||
6
Kookish
30.03.15
✎
11:26
|
(0) за образец можно взять функцию суммы прописью из типовых бухии и ЗУП.
|
|||
7
Kookish
30.03.15
✎
11:27
|
(6)+ Более того, где-то я видел универсальную функцию, где фразы для разных вариантов передаются прямо в аргументах. Их не так уж много.
|
|||
8
Kookish
30.03.15
✎
11:29
|
(7)+ Еще более того, такая функция встроена в платформу. ЧислоПрописью(<Число>, <ФорматнаяСтрока>, <ПараметрыПредметаИсчисления>)
|
|||
9
Масянька
30.03.15
✎
11:30
|
(3) Дарю
Функция глФразаПрописью(мЧисло, Корень) Экспорт Если (мЧисло >= 10) и (мЧисло <= 20) Тогда ЧислоПрописью = Нрег(Формат(мЧисло, "ЧП")); Корень = Корень + "ий"; Фраза = глПерваяБукваЗаглавная(ЧислоПрописью) + " " + Корень; Иначе ВсеЧислоПрописью = НРег(Формат(мЧисло, "ЧП")); Если мЧисло > 20 Тогда ПоследняяЦифраЧислом = мЧисло % 10; ПервыеЦифрыПрописью = глПолучитьСловаДоПоследнегоИзСтроки(ВсеЧислоПрописью); ПоследняяЦифраПрописью = глПолучитьПоследнееСловоИзСтроки(ВсеЧислоПрописью); ИначеЕсли мЧисло < 10 Тогда ПоследняяЦифраЧислом = мЧисло; ПервыеЦифрыПрописью = ""; ПоследняяЦифраПрописью = Нрег(Формат(мЧисло, "ЧП")); КонецЕсли; Если ПоследняяЦифраЧислом = 1 Тогда ПоследняяЦифраПрописью = "одно"; Корень = Корень + "ие"; ИначеЕсли (ПоследняяЦифраЧислом >= 2) и (ПоследняяЦифраЧислом <= 4) Тогда Корень = Корень + "ия"; Иначе Корень = Корень + "ий"; КонецЕсли; ВсеЧислоПрописью = СокрЛП(ПервыеЦифрыПрописью + " " + ПоследняяЦифраПрописью); Фраза = СокрЛП(глПерваяБукваЗаглавная(ВсеЧислоПрописью) + " " + Корень); КонецЕсли; Возврат Фраза; КонецФункции // глФразаПрописью() Код - семерочный, корень = наименован. Думаю - разберешься. |
|||
10
Масянька
30.03.15
✎
11:31
|
+(9) Добавить - второе слово.
|
|||
11
Cube
30.03.15
✎
11:33
|
(9) Уууу, у меня круче:
КоличествоДней = 21; СокрЛП(ЧислоПрописью(КоличествоДней, , "календарный,календарных,календарных,м,,,,,0")) + " " + СокрЛП(СтрЗаменить(ЧислоПрописью(КоличествоДней, , "день,дня,дней,м,,,,,0"), ЧислоПрописью(КоличествоДней, , ",,,,,,,,0"), "")) |
|||
12
Масянька
30.03.15
✎
11:36
|
(11) Я - на крутость не претендую. Женщина :)
|
|||
13
Поpyчик-4
30.03.15
✎
11:36
|
(0) В типовых есть функция
// Функция преобразует строку к множественному числу // // Параметры: // Слово1 - форма слова в ед числе ("шкаф") // Слово2 - форма слова для числит 2-4 ("шкафа") // Слово3 - форма слова для числит 5-10 ("шкафов") // ЦелоеЧисло - целое число // // Возвращаемое значение: // строку - одну из строк в зависимости от параметра ЦелоеЧисло // // Описание: // Предназначена для формирования "правильной" подписи к числительным // Функция ФормаМножественногоЧисла(Слово1, Слово2, Слово3, Знач ЦелоеЧисло) Экспорт В БП 3.0 модуль ОбщегоНазначенияБПКлиентСервер, в УТ 11.1 ОбщегоНазначенияУТКлиентСервер |
|||
14
Cube
30.03.15
✎
11:38
|
(11) Ах, забыл, что количество дней надо числом, а не прописью. Исправляюсь:
КоличествоДней = 21; Фраза = "за " + КоличествоДней + " " + СокрЛП(СтрЗаменить(ЧислоПрописью(КоличествоДней, , "календарный,календарных,календарных,м,,,,,0"), ЧислоПрописью(КоличествоДней, , ",,,,,,,,0"), "")) + " " + СокрЛП(СтрЗаменить(ЧислоПрописью(КоличествоДней, , "день,дня,дней,м,,,,,0"), ЧислоПрописью(КоличествоДней, , ",,,,,,,,0"), "")) |
|||
15
Cube
30.03.15
✎
11:39
|
(12) ^^
|
|||
16
Eeelena
30.03.15
✎
11:42
|
спасибо вам огромное!!! (14)
|
|||
17
Cube
30.03.15
✎
11:43
|
(16) Была бы у тебя фотка в профиле, я б может каждый раз так помогал :)
|
|||
18
Eeelena
30.03.15
✎
12:31
|
(17) учту:)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |