При помощи приведенных ниже функций можно вывести дату прописью, например:
03.08.2009 — третье августа две тысячи девятого года
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
// Функция Дата прописью // Параметры: // ДП - Дата // Возвращаемое значение: // дата прописью // // Модификация для v8: Evgeny Migachev Функция ДатаПрописью(ДП) Экспорт стрРез = ""; Д=Формат(ДП,"ДЛФ=D"); спсМес = Новый СписокЗначений; спсМес.Добавить("января"); спсМес.Добавить("февраля"); спсМес.Добавить("марта"); спсМес.Добавить("апреля"); спсМес.Добавить("мая"); спсМес.Добавить("июня"); спсМес.Добавить("июля"); спсМес.Добавить("августа"); спсМес.Добавить("сентября"); спсМес.Добавить("октября"); спсМес.Добавить("ноября"); спсМес.Добавить("декабря"); спсЧисл = Новый СписокЗначений; спсЧисл.Добавить("первое","первого"); спсЧисл.Добавить("второе","второго"); спсЧисл.Добавить("третье","третьего"); спсЧисл.Добавить("четвертое","четвертого"); спсЧисл.Добавить("пятое","пятого"); спсЧисл.Добавить("шестое","шестого"); спсЧисл.Добавить("седьмое","седьмого"); спсЧисл.Добавить("восьмое","восьмого"); спсЧисл.Добавить("девятое","девятого"); //числительные им.падеж спсЧислИм = Новый СписокЗначений; спсЧислИм.Добавить("тысяча","тысячного"); спсЧислИм.Добавить("две тысячи","двухтысячного"); спсЧислИм.Добавить("три тысячи","трехтысячного"); спсЧислИм.Добавить("четыре тысячи","четырёхтысячного"); спсЧислИм.Добавить("пять","пятитысячного"); спсЧислИм.Добавить("шесть","шеститысячного"); спсЧислИм.Добавить("семь","семитысячного"); спсЧислИм.Добавить("восемь","восьмитысячного"); спсЧислИм.Добавить("девять","девятитысячного"); спсСотни = Новый СписокЗначений; спсСотни.Добавить("сто"); спсСотни.Добавить("двести"); спсСотни.Добавить("триста"); спсСотни.Добавить("четыреста"); спсСотни.Добавить("пятьсот"); спсСотни.Добавить("шестьсот"); спсСотни.Добавить("семьсот"); спсСотни.Добавить("восемьсот"); спсСотни.Добавить("девятьсот"); //десятки им.падеж спсДесИм = Новый СписокЗначений; спсДесИм.Добавить("","десятого"); спсДесИм.Добавить("двадцать","двадцатого"); спсДесИм.Добавить("тридцать","тридцатого"); спсДесИм.Добавить("сорок","сорокового"); спсДесИм.Добавить("пятьдесят","пятидесятого"); спсДесИм.Добавить("шестьдесят","шестидесятого"); спсДесИм.Добавить("семьдесят","семидесятого"); спсДесИм.Добавить("восемьдесят","восьмидесятого"); спсДесИм.Добавить("девяносто","девяностого"); //субдесятки род.падеж спсСубДесРод = Новый СписокЗначений; спсСубДесРод.Добавить("одиннадцатого"); спсСубДесРод.Добавить("двенадцатого"); спсСубДесРод.Добавить("тринадцатого"); спсСубДесРод.Добавить("четырнадцатого"); спсСубДесРод.Добавить("пятнадцатого"); спсСубДесРод.Добавить("шестнадцатого"); спсСубДесРод.Добавить("семнадцатого"); спсСубДесРод.Добавить("восемнадцатого"); спсСубДесРод.Добавить("девятнадцатого"); спсДес = Новый СписокЗначений; спсДес.Добавить("десятое"); спсДес.Добавить("двадцатое","двадцать"); спсДес.Добавить("тридцатое","тридцать"); спсДес.Добавить("сороковое","тридцать"); спсДес.Добавить("пятидесятое","тридцать"); спсДес.Добавить("шестидесятое","тридцать"); спсДес.Добавить("семидесятое","тридцать"); спсСубДес = Новый СписокЗначений; спсСубДес.Добавить("одиннадцатое"); спсСубДес.Добавить("двенадцатое"); спсСубДес.Добавить("тринадцатое"); спсСубДес.Добавить("четырнадцатое"); спсСубДес.Добавить("пятнадцатое"); спсСубДес.Добавить("шестнадцатое"); спсСубДес.Добавить("семнадцатое"); спсСубДес.Добавить("восемнадцатое"); спсСубДес.Добавить("девятнадцатое"); спсДаты = СтрЗаменить(СокрЛП(Д),".",Символы.ПС); //разбираем день стрДень = СокрЛП(Число(СтрПолучитьСтроку(спсДаты,1))); Если СтрДлина(стрДень)=1 Тогда стрДень = спсЧисл.Получить(Число(стрДень)-1).Значение; Иначе десДень = Число(Лев(стрДень,1)); едДень = Число(Прав(стрДень,1)); Если едДень=0 Тогда стрДень = спсДес.Получить(десДень-1).Значение; Иначе Если десДень>1 Тогда т = Строка(спсДес.Получить(десДень-1)); стрДень = т+" "+Строка(спсЧисл.Получить(едДень-1).Значение); Иначе стрДень = спсСубДес.Получить(едДень-1).Значение; КонецЕсли; КонецЕсли; КонецЕсли; //разбираем месяц стрМес = спсМес.Получить(Число(СтрПолучитьСтроку(спсДаты,2))-1).Значение; //разбираем год стрГод = СтрПолучитьСтроку(спсДаты,3); длинаГода = СтрДлина(стрГод); Если длинаГода=4 Тогда тыс = Сред(стрГод,1,1); сот = Сред(стрГод,2,1); дес = Сред(стрГод,3,1); ед = Сред(стрГод,4,1); _т = спсЧислИм.Получить(Число(тыс)-1).Значение; Если (Число(сот)=0) и (Число(дес)=0) и (Число(ед)=0) Тогда миллениум = Строка(спсЧислИм.Получить(Число(тыс)-1)); стрГод = миллениум; Иначе с = ""; дс = ""; е = ""; Если Число(сот)<>0 Тогда с = спсСотни.Получить(Число(сот)-1).Значение; КонецЕсли; Если Число(дес)<>0 Тогда Если Число(ед)=0 Тогда дг = Строка(спсДесИм.Получить(Число(дес)-1)); дс = дг; Иначе дс = спсСубДесРод.Получить(Число(ед)-1).Значение; КонецЕсли; КонецЕсли; Если (Число(дес)>1) или (Число(дес)=0) Тогда Если Число(ед)<>0 Тогда е =Строка(спсЧисл.Получить(Число(ед)-1)); КонецЕсли; КонецЕсли; стрГод = Строка(_т)+" "+Строка(с)+" "+Строка(дс)+" "+Строка(е); КонецЕсли; Иначе КонецЕсли; стрГод = стрГод+" года"; стрГод = СтрЗаменить(стрГод," "," "); стрРез = Строка(стрДень)+" "+Строка(стрМес)+" "+Строка(стрГод); стрРез = СтрЗаменить(стрРез," "," "); Возврат стрРез; КонецФункции Процедура КнопкаВыполнитьНажатие(Кнопка) сообщить(ДатаПрописью(РеквизитДатаНаФорме)); КонецПроцедуры |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
// ПрописьДата() // // Параметры: // Д - дата в формате ДД.MM.ГГГГ // Возвращаемое значение: // дата прописью // // Автор: hunter Функция глПрописьДата(Д) Экспорт стрРез = ""; спсМес = СоздатьОбъект("СписокЗначений"); спсМес.ДобавитьЗначение("января"); спсМес.ДобавитьЗначение("февраля"); спсМес.ДобавитьЗначение("марта"); спсМес.ДобавитьЗначение("апреля"); спсМес.ДобавитьЗначение("мая"); спсМес.ДобавитьЗначение("июня"); спсМес.ДобавитьЗначение("июля"); спсМес.ДобавитьЗначение("августа"); спсМес.ДобавитьЗначение("сентября"); спсМес.ДобавитьЗначение("октября"); спсМес.ДобавитьЗначение("ноября"); спсМес.ДобавитьЗначение("декабря"); спсЧисл = СоздатьОбъект("СписокЗначений"); спсЧисл.ДобавитьЗначение("первое","первого"); спсЧисл.ДобавитьЗначение("второе","второго"); спсЧисл.ДобавитьЗначение("третье","третьего"); спсЧисл.ДобавитьЗначение("четвертое","четвертого"); спсЧисл.ДобавитьЗначение("пятое","пятого"); спсЧисл.ДобавитьЗначение("шестое","шестого"); спсЧисл.ДобавитьЗначение("седьмое","седьмого"); спсЧисл.ДобавитьЗначение("восьмое","восьмого"); спсЧисл.ДобавитьЗначение("девятое","девятого"); //числительные им.падеж спсЧислИм = СоздатьОбъект("СписокЗначений"); спсЧислИм.ДобавитьЗначение("тысяча","тысячного"); спсЧислИм.ДобавитьЗначение("две тысячи","двухтысячного"); спсЧислИм.ДобавитьЗначение("три тысячи","трехтысячного"); спсЧислИм.ДобавитьЗначение("четыре тысячи","четырёхтысячного"); спсЧислИм.ДобавитьЗначение("пять","пятитысячного"); спсЧислИм.ДобавитьЗначение("шесть","шеститысячного"); спсЧислИм.ДобавитьЗначение("семь","семитысячного"); спсЧислИм.ДобавитьЗначение("восемь","восьмитысячного"); спсЧислИм.ДобавитьЗначение("девять","девятитысячного"); спсСотни = СоздатьОбъект("СписокЗначений"); спсСотни.ДобавитьЗначение("сто"); спсСотни.ДобавитьЗначение("двести"); спсСотни.ДобавитьЗначение("триста"); спсСотни.ДобавитьЗначение("четыреста"); спсСотни.ДобавитьЗначение("пятьсот"); спсСотни.ДобавитьЗначение("шестьсот"); спсСотни.ДобавитьЗначение("семьсот"); спсСотни.ДобавитьЗначение("восемьсот"); спсСотни.ДобавитьЗначение("девятьсот"); //десятки им.падеж спсДесИм = СоздатьОбъект("СписокЗначений"); спсДесИм.ДобавитьЗначение("","десятого"); спсДесИм.ДобавитьЗначение("двадцать","двадцатого"); спсДесИм.ДобавитьЗначение("тридцать","тридцатого"); спсДесИм.ДобавитьЗначение("сорок","сорокового"); спсДесИм.ДобавитьЗначение("пятьдесят","пятидесятого"); спсДесИм.ДобавитьЗначение("шестьдесят","шестидесятого"); спсДесИм.ДобавитьЗначение("семьдесят","семидесятого"); спсДесИм.ДобавитьЗначение("восемьдесят","восьмидесятого"); спсДесИм.ДобавитьЗначение("девяносто","девяностого"); //субдесятки род.падеж спсСубДесРод = СоздатьОбъект("СписокЗначений"); спсСубДесРод.ДобавитьЗначение("одиннадцатого"); спсСубДесРод.ДобавитьЗначение("двенадцатого"); спсСубДесРод.ДобавитьЗначение("тринадцатого"); спсСубДесРод.ДобавитьЗначение("четырнадцатого"); спсСубДесРод.ДобавитьЗначение("пятнадцатого"); спсСубДесРод.ДобавитьЗначение("шестнадцатого"); спсСубДесРод.ДобавитьЗначение("семнадцатого"); спсСубДесРод.ДобавитьЗначение("восемнадцатого"); спсСубДесРод.ДобавитьЗначение("девятнадцатого"); спсДес = СоздатьОбъект("СписокЗначений"); спсДес.ДобавитьЗначение("десятое"); спсДес.ДобавитьЗначение("двадцатое","двадцать"); спсДес.ДобавитьЗначение("тридцатое","тридцать"); спсДес.ДобавитьЗначение("сороковое","тридцать"); спсДес.ДобавитьЗначение("пятидесятое","тридцать"); спсДес.ДобавитьЗначение("шестидесятое","тридцать"); спсДес.ДобавитьЗначение("семидесятое","тридцать"); спсСубДес = СоздатьОбъект("СписокЗначений"); спсСубДес.ДобавитьЗначение("одиннадцатое"); спсСубДес.ДобавитьЗначение("двенадцатое"); спсСубДес.ДобавитьЗначение("тринадцатое"); спсСубДес.ДобавитьЗначение("четырнадцатое"); спсСубДес.ДобавитьЗначение("пятнадцатое"); спсСубДес.ДобавитьЗначение("шестнадцатое"); спсСубДес.ДобавитьЗначение("семнадцатое"); спсСубДес.ДобавитьЗначение("восемнадцатое"); спсСубДес.ДобавитьЗначение("девятнадцатое"); спсДаты = СтрЗаменить(СокрЛП(Д),".",РазделительСтрок); //разбираем день стрДень = СокрЛП(Число(СтрПолучитьСтроку(спсДаты,1))); Если СтрДлина(стрДень)=1 Тогда стрДень = спсЧисл.ПолучитьЗначение(Число(стрДень)); Иначе десДень = Число(Лев(стрДень,1)); едДень = Число(Прав(стрДень,1)); Если едДень=0 Тогда стрДень = спсДес.ПолучитьЗначение(десДень); Иначе Если десДень>1 Тогда т = ""; спсДес.ПолучитьЗначение(десДень,т); стрДень = т+" "+спсЧисл.ПолучитьЗначение(едДень); Иначе стрДень = спсСубДес.ПолучитьЗначение(едДень); КонецЕсли; КонецЕсли; КонецЕсли; //разбираем месяц стрМес = спсМес.ПолучитьЗначение(Число(СтрПолучитьСтроку(спсДаты,2))); //разбираем год стрГод = СтрПолучитьСтроку(спсДаты,3); длинаГода = СтрДлина(стрГод); Если длинаГода=4 Тогда тыс = Сред(стрГод,1,1); сот = Сред(стрГод,2,1); дес = Сред(стрГод,3,1); ед = Сред(стрГод,4,1); _т = спсЧислИм.ПолучитьЗначение(Число(тыс)); Если (Число(сот)=0) и (Число(дес)=0) и (Число(ед)=0) Тогда миллениум = ""; спсЧислИм.ПолучитьЗначение(Число(тыс),миллениум); стрГод = миллениум; Иначе с = ""; дс = ""; е = ""; Если Число(сот)<>0 Тогда с = спсСотни.ПолучитьЗначение(Число(сот)); КонецЕсли; Если Число(дес)<>0 Тогда Если Число(ед)=0 Тогда _дг = ""; спсДесИм.ПолучитьЗначение(Число(дес),_дг); дс = _дг; Иначе Если Число(дес)>1 Тогда дс = спсДесИм.ПолучитьЗначение(Число(дес)); Иначе дс = спсСубДесРод.ПолучитьЗначение(Число(ед)); КонецЕсли; КонецЕсли; КонецЕсли; Если (Число(дес)>1) или (Число(дес)=0) Тогда Если Число(ед)<>0 Тогда //е = ""; спсЧисл.ПолучитьЗначение(Число(ед),е); КонецЕсли; КонецЕсли; стрГод = _т+?(ПустоеЗначение(с)=0," ","")+с+?(ПУстоеЗначение(дс)=0," ","")+дс+" "+е; КонецЕсли; Иначе КонецЕсли; стрГод = стрГод+" года"; стрРез = стрДень+" "+стрМес+" "+стрГод; //Сообщить(стрДень+" "+стрМес+" "+стрГод); Возврат стрРез; КонецФункции |