Имя: Пароль:
1C
1C 7.7
v7: вопрос по ф-ии формат()
,
0 lucifer
 
23.01.12
15:49
как отформатировать дату так что бы получить
запись такого вида
"23" января 2012г.
1 Ёпрст
 
23.01.12
15:50
"ДДДММММГГГГ"
2 lucifer
 
23.01.12
15:52
неее именно с кавычками
ну типа
""""+формат(ДатаДок,?)+""" "+формат(ДатаДок,?)
3 lucifer
 
23.01.12
15:53
что бы в первом формат() только число, во втором месяц прописью и год
4 zak555
 
23.01.12
15:56
СтрокаДата = ФОрмат (ДАтаНужная , "ДДДММММГГГГ");
СЗ_СтрокаДата = глРазложить(СтрокаДата);
СтрокаДатаНужная = """ + СЗ_СтрокаДата.ПолучитьЗначение(1) + """;
для н = 2 по СЗ_СтрокаДата.РазмерСписка() Цикл
  СтрокаДатаНужная = СтрокаДатаНужная + " " + СЗ_СтрокаДата.ПолучитьЗначение(н);
КонецЦикла;
5 lucifer
 
23.01.12
15:59
(4) только парсингом?
6 lucifer
 
23.01.12
16:01
ну а можно из даты получить сначала дату, потом месяц прописью, потом год и все это сложить в одну строку, через формат() а не парсить
7 NS
 
23.01.12
16:01
Сокрлп(сред(формат,3))
8 GLazNik
 
23.01.12
16:02
""""+ДатаЧисло(Дата) + """ " + Формат(Дата,"ДммммГГГГ")
9 NS
 
23.01.12
16:02
""""+датадень()+""" "+предыдущий пост
10 NS
 
23.01.12
16:03
(8) а так ты получишь 2 январь
11 andrewks
 
23.01.12
16:03
(4) извращенец
12 zak555
 
23.01.12
16:03
СтрокаДата = ФОрмат (ДАтаНужная , "ДДДММММГГГГ");
Поз = Найти(СтрокаДата , " ");
СтрокаДатаНужная = """ + Лев(СтрокаДата , Поз  -1  ) + """ + Сред(СтрокаДата , Поз );
13 zak555
 
23.01.12
16:04
(8) месяца не будут склоняться (!)
14 zak555
 
23.01.12
16:04
(11) ну пока делать-то нечего =)
15 NS
 
23.01.12
16:05
(12) нафига что-то искать? День - лев(,2), остальное сред(,3)
16 zak555
 
23.01.12
16:08
(15) да =)
17 andrewks
 
23.01.12
16:08
(14) если нечего делать, подходи к решению творчески.
например, так:

Месяц=Формат(Дата1,"Д ММММ");
   ДатаСтрокой=Формат(ДатаЧисло(Дата1),"Ч(0)2")+" "+?(Прав(Месяц,1)="т",Месяц+"а",Лев(Месяц,СтрДлина(Месяц)-1)+"я")+" "+ДатаГод(Дата1)+"г.";

две строчки - исключительно из-за оптимизации, а так можно было бы и в одну уложить
18 zak555
 
23.01.12
16:09
(17) слишком сложно для меня
19 andrewks
 
23.01.12
16:09
кавычки забыл

   Месяц=Формат(Дата1,"Д ММММ");
   ДатаСтрокой=""""+Формат(ДатаЧисло(Дата1),"Ч(0)2")+""" "+?(Прав(Месяц,1)="т",Месяц+"а",Лев(Месяц,СтрДлина(Месяц)-1)+"я")+" "+ДатаГод(Дата1)+"г.";
20 zak555
 
23.01.12
16:11
(19) держи двойку
21 andrewks
 
23.01.12
16:15
(20) сам такой
22 lucifer
 
23.01.12
16:30
сделал так
"[лев(ДатаДок,2)]" [сокрлп(сред(Формат(ДатаДок ,"Д (0)ДДММММГГГГ"),найти(Формат(ДатаДок ,"Д (0)ДДММММГГГГ")," "),найти(Формат(ДатаДок ,"Д (0)ДДММММГГГГ")," ")-стрдлина(Формат(ДатаДок ,"Д (0)ДДММММГГГГ"))))]
23 lucifer
 
23.01.12
16:30
+ мне это в печатной форме нужно было
24 Андрюха
 
23.01.12
16:31
Для разнообразия предложу регулярные выражения.
25 lucifer
 
23.01.12
16:38
(24) а что в 1с можно регулярку использовать?
26 ПиН
 
23.01.12
16:41
опять 25...
27 BlackSeaCat
 
23.01.12
16:48
(22) Ты сделал типичную кучу г...внокода.

Потому что чисто по 1Совски не задумался на (7) и (15).

Даже с твоим подходом вполне достаточно вот этого:

"[лев(ДатаДок,2)]" [сокрлп(сред(Формат(ДатаДок ,"Д (0)ДДММММГГГГ"),3))]
28 lucifer
 
23.01.12
16:52
(27) спасибо, не знал что так можно
29 BlackSeaCat
 
23.01.12
17:04
(28) Это не надо было знать, это надо было чуть-чуть ПОДУМАТЬ.

Дата - первые один (если числа 1-9) или два символа. Значит, месяц в символьной строке даты может начинаться со 2-го или 3-го символа. Но, если он начнется со 2-го символа, то СокрЛП() обрежет первый пробел.

И нефиг там искать, да еще два раза!
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс