Основная функция будет использовать в себе три вспомогательных:
Код 1C v 8.х Функция РазностьМеждуДатамиВМесяцах(Дата1,Дата2)
Год1 = Год( Дата1 ) ;
Год2 = Год( Дата2 ) ;
Месяц1 = Месяц( Дата1 ) ;
Месяц2 = Месяц( Дата2 ) ;
День1 = День( Дата1 ) ;
День2 = День( Дата2 ) ;
Результат = ( Год1 - Год2 ) * 12 + Месяц1 - Месяц2 ;
Если Результат < 0 Тогда Результат = 0 - Результат; КонецЕсли ;
Если ( ( Дата1 > Дата2 ) И ( День1 < День2 ) ) ИЛИ ( ( Дата1 < Дата2 ) И ( День1 > День2 ) ) Тогда
Результат = Результат - 1 ;
КонецЕсли ;
Возврат Результат;
КонецФункции
Код 1C v 8.х Функция ВозрастВМесяцахИГодах(Месяцы)
Структура = Новый Структура;
Структура. Вставить( "Год" ) ;
Структура. Вставить( "Месяц" ) ;
Структура. Месяц = Месяцы % 12 ;
Структура. Год = ( Месяцы - Структура. Месяц) / 12 ;
Возврат Структура;
КонецФункции
Код 1C v 8.х Функция ВозрастПрописью(Структура)
Строка = "" ;
Если Структура. Год > 0 Тогда
ПоследняяЦифраГода = Число( Сред( Строка( Структура. Год) , СтрДлина( Строка( Структура. Год) ) , 1 ) ) ;
Если ( ПоследняяЦифраГода = 1 ) И ( Структура. Год < > 11 ) Тогда Строка = Строка( Структура. Год) + " год" ; КонецЕсли ;
Если ( ПоследняяЦифраГода > = 2 ) И ( ПоследняяЦифраГода < = 4 ) И ( ( Структура. Год < 12 ) ИЛИ ( Структура. Год > 14 ) ) Тогда Строка = Строка( Структура. Год) + " года" ; КонецЕсли ;
Если ( ( ПоследняяЦифраГода > = 5 ) И ( ПоследняяЦифраГода < = 9 ) ) ИЛИ ( ПоследняяЦифраГода = 0 ) Тогда Строка = Строка( Структура. Год) + " лет" ; КонецЕсли ;
Если ( Структура. Год > = 11 ) И ( Структура. Год < = 14 ) Тогда Строка = Строка( Структура. Год) + " лет" ; КонецЕсли ;
КонецЕсли ;
Если ( Структура. Год > 0 ) И ( Структура. Год < 3 ) И ( Структура. Месяц > 0 ) Тогда
Строка = Строка + ", " ;
КонецЕсли ;
Если ( Структура. Месяц > 0 ) И ( Структура. Год < = 3 ) Тогда
Если Структура. Месяц = 1 Тогда Строка = Строка + "1 месяц" ; КонецЕсли ;
Если ( Структура. Месяц > = 2 ) И ( Структура. Месяц < = 4 ) Тогда Строка = Строка + Строка( Структура. Месяц) + " месяца" ; КонецЕсли ;
Если Структура. Месяц > = 5 Тогда Строка = Строка + Строка( Структура. Месяц) + " месяцев" ; КонецЕсли ;
КонецЕсли ;
Возврат Строка;
КонецФункции
А вот и основная:
Код 1C v 8.х Функция ВозрастВычислить(Возраст,Дата)
Месяцы = РазностьМеждуДатамиВМесяцах( Возраст, Дата) ;
ВозрастСтруктура = ВозрастВМесяцахИГодах( Месяцы) ;
ВозрастПрописью = ВозрастПрописью( ВозрастСтруктура) ;
Возврат ВозрастПрописью;
КонецФункции
Изменения 2011.07.26: Небольшие доработки в процедуре
ВозрастПрописью - теперь всё работает правильно.
При помощи приведенных ниже функций можно вывести дату прописью, например:
03.08.2009 - третье августа две тысячи девятого года
Код 1C v 8.х
Функция ДатаПрописью(ДП) Экспорт
стрРез = "" ;
Д= Формат( ДП, "ДЛФ=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 ) ) ;
КонецЕсли ;
КонецЕсли ;
стрГод = Строка( _т) + " " + Строка( с) + " " + Строка( дс) + " " + Строка( е) ;
КонецЕсли ;
Иначе
КонецЕсли ;
стрГод = стрГод+ " года" ;
стрГод = СтрЗаменить( стрГод, " " , " " ) ;
стрРез = Строка( стрДень) + " " + Строка( стрМес) + " " + Строка( стрГод) ;
стрРез = СтрЗаменить( стрРез, " " , " " ) ;
Возврат стрРез;
КонецФункции
Процедура КнопкаВыполнитьНажатие(Кнопка)
сообщить( ДатаПрописью( РеквизитДатаНаФорме) ) ;
КонецПроцедуры
Код 1C v 7.x
Функция глПрописьДата(Д) Экспорт
стрРез = "" ;
спсМес = СоздатьОбъект( "СписокЗначений" ) ;
спсМес. ДобавитьЗначение( "января" ) ;
спсМес. ДобавитьЗначение( "февраля" ) ;
спсМес. ДобавитьЗначение( "марта" ) ;
спсМес. ДобавитьЗначение( "апреля" ) ;
спсМес. ДобавитьЗначение( "мая" ) ;
спсМес. ДобавитьЗначение( "июня" ) ;
спсМес. ДобавитьЗначение( "июля" ) ;
спсМес. ДобавитьЗначение( "августа" ) ;
спсМес. ДобавитьЗначение( "сентября" ) ;
спсМес. ДобавитьЗначение( "октября" ) ;
спсМес. ДобавитьЗначение( "ноября" ) ;
спсМес. ДобавитьЗначение( "декабря" ) ;
спсЧисл = СоздатьОбъект( "СписокЗначений" ) ;
спсЧисл. ДобавитьЗначение( "первое" , "первого" ) ;
спсЧисл. ДобавитьЗначение( "второе" , "второго" ) ;
спсЧисл. ДобавитьЗначение( "третье" , "третьего" ) ;
спсЧисл. ДобавитьЗначение( "четвертое" , "четвертого" ) ;
спсЧисл. ДобавитьЗначение( "пятое" , "пятого" ) ;
спсЧисл. ДобавитьЗначение( "шестое" , "шестого" ) ;
спсЧисл. ДобавитьЗначение( "седьмое" , "седьмого" ) ;
спсЧисл. ДобавитьЗначение( "восьмое" , "восьмого" ) ;
спсЧисл. ДобавитьЗначение( "девятое" , "девятого" ) ;
спсЧислИм = СоздатьОбъект( "СписокЗначений" ) ;
спсЧислИм. ДобавитьЗначение( "тысяча" , "тысячного" ) ;
спсЧислИм. ДобавитьЗначение( "две тысячи" , "двухтысячного" ) ;
спсЧислИм. ДобавитьЗначение( "три тысячи" , "трехтысячного" ) ;
спсЧислИм. ДобавитьЗначение( "четыре тысячи" , "четырёхтысячного" ) ;
спсЧислИм. ДобавитьЗначение( "пять" , "пятитысячного" ) ;
спсЧислИм. ДобавитьЗначение( "шесть" , "шеститысячного" ) ;
спсЧислИм. ДобавитьЗначение( "семь" , "семитысячного" ) ;
спсЧислИм. ДобавитьЗначение( "восемь" , "восьмитысячного" ) ;
спсЧислИм. ДобавитьЗначение( "девять" , "девятитысячного" ) ;
спсСотни = СоздатьОбъект( "СписокЗначений" ) ;
спсСотни. ДобавитьЗначение( "сто" ) ;
спсСотни. ДобавитьЗначение( "двести" ) ;
спсСотни. ДобавитьЗначение( "триста" ) ;
спсСотни. ДобавитьЗначение( "четыреста" ) ;
спсСотни. ДобавитьЗначение( "пятьсот" ) ;
спсСотни. ДобавитьЗначение( "шестьсот" ) ;
спсСотни. ДобавитьЗначение( "семьсот" ) ;
спсСотни. ДобавитьЗначение( "восемьсот" ) ;
спсСотни. ДобавитьЗначение( "девятьсот" ) ;
спсДесИм = СоздатьОбъект( "СписокЗначений" ) ;
спсДесИм. ДобавитьЗначение( "" , "десятого" ) ;
спсДесИм. ДобавитьЗначение( "двадцать" , "двадцатого" ) ;
спсДесИм. ДобавитьЗначение( "тридцать" , "тридцатого" ) ;
спсДесИм. ДобавитьЗначение( "сорок" , "сорокового" ) ;
спсДесИм. ДобавитьЗначение( "пятьдесят" , "пятидесятого" ) ;
спсДесИм. ДобавитьЗначение( "шестьдесят" , "шестидесятого" ) ;
спсДесИм. ДобавитьЗначение( "семьдесят" , "семидесятого" ) ;
спсДесИм. ДобавитьЗначение( "восемьдесят" , "восьмидесятого" ) ;
спсДесИм. ДобавитьЗначение( "девяносто" , "девяностого" ) ;
спсСубДесРод = СоздатьОбъект( "СписокЗначений" ) ;
спсСубДесРод. ДобавитьЗначение( "одиннадцатого" ) ;
спсСубДесРод. ДобавитьЗначение( "двенадцатого" ) ;
спсСубДесРод. ДобавитьЗначение( "тринадцатого" ) ;
спсСубДесРод. ДобавитьЗначение( "четырнадцатого" ) ;
спсСубДесРод. ДобавитьЗначение( "пятнадцатого" ) ;
спсСубДесРод. ДобавитьЗначение( "шестнадцатого" ) ;
спсСубДесРод. ДобавитьЗначение( "семнадцатого" ) ;
спсСубДесРод. ДобавитьЗначение( "восемнадцатого" ) ;
спсСубДесРод. ДобавитьЗначение( "девятнадцатого" ) ;
спсДес = СоздатьОбъект( "СписокЗначений" ) ;
спсДес. ДобавитьЗначение( "десятое" ) ;
спсДес. ДобавитьЗначение( "двадцатое" , "двадцать" ) ;
спсДес. ДобавитьЗначение( "тридцатое" , "тридцать" ) ;
спсДес. ДобавитьЗначение( "сороковое" , "тридцать" ) ;
спсДес. ДобавитьЗначение( "пятидесятое" , "тридцать" ) ;
спсДес. ДобавитьЗначение( "шестидесятое" , "тридцать" ) ;
спсДес. ДобавитьЗначение( "семидесятое" , "тридцать" ) ;
спсСубДес = СоздатьОбъект( "СписокЗначений" ) ;
спсСубДес. ДобавитьЗначение( "одиннадцатое" ) ;
спсСубДес. ДобавитьЗначение( "двенадцатое" ) ;
спсСубДес. ДобавитьЗначение( "тринадцатое" ) ;
спсСубДес. ДобавитьЗначение( "четырнадцатое" ) ;
спсСубДес. ДобавитьЗначение( "пятнадцатое" ) ;
спсСубДес. ДобавитьЗначение( "шестнадцатое" ) ;
спсСубДес. ДобавитьЗначение( "семнадцатое" ) ;
спсСубДес. ДобавитьЗначение( "восемнадцатое" ) ;
спсСубДес. ДобавитьЗначение( "девятнадцатое" ) ;
спсДаты = СтрЗаменить( СокрЛП( Д) , "." , РазделительСтрок) ;
стрДень = СокрЛП( Число( СтрПолучитьСтроку( спсДаты, 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 , " " , "" ) + дс+ " " + е;
КонецЕсли ;
Иначе
КонецЕсли ;
стрГод = стрГод+ " года" ;
стрРез = стрДень+ " " + стрМес+ " " + стрГод;
Возврат стрРез;
КонецФункции
Код 1C v 8.х
ЗначФормат = Формат( 123456.789 , "ЧЦ=10; ЧДЦ=2" ) ;
ЗначФормат = Формат( 123456.789 , "ЧГ=0; ЧДЦ=2" ) ;
ЗначФормат = Формат( 123456.789 , "ЧРД='-'" ) ;
ЗначФормат = Формат( - 123456.789 , "ЧО=0" ) ;
ЗначФормат = Формат( 13 , "ЧЦ=5; ЧВН=; ЧГ=0" ) ;
ЧислоПрописью( Сумма, "L=ru_RU" , Валюта. ПараметрыПрописиНаРусском)
ЧислоПрописью( 1457.25 , "L=en_US" , "dollar, dollars, cent, cents, 2" ) ;
ЧислоПрописью( Сумма, "Рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2" ) ;
ЗначФормат = Формат( 25021949 , "ЧЦ=8; ЧРГ=.; ЧВН=; ЧГ=4,2,0" ) ;
ЗначФормат = Формат( '20020820153309 ', "ДФ="" дд ММММ гггг 'г.' ЧЧ:мм:сс"" " ) ;
ЗначФормат = Формат( '20020820153309 ', "ДФ="" дд/ММ-гггг"" " ) ;
ЗначФормат = Формат( '20020820153309 ', "ДФ='q "" кв."" yyyy'" ) ;
ЗначФормат = Формат( '20020820153309 ', "ДФ='"" Итого"" q "" квартал"" '" ) ;
ЗначФормат = Формат( '20020820153309 ', "ДФ='ММММ гггг'" ) ;
ЗначФормат = Формат( '20020820153309 ', "ДЛФ=ДД" ) ;
ЗначФормат = Формат( '20020820153309 ', "ДЛФ=Д" ) ;
ЗначФормат = Формат( '20020820153309 ', "ДЛФ=В" ) ;
ЗначФормат = Формат( '20020820153309 ', "ДФ=HHmmssyyyyMMdd" ) ;
ЗначФормат = Формат( '20020820153309 ', "ДФ=HH:mm:ss yyyy MM dd" ) ;
ЗначФормат = Формат( '20020820153309 ', "ДФ=hh:mm:ss yyyy MM dd" ) ;
Формат( Дата( 2009 , 1 , 1 ) , "ДЛФ=DD" ) + ", " + ОпределитьДеньНедели( ДеньНедели( Дата( 2009 , 1 , 1 ) ) ) ;
Формат( Дата( 2009 , 1 , 1 ) , "ДФ=ММММ" ) + ", " + Формат( Дата( 2009 , 1 , 1 ) , "ДФ=yyyy" ) + " г." ;
Формат( НачалоНедели( Дата( 2009 , 1 , 1 ) ) , "ДФ='dd MMMM yyyy'" ) + " г. - " + Формат( КонецНедели( Дата( 2009 , 1 , 1 ) ) , "ДФ='dd MMMM yyyy'" ) + " г." ;
Строка( Цел( День( Дата( '20020820153309 ') ) / 10 ) + 1 ) + " декада" = 2 декада
ЗначФормат = Формат( Истина , "БЛ=Отсутствует; БИ=Доступен" ) ;
ЗначФормат = Формат( Ложь , "БЛ=Нет; БИ=Да" ) ;
Код 1C v 7.x
ЗначФормат = Формат( 123.15 , "Ч(0)10.2" )
Долг = Строка( Формат( Долг( ) , "Ч12.2" ) ) + " " + Валюта. Сокр_назв;
ИтогоСуммаПрописью = Формат( Итог( "Сумма" ) , "ЧПДС" ) ;
КоличествоНаименованийПрописью = Формат( КоличествоСтрок( ) , "ЧП" ) ;
ДатаДокумента = Формат( Док. ДатаДок, "Д ДД.ММ.ГГ" ) ;
ДатаДокумента = Формат( "01.01.1999" , "Д(0)ДДММММГГГГ" ) ;
Код 1C v 8.х
Процедура РазобратьРазностьДат(Дата1, Дата2, Лет = 0, Месяцев = 0, Дней = 0) Экспорт
Лет = 0 ;
Месяцев = 0 ;
Дней = 0 ;
Если Дата1 > Дата2 Тогда
ВременнаяДата = Дата1 ;
Если День( ВременнаяДата) < День( Дата2 ) Тогда
Дней = ( ВременнаяДата - ДобавитьМесяц( ВременнаяДата, - 1 ) ) / 86400 ;
ВременнаяДата = ДобавитьМесяц( ВременнаяДата, - 1 ) ;
КонецЕсли ;
Если Месяц( ВременнаяДата) < Месяц( Дата2 ) Тогда
ВременнаяДата = ДобавитьМесяц( ВременнаяДата, - 12 ) ;
Месяцев = 12 ;
КонецЕсли ;
Лет = Макс( Год( ВременнаяДата) - Год( Дата2 ) , 0 ) ;
Месяцев = Макс( Месяцев + Месяц( ВременнаяДата) - Месяц( Дата2 ) , 0 ) ;
Дней = Макс( Дней + День( ВременнаяДата) - День( Дата2 ) , 0 ) ;
Если Дата2 < > ( ДобавитьМесяц( Дата1 , - Лет * 12 - Месяцев) - Дней * 86400 ) Тогда
Дней = Дней + ( День( КонецМесяца( Дата2 ) ) - День( НачалоМесяца( Дата2 ) ) ) - ( День( КонецМесяца( ДобавитьМесяц( Дата1 , - 1 ) ) ) - День( НачалоМесяца( ДобавитьМесяц( Дата1 , - 1 ) ) ) ) ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
Вычисление периодов в формате ГГММДД. Вычисление дат по формуле Дата + ГГММДД.
Примечание: Даты передаем в виде 'ДД.ММ.ГГГГ', периоды - "ГГ-ММ-ДД".
Пользуйтесь.
arithmometr
Код 1C v 7.x
Функция зпГлСтрокуВЧисло(стр) Экспорт
стр1 = СокрЛП( стр) ;
Чис1 = "" ;
Для х = 1 По СтрДлина( стр1 ) Цикл
Чис1 = Чис1 + Число( Сред( стр1 , х, 1 ) ) ;
КонецЦикла ;
Чис = Число( Чис1 ) ;
Возврат Чис;
КонецФункции
Функция зпГлВычислитьСрок(Аргум1,Аргум2="" ,Парам="" ) Экспорт
Перем ЗнВозврата;
Если ( Парам= 0 ) Тогда
Дата1 = Мин( Дата( Аргум1 ) , Дата( Аргум2 ) ) ;
Дата2 = Макс( Дата( Аргум1 ) , Дата( Аргум2 ) ) ;
Мес = ( ДатаГод( Дата2 ) - ДатаГод( Дата1 ) ) * 12 + ( ДатаМесяц( Дата2 ) - ДатаМесяц( Дата1 ) ) ;
Дни = ДатаЧисло( Дата2 ) - ДатаЧисло( Дата1 ) ;
Если ( Дни < 0 ) Тогда
Мес = Мес - 1 ;
Дни = Дни + ДатаЧисло( КонМесяца( Дата1 ) ) ;
КонецЕсли ;
Если ( Дни > = ДатаЧисло( КонМесяца( Дата2 ) ) ) и ( Дата2 = КонМесяца( Дата2 ) ) Тогда
Мес = Мес + 1 ;
Дни = 0 ;
КонецЕсли ;
Лет = Цел( Мес/ 12 ) ;
Мес = Мес - Лет* 12 ;
ЗнВозврата = Формат( Лет, "Ч(0)2.0" ) + "-" + Формат( Мес, "Ч(0)2.0" ) + "-" + Формат( Дни, "Ч(0)2.0" ) ;
ИначеЕсли ( Число( Парам) * Число( Парам) = 1 ) Тогда
Дата1 = Дата( Аргум1 ) ;
Аргум2 = зпГлВычислитьСрок( Аргум2 ) ;
Срок = Аргум2 ;
Мес = Число( Лев( Срок, 2 ) ) * 12 + Число( Сред( Срок, 4 , 2 ) ) ;
Дни = Число( Прав( Срок, 2 ) ) ;
Дата2 = ДобавитьМесяц( Дата1 , Парам* Мес) ;
Если ( Дата1 = КонМесяца( Дата1 ) ) Тогда
Дни = Мин( ДатаЧисло( КонМесяца( Дата2 ) ) - 1 , Дни) ;
ИначеЕсли ( Дни > = ДатаЧисло( КонМесяца( Дата2 ) ) * ( ( 1 - Парам) / 2 ) - Парам* ДатаЧисло( Дата2 ) ) Тогда
Дни = Мин( ДатаЧисло( КонМесяца( ДобавитьМесяц( Дата2 , 1 ) ) ) - 1 , Дни) ;
КонецЕсли ;
ЗнВозврата = Дата2 + Парам* Дни;
Иначе
Если ( Найти( Парам, "+" ) > 0 ) Тогда
Срок1 = зпГлСтрокуВЧисло( СтрЗаменить( Аргум1 + "." , "-" , "" ) ) / 10 ;
Срок2 = зпГлСтрокуВЧисло( СтрЗаменить( Аргум2 + "." , "-" , "" ) ) / 10 ;
Дни = Срок1 %100 + Срок2 %100 ;
Мес = Цел( ( Срок1 %10000 + Срок2 %10000 - Дни) / 1000 ) ;
Лет = Цел( Срок1 / 10000 ) + Цел( Срок2 / 10000 ) ;
Мес = Мес + Цел( Дни/ 30 ) ;
Дни = Дни%30 ;
Лет = Лет + Цел( Мес/ 12 ) ;
Мес = Мес%12 ;
Иначе
Срок = зпГлСтрокуВЧисло( СтрЗаменить( Аргум1 + "." , "-" , "" ) ) / 10 ;
Мес = Цел( Срок/ 100 ) - Цел( Срок/ 10000 ) * ( 100 - 12 ) ;
Дни = Мин( Срок - Цел( Срок/ 100 ) * 100 , 30 ) ;
Лет = Цел( Мес/ 12 ) ;
Мес = Мес - Лет* 12 ;
КонецЕсли ;
Если ( Найти( Парам, "П" ) > 0 ) Тогда
ЗнВозврата = "років " + Лет+ ", місяців " + Мес+ ", днів " + Дни;
ИначеЕсли ( Найти( Парам, "К" ) > 0 ) Тогда
ЗнВозврата = "" + Лет+ "р." + Мес+ "м." + Дни+ "д." ;
Иначе
ЗнВозврата = Формат( Лет, "Ч(0)2.0" ) + "-" + Формат( Мес, "Ч(0)2.0" ) + "-" + Формат( Дни, "Ч(0)2.0" ) ;
КонецЕсли ;
КонецЕсли ;
Возврат ЗнВозврата;
КонецФункции