|
|
|
Пропись числа | ☑ | ||
|---|---|---|---|---|
|
0
ehrmann
11.06.08
✎
12:56
|
Подскажите пожалуйста есть ли в 1С 8 функции для склонения числительных с существительными?
Для примера: "оплачено в течении 2 (ДВУХ) дней". Именно "двух", а не "два". |
|||
|
1
ehrmann
11.06.08
✎
13:04
|
Неужели никто не сталкивался?
|
|||
|
2
ehrmann
11.06.08
✎
14:01
|
Последний раз прошу.. а то придется писать самому
|
|||
|
3
vde69
11.06.08
✎
14:04
|
есть
|
|||
|
4
ehrmann
11.06.08
✎
14:05
|
=)
|
|||
|
5
Широкий
11.06.08
✎
14:05
|
Штатной возможности такой нет.. Напиши сам .. не думаю что это будет трудно
|
|||
|
6
ehrmann
11.06.08
✎
14:06
|
я так и думал
|
|||
|
7
vde69
11.06.08
✎
14:06
|
Глобальный контекст
ЧислоПрописью (NumberInWords) Синтаксис: ЧислоПрописью(<Число>, <Форматная строка>, <Параметры предмета исчисления>) Параметры: <Число> (обязательный) Тип: Число. Число, которое необходимо преобразовать в строку прописью. <Форматная строка> (необязательный) Тип: Строка. Форматная строка представляет собой строковое значение, включающее параметры форматирования. Параметры форматирования перечисляются через символ ";" (точка с запятой). Если параметр не указывается, используется значение параметра по умолчанию. Каждый параметр задается именем параметра, символом "=" (равно) и значением параметра. Значение параметра может указываться в одинарных или двойных кавычках. Это необходимо, если значение параметра содержит символы, используемые в синтаксисе форматной строки. Л (L) - Код локализации. По умолчанию используется код локализации, установленный в операционной системе. Примеры кодов локализации: ru_RU - Русский (Россия); en_US - Английский (США). НП (SN) - Включать/не включать название предмета исчисления (Булево), по умолчанию - Истина. НД (FN) - Включать/не включать название десятичных частей предмета исчисления (Булево), по умолчанию - Истина. ДП (FS) - Дробную часть выводить прописью/числом (Булево), по умолчанию - Ложь. <Параметры предмета исчисления> (необязательный) Тип: Строка. Представляет собой строковое значение, определяющее параметры предмета исчисления. Параметры предмета исчисления перечисляются через "," (запятая). Формат строки зависит от кода локализации. Для русского и белорусского языков (ru_RU, be_BY) "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2", где: "рубль, рубля, рублей, м" – предмет исчисления: рубль – единственное число именительный падеж, рубля – единственное число родительный падеж, рублей – множественное число родительный падеж, м – мужской род (ж – женский род, с - средний род); "копейка, копейки, копеек, ж" – дробная часть, аналогично предмету исчисления (может отсутствовать); "2" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2). Для украинского языка (uk_UA) "гривна, гривны, гривен, м, копейка, копейки, копеек, ж, 2", где: "гривна, гривны, гривен, м" – предмет исчисления: "гривна – единственное число именительный падеж, гривны – единственное число родительный падеж, гривен – множественное число родительный падеж, м – мужской род (ж – женский род, с - средний род); "копейка, копейки, копеек, ж" – дробная часть, аналогично предмету исчисления (может отсутствовать); "2" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2). Для польского языка (pl_PL) z?oty, z?ote, z?otych, m, grosz, grosze, groszy, m, 2 где: "z?oty, z?ote, z?otych, m " - предмет исчисления (m - мужской род, ? - женский род, ? - средний род, mo – личностный мужской род) z?oty - единственное число именительный падеж z?ote - единственное число винительный падеж z?otych - множественное число винительный падеж m - мужской род (? - женский род, ? - средний род, mo – личностный мужской род) "grosz, grosze, groszy, m " - дробная часть (может отсутствовать) (аналогично целой части) 2 - количество разрядов дробной части (может отсутствовать, по-умолчанию равно 2) Пример: Пропись = ЧислоПрописью(1832, “L=pl_PL;SN=true;FN=true;FS=true”, “z?oty, z?ote, z?otych, m, grosz, grosze, groszy, m, 2”); Для английского, финского и казахского языков (en_US, fi_FI, kk_KZ) "dollar, dollars, cent, cents, 2", где: "dollar, dollars" – предмет исчисления в единственном и множественном числе; "cent, cents" – дробная часть в единственном и множественном числе (может отсутствовать); "2" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2). Для немецкого языка (de_DE) "EURO, EURO, М, Cent, Cent, M, 2", где: "EURO, EURO, М" – предмет исчисления: EURO, EURO – предмет исчисления в единственном и множественном числе; М – мужской род (F – женский род, N - средний род); "Cent, Cent, M" – дробная часть, аналогично предмету исчисления (может отсутствовать); "2" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2). Для латышского языка (lv_LV) "lats, lati, latu, V, sant?ms, sant?mi, sant?mu, V, 2, J, J", где: "lats, lati, latu, v" – предмет исчисления: lats – для чисел заканчивающихся на 1, кроме 11 lati – для чисел заканчивающихся на 2-9 и 11 latu – множественное число (родительный падеж) используется после числительных 0, 10, 20,..., 90, 100, 200, ..., 1000, ..., 100000, v – мужской род (s – женский род); "sant?ms, sant?mi, sant?mu, V" – дробная часть, аналогично предмету исчисления (может отсутствовать); "2" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2); "J" - число 100 выводится как "Одна сотня" для предмета исчисления (N - как "Сто"), может отсутствовать, по умолчанию равно "J"; "J" - число 100 выводится как "Одна сотня" для дробной части (N - как "Сто"), может отсутствовать, по умолчанию равно "J". Для литовского языка (lt_LT) "litas, litai, lit?, М, centas, centai, cent?, М, 2", где: "litas, litai, lit?, М" – предмет исчисления: litas - единственное число целой части, litai - множественное число целой части от 2 до 9, lit? - множественное число целой части прочие, m - род целой части (f - женский род), "centas, centai, cent?, М" – дробная часть, аналогично предмету исчисления (может отсутствовать); "2" - количество разрядов дробной части (может отсутствовать, по умолчанию равно 2). Для эстонского языка (et_EE) "kroon, krooni, sent, senti, 2", где: "kroon, krooni" – – предмет исчисления в единственном и множественном числе; "sent, senti" – дробная часть в единственном и множественном числе (может отсутствовать); 2 – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2). Для болгарского языка (bg_BG) "лев, лева, м, стотинка, стотинки, ж, 2", где: "лев, лева, м" – предмет исчисления: лев - единственное число целой части, лева - множественное число целой части, м - род целой части, "стотинка, стотинки, ж" - дробная часть: стотинка - единственное число дробной части, стотинки - множественное число дробной части, ж - род дробной части, "2" - количество разрядов дробной части. Для румынского языка (ro_RO) "leu, lei, M, ban, bani, W, 2" "leu, lei, M" – предмет исчисления: leu - единственное число целой части, lei - множественное число целой части, M - род целой части, "ban, bani, W" - дробная часть: ban - единственное число дробной части, bani - множественное число дробной части, W - род дробной части, "2" - количество разрядов дробной части. Для грузинского языка (ka_GE) "????, ?????, 2" ???? - целая часть ????? - дробная часть "2" - количество разрядов дробной части. Для вьетнамского языка (vi_VN) "dong, xu, 2" dong, - целая часть xu, - дробная часть 2 - количество разрядов дробной части. Значение по умолчанию: Пустая строка Возвращаемое значение: Тип: Строка. Представление числа прописью. Описание: Формирует представление числа прописью в соответствии с заданными форматной строкой и параметрами предмета исчисления. Пример: // Пример форматной строки для вывода числа прописью на русском // языке, с выводом целой и дробной части прописью и выводом // предмета исчисления. ФормСтрока = "Л = ru_RU; ДП = Истина"; ПарПредмета="доллар,доллара,долларов,м,цент,цента,центов,м,2"; ПрописьЧисла = ЧислоПрописью(2341.56, ФормСтрока, ПарПредмета); // Результат вычисления: // "Две тысячи триста сорок один доллар пятьдесят шесть центов" |
|||
|
8
Поручик
11.06.08
✎
14:07
|
Из туповой УТ, возможно есть в остальных
// Функция преобразует строку к множественному числу // // Параметры: // Слово1 - форма слова в ед числе ("шкаф") // Слово2 - форма слова для числит 2-4 ("шкафа") // Слово3 - форма слова для числит 5-10 ("шкафов") // ЦелоеЧисло - целое число // // Возвращаемое значение: // строку - одну из строк в зависимости от параметра ЦелоеЧисло // // Описание: // Предназначена для формирования "правильной" подписи к числительным // Функция ФормаМножественногоЧисла(Слово1, Слово2, Слово3, ЦелоеЧисло) Экспорт |
|||
|
9
Широкий
11.06.08
✎
14:29
|
+5 а может будет и трудно :)
|
|||
|
10
ehrmann
11.06.08
✎
14:49
|
(8) эта функция касается изменения окончания у существичельного, а мне надо изменять его у числа
|
|||
|
11
ehrmann
11.06.08
✎
14:55
|
(7) а это вобще ответ не на поставленный вопрос
|
|||
|
12
Широкий
11.06.08
✎
15:38
|
Функция ВернутьСтроковоеПредставлениеЧисла(ИсхЧисло)
Если ИсхЧисло<=0 Тогда Возврат "нуля"; ИначеЕсли ИсхЧисло>999 Тогда Возврат "сбился со счета"; КонецЕсли; Структура=Новый Структура; Структура.Вставить("Число0",""); Структура.Вставить("Число1","одного"); Структура.Вставить("Число2","двух"); Структура.Вставить("Число3","трех"); Структура.Вставить("Число4","четырех"); Структура.Вставить("Число5","пяти"); Структура.Вставить("Число6","шести"); Структура.Вставить("Число7","семи"); Структура.Вставить("Число8","восьми"); Структура.Вставить("Число9","девяти"); Структура.Вставить("Число10","десяти"); Структура.Вставить("Число11","одиннадцати"); Структура.Вставить("Число12","двенадцати"); Структура.Вставить("Число13","тринадцати"); Структура.Вставить("Число14","четырнадцати"); Структура.Вставить("Число15","пятнадцати"); Структура.Вставить("Число16","шестнадцати"); Структура.Вставить("Число17","семнадцати"); Структура.Вставить("Число18","восемнадцати"); Структура.Вставить("Число19","девятнадцати"); Структура.Вставить("Число20","двадцати"); Структура.Вставить("Число30","тридцати"); Структура.Вставить("Число40","сорока"); Структура.Вставить("Число50","пятидесяти"); Структура.Вставить("Число60","шестидесяти"); Структура.Вставить("Число70","семидесяти"); Структура.Вставить("Число80","восьмидесяти"); Структура.Вставить("Число90","девяносто"); Структура.Вставить("Число100","ста"); Структура.Вставить("Число200","двухсот"); Структура.Вставить("Число300","трехсот"); Структура.Вставить("Число400","четырехсот"); Структура.Вставить("Число500","пятисот"); Структура.Вставить("Число600","шестисот"); Структура.Вставить("Число700","семисот"); Структура.Вставить("Число800","восьмисот"); Структура.Вставить("Число900","девятисот"); СтроковоеПредставление=Формат(ИсхЧисло,"ЧГ="); ДлинаСтроковогоПредставления=СтрДлина(СтроковоеПредставление); ПредставлениеЧисла=""; ДоДвадцати=Число(Прав(СтроковоеПредставление,2)); Если ДоДвадцати<=20 Тогда ТекСтрока="Число"+ДоДвадцати; ПредставлениеЧисла=Структура[ТекСтрока]+ПредставлениеЧисла; Счетчик=2; Нули="00"; Иначе Счетчик=0; Нули=""; КонецЕсли; Пока Счетчик<ДлинаСтроковогоПредставления Цикл ТекСтрока="Число"+Сред(СтроковоеПредставление,ДлинаСтроковогоПредставления-Счетчик,1)+Нули; ПредставлениеЧисла=Структура[ТекСтрока]+" "+ПредставлениеЧисла; Счетчик=Счетчик+1; Нули=Нули+"0"; КонецЦикла; Возврат ПредставлениеЧисла; КонецФункции |
|||
|
13
ehrmann
11.06.08
✎
16:33
|
Для чисел до 20. Дальше можно делить число на слова и аналогично поступать
// Параметры: // а1 - число // а2 - падеж: 1 - именительный // 2 - родительный // 3 - дательный // 4 - винительный // 5 - творительный // 6 - предложный Функция ПодобратьОкончаниеЧислаВСловосочетании(а1, а2) Если а1 = 0 Или а1 > 20 Тогда Возврат ""; КонецЕсли; ЧислоПрописью = НРег(СокрЛП(ЧислоПрописью(а1,,",,,,,,,,0"))); // Именительный и винительный Если а2 = 1 Или а2 = 4 Тогда Возврат ЧислоПрописью; КонецЕсли; Если а1 = 1 Тогда ЧислоПрописью = Лев(ЧислоПрописью, 2) + Сред(ЧислоПрописью, 4); ИначеЕсли а1 = 8 Тогда ЧислоПрописью = Лев(ЧислоПрописью, 3) + "ь" + Сред(ЧислоПрописью, 5); КонецЕсли; Если Прав(ЧислоПрописью, 1) = "н" Тогда Если а2 = 2 Тогда Окончание = "ного"; ИначеЕсли а2 = 3 Тогда Окончание = "ному"; ИначеЕсли а2 = 5 Тогда Окончание = "ним"; Иначе Окончание = "ном"; КонецЕсли; ИначеЕсли Прав(ЧислоПрописью, 1) = "а" Тогда Если а2 = 2 Тогда Окончание = "ух"; ИначеЕсли а2 = 3 Тогда Окончание = "ум"; ИначеЕсли а2 = 5 Тогда Окончание = "умя"; Иначе Окончание = "ум"; КонецЕсли; ИначеЕсли Прав(ЧислоПрописью, 1) = "и" Тогда Если а2 = 2 Тогда Окончание = "ех"; ИначеЕсли а2 = 3 Тогда Окончание = "ем"; ИначеЕсли а2 = 5 Тогда Окончание = "емя"; Иначе Окончание = "ех"; КонецЕсли; ИначеЕсли Прав(ЧислоПрописью, 1) = "е" Тогда Если а2 = 2 Тогда Окончание = "ех"; ИначеЕсли а2 = 3 Тогда Окончание = "ем"; ИначеЕсли а2 = 5 И СтрДлина(ЧислоПрописью)<5 Тогда Окончание = "емя"; ИначеЕсли а2 = 5 Тогда Окончание = "ьмя"; Иначе Окончание = "ех"; КонецЕсли; ИначеЕсли Прав(ЧислоПрописью, 1) = "ь" Тогда Если а2 = 2 или а2 = 3 или а2 = 6 Тогда Окончание = "и"; Иначе Окончание = "ью"; КонецЕсли; КонецЕсли; ЧислоПрописью = Лев(ЧислоПрописью, СтрДлина(ЧислоПрописью)-1) + Окончание; Возврат ЧислоПрописью; КонецФункции |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |