Имя: Пароль:
1C
1С v8
СТРОКУ (две цифры года) в ДАТУ, как?
0 dft2014
 
06.12.17
16:33
Как преобразовать СТРОКУ вида 27.10.92 в ДАТУ 27.10.1992?

Пробовала функцией ниже, но выдает ошибку.


СтрокуВДату = РазобратьДату(Данные.ДатаРождения);  
ФизЛицо.ДатаРождения = Формат(СтрокуВДату, "ДФ=dd.MM.yyyy");

Функция РазобратьДату(ИзмДата);
    Возврат Дата(Сред(ИзмДата,7,4)+Сред(ИзмДата,4,2)+Сред(ИзмДата,0,2));
КонецФункции
1 lodger
 
06.12.17
16:35
попробуй просто Дата(Данные.ДатаРождения).
2 Lexey_
 
06.12.17
16:39
(0) это та самая легендарная единственная ошибка 1С?
3 echo77
 
06.12.17
16:40
(0)  Возврат Дата(Сред(ИзмДата,7,4)+Сред(ИзмДата,4,2)+Сред(ИзмДата,1,2));
4 1Садовник
 
06.12.17
16:49
СтрокуВДату = "921027".  Ты же год полностью не получаешь. Сред(ИзмДата,7,4) вернет ток "92".
5 Umga2002
 
06.12.17
16:59
Похоже без анализа года не обойтись....
6 Umga2002
 
06.12.17
17:01
Ошибка МИЛЕНИУМ похоже....
7 drcrasher
 
06.12.17
17:04
(0) подозреваю, что там даты рождения записаны в строке. если год больше 17, то добавлять 19, если меньше или равен - 20
8 dft2014
 
06.12.17
17:45
Ап!
9 azernot
 
06.12.17
17:52
Функция РазобратьДату(ИзмДата);
Год = Сред(ИзмДата,7,4)
Если СтрДлина(Год)<4 Тогда
  ГодЧислом = Число(Год);
  ГодНачалаСтолетия = 20;
  Если ГодЧислом > ГодНачалаСтолетия Тогда
    Год  = "19"+Год;
  Иначе
    Год  = "20"+Год;
  КонецЕсли;
КонецЕсли;

Возврат Дата(Год+Сред(ИзмДата,4,2)+Сред(ИзмДата,0,2));
КонецФункции
10 dft2014
 
06.12.17
17:58
(9) СПАСИБО!!! Все получилось!!!
11 Serg_1960
 
06.12.17
18:04
(10) Цирк-шапито да и только :)

"Как преобразовать СТРОКУ вида 27.10.92" - там не строка, там всё-таки дата. Если учитывать (9) и "все получилось"(цы)
12 azernot
 
06.12.17
18:06
(11) Эээ... что не так? Из строки "27.10.92" получили дату 27.10.1992
13 Serg_1960
 
06.12.17
22:25
Упс, конец напряженного рабочего дня :) "Прошу понять и простить"(с)
14 Serg_1960
 
06.12.17
23:16
В качестве компенсации - функция, которая по мнению автора любую экзотику пережуёт, проглотит и выплюнет как дату - лишь бы там только цифры были :)


Функция ПроизвольнаяСтрокаДатыДвеЦифрыГода(Знач СтрДата)

    СтрДата = СтрЗаменить(СтрДата, ".", Символы.ПС);
    СтрДата = СтрЗаменить(СтрДата, "/", Символы.ПС);
    СтрДата = СтрЗаменить(СтрДата, "-", Символы.ПС);
    Год = Число(СтрПолучитьСтроку(СтрДата,3));
    Возврат Дата( ?(Год<100, 2000, 0) + Год, Число(СтрПолучитьСтроку(СтрДата,2)), Число(СтрПолучитьСтроку(СтрДата,1)));

КонецФункции


PS: даты с двумя цифрами года преобразуются в дату прошлого века ;)
15 Serg_1960
 
06.12.17
23:18
PSS: в алгоритме, как всегда, киндер-сюрприз для непосвящённых :))
16 Лефмихалыч
 
06.12.17
23:27
Если Строка = "27.10.92" Тогда
   Возврат Дата(1992, 10, 27);
КонецЕсли;

Это же элементарно!