Появилась идея написание своего велосипеда или идеальной функции для преобразования строки в дату.
Функция ПолучитьДатуИзСтроки(Знач Стр) ПустаяДата = Дата("00010101000000"); Если ПустаяСтрока(Стр) Тогда Возврат Стр; КонецЕсли; Стр = СокрЛП(НРег(Стр)); Стр = СтрЗаменить(Стр, "января", "01"); Стр = СтрЗаменить(Стр, "февраля", "02"); Стр = СтрЗаменить(Стр, "марта", "03"); Стр = СтрЗаменить(Стр, "апреля", "04"); Стр = СтрЗаменить(Стр, "мая", "05"); Стр = СтрЗаменить(Стр, "июня", "06"); Стр = СтрЗаменить(Стр, "июля", "07"); Стр = СтрЗаменить(Стр, "августа", "08"); Стр = СтрЗаменить(Стр, "сентября", "09"); Стр = СтрЗаменить(Стр, "октября", "10"); Стр = СтрЗаменить(Стр, "ноября", "11"); Стр = СтрЗаменить(Стр, "декабря", "12"); Стр = СтрЗаменить(Стр, ":", " "); Стр = СтрЗаменить(Стр, "t", " "); Стр = СтрЗаменить(Стр, "z", " "); Стр = СтрЗаменить(Стр, "+", " "); Стр = СтрЗаменить(Стр, Символы.НПП, " "); Д = СтрРазделить(Стр,".-/, "); Для сч = 0 по Д.ВГраница() Цикл Если СтрДлина(Д[сч])=1 Тогда Д[сч] = "0"+Д[сч]; КонецЕсли; КонецЦикла; Если Д.Количество() = 1 И СтрДлина(Стр)=8 ИЛИ СтрДлина(Стр)=14 Тогда Результат = Стр; ИначеЕсли Д.Количество() = 2 И (СтрДлина(Стр) = 15 ИЛИ СтрДлина(Стр) = 13) Тогда //20130225T182510 ИЛИ 20130225T1825 Результат = СтрСоединить(Д); ИначеЕсли Д.Количество() < 3 Тогда Возврат ПустаяДата; Иначе Если СтрДлина(Д[0]) = 4 Тогда //Формат гггг.мм.дд Результат = Д[0] + Д[1] + Д[2]; ИначеЕсли СтрДлина(Д[0]) < 3 Тогда //формат дд.мм.гггг Результат = ?(СтрДлина(Д[2])=2,"20"+Д[2],Д[2]) + Д[1] + Д[0]; Иначе Возврат ПустаяДата; КонецЕсли; Если Д.Количество() = 5 Тогда Результат = Результат + Д[3] + Д[4]; КонецЕсли; Если Д.Количество() > 5 Тогда Результат = Результат + Д[3] + Д[4] + Д[5]; КонецЕсли; КонецЕсли; Попытка Возврат Дата(Результат); Исключение Возврат ПустаяДата; КонецПопытки; КонецФункции // ПолучитьДатуИзСтроки()