Полное преобразование даты в строку

02.07.07

Разработка - Универсальные функции

При заполнение разных юридических документов (и не только) возникает необходимость  написать дату полностью словами, например:

02.07.07: Второе июля две тысячи седьмой год

В процедуре обрабатывает не все даты, а лишь ближайшие (так мне надо было).
Объявляем три списка значений, в которых будем хранить строковые представления чисел:

Перем
ЧислоСЗ
,
Месяц
,
ГодСЗ;


далее объявляем и заполняем их данными:


Месяц 
= СоздатьОбъект("СписокЗначений")
;
Месяц
.
ДобавитьЗначение
("января", 1)
; 
Месяц
.
ДобавитьЗначение
("февраля", 2)
; 
Месяц
.
ДобавитьЗначение
("марта", 3)
;
Месяц
.
ДобавитьЗначение
("апреля", 4)
;
Месяц
.
ДобавитьЗначение
("мая", 5)
;
Месяц
.
ДобавитьЗначение
("июня", 6)
;
Месяц
.
ДобавитьЗначение
("июля", 7)
;
Месяц
.
ДобавитьЗначение
("августа", 8)
;
Месяц
.
ДобавитьЗначение
("сентября", 9)
;
Месяц
.
ДобавитьЗначение
("октября", 10)
;
Месяц
.
ДобавитьЗначение
("ноября", 11)
;
Месяц
.
ДобавитьЗначение
("декабря", 12)
;
 
ЧислоСЗ 
= СоздатьОбъект("СписокЗначений")
;
ЧислоСЗ
.
ДобавитьЗначение
("Первое", 1)
;  
ЧислоСЗ
.
ДобавитьЗначение
("Второе", 2)
;  
ЧислоСЗ
.
ДобавитьЗначение
("Третье", 3)
;  
ЧислоСЗ
.
ДобавитьЗначение
("Четвертое", 4)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Пятое", 5)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Шестое", 6)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Седьмое", 7)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Восьмое", 8)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Девятое", 9)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Десятое", 10)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Одинадцатое", 11)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Двенадцатое", 12)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Тринадцатое", 13)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Четырнадцатое", 14)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Пятнадцатое", 15)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Шестнадцатое", 16)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Семнадцатое", 17)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Восемнадцатое", 18)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Девятнадцатое", 19)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Двадцатое", 20)
;  
ЧислоСЗ
.
ДобавитьЗначение
("Тридцатое", 30)
; 
ЧислоСЗ
.
ДобавитьЗначение
("Тридцат первое", 31)
;

ЧислоСЗ
.
ДобавитьЗначение
("Двадцать", "2Х")
;
ЧислоСЗ
.
ДобавитьЗначение
("Тридцать", "3Х")
;  
ЧислоСЗ
.
ДобавитьЗначение
("Сорок" "4Х")
;
ЧислоСЗ
.
ДобавитьЗначение
("Пятьдесят", "5Х")
;
ЧислоСЗ
.
ДобавитьЗначение
("Шестьдесят", "6Х")
;
ЧислоСЗ
.
ДобавитьЗначение
("Семьдесят", "7Х")
;
ЧислоСЗ
.
ДобавитьЗначение
("Восемьдесят", "8Х")
;
ЧислоСЗ
.
ДобавитьЗначение
("Девяносто", "9Х")
;

ГодСЗ 
= СоздатьОбъект("СписокЗначений")
;
ГодСЗ
.
ДобавитьЗначение
("одна тысяча", 1000)
;   
ГодСЗ
.
ДобавитьЗначение
("две тысячи", 2000)
; 

ГодСЗ
.
ДобавитьЗначение
("первый", 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)
;

Пусть ДатаА - дата которую надо преобразовать.

	номерМесяца 
=
ДатаМесяц
(
ДатаА
)
; 
	МесяцСтр	
=
месяц
.
Получить
(
номерМесяца
)
;  
	
	числоДаты	
=
ДатаЧисло
(
ДатаА
)
;
	
Если (
числоДаты 
<= 20)
или 
(
числоДаты 
>= 30)
тогда
		ЧислоСтр 
=
ЧислоСЗ
.
Получить
(
числоДаты
)
; 
	иначе                                          
		ЧислоСтр 
=
ЧислоСЗ
.
Получить
("2Х") + " " +
Нрег
(
ЧислоСЗ
.
Получить
(
числоДаты
-20))
; 
	
КонецЕсли
;

	годДаты		
=
строка
(
ДатаГод
(
датаА
))
; 
	тысячЛет	
=
Число
(
Лев
(
годДаты
, 1))
;
	стоЛет		
=
Число
(
Сред
(
годДаты
, 2, 1))
; 
	копЛет		
=
Число
(
Сред
(
годДаты
, 3, 2))
;
	
	ГодСТр 
=
ГодСЗ
.
Получить
(
тысячЛет 
* 1000) +
?
(
стоЛет
=9, " девятьсот ", " ")
;
	                                 
	
Если
копЛет
<20
тогда
		ГодСТр 
=
ГодСТр 
+
ГодСЗ
.
Получить
(
копЛет
)
;
	иначеЕсли прав
(
строка
(
копЛет
), 1)<>"0"
тогда                                  
		номМес 
=
цел
(
копЛет
/10)
;
		ГодСТр 
=
ГодСТр 
+
Нрег
(
ЧислоСЗ
.
Получить
(
строка
(
номМес
)+"Х")) + " " +
Нрег
(
ГодСЗ
.
Получить
(
копЛет
-
номМес
*10))
; 
	иначе
		ГодСТр 
=
ГодСТр 
+
Нрег
(
ГодСЗ
.
Получить
(
копЛет
))
; 
	
КонецЕсли
;



ну а дальше выводим дату, или возвращаем:

сообщить
(
строка
(
ДатаА
) + ": " +
ЧислоСтр 
+ " " +
МесяцСтр 
+ " " +
ГодСТр 
+ " год")
;


Возврат
ЧислоСтр 
+ " " +
МесяцСтр 
+ " " +
ГодСТр 
+ " год")
;

См. также

Универсальные функции Программист Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    1378    14    user706545_kseg1971    0    

5

Универсальные функции Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    2344    zhenyat    7    

8

Универсальные функции Программист Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    5144    Zoltan_Black    11    

2

Универсальные функции Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13935    4    alsen    3    

5

Универсальные функции Программист Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10778    malovandrey    7    

19

Универсальные функции Работа с интерфейсом Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18888    2    HAMMER_59    6    

2
Оставьте свое сообщение