gifts2017

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

Опубликовал Владимир Попов (madvovik) в раздел Программирование - Практика программирования

Преобразование строки форматированной методом Формат(дДата,"ДЛФ=ДД")
Работает с Укр и Рус языками
Но кушает только даты в указанном формате

Столкнулся с проблемой, есть печатная форма документа сохраненного в Excel, как обычно даты идут в формате Формат(дДата,"ДЛФ=ДД"), 1С не имеет штатных преобразователей из такой строки в дату, типовые тоже мне не помогли (возможно плохо искал), принято было решение написать очень быстро что-то рабочее, хорошо или плохо судить вам, но меня спасло, за 10 минут было написано следующее:

    Функция ПолучитьИзСтрокиМесяцаНомер(Месяц)
        сМесяцев = Новый СписокЗначений;
        сМесяцев.Добавить("січня","01");
        сМесяцев.Добавить("лютого","02");
        сМесяцев.Добавить("березня","03");
        сМесяцев.Добавить("квітня","04");
        сМесяцев.Добавить("травня","05");
        сМесяцев.Добавить("червня","06");
        сМесяцев.Добавить("липня","07");
        сМесяцев.Добавить("серпня","08");
        сМесяцев.Добавить("вересня","09");
        сМесяцев.Добавить("жовтня","10");
        сМесяцев.Добавить("листопада","11");
        сМесяцев.Добавить("грудня","12");
        сМесяцев.Добавить("января","01");
        сМесяцев.Добавить("февраля","02");
        сМесяцев.Добавить("марта","03");
        сМесяцев.Добавить("апреля","04");
        сМесяцев.Добавить("мая","05");
        сМесяцев.Добавить("июня","06");
        сМесяцев.Добавить("июля","07");
        сМесяцев.Добавить("август","08");
        сМесяцев.Добавить("сентября","09");
        сМесяцев.Добавить("октября","10");
        сМесяцев.Добавить("ноября","11");
        сМесяцев.Добавить("декабря","12");
        НомерМесяца = сМесяцев.НайтиПоЗначению(нрег(Месяц)); 
        Возврат (НомерМесяца); 
    КонецФункции  
    Функция ПолучитьДатуИзСтроки(СтрокаДата) Экспорт 
        ДлинаДень = СтрДлина(Число(Лев(СтрокаДата, 2)));
        День = ?(ДлинаДень=1,"0"+Число(Лев(СтрокаДата, 2)),Число(Лев(СтрокаДата, 2)));
        ДлинаМесяц = СтрДлина(СтрокаДата)-(ДлинаДень+1)-7;
        Месяц = Сред(СтрокаДата,ДлинаДень+2,ДлинаМесяц-1);
        н = ПолучитьИзСтрокиМесяцаНомер(Месяц);
        Возврат Дата(Лев(Прав(СтрокаДата,7), 4)+н+День); 
    КонецФункции 

Позже я обнаружил, что есть еще варианты, но посложней  http://infostart.ru/public/70017/ хотя и многофункциональней

Если кому-нибудь понадобится был рад помочь

Прилагаю тест обработки

Скачать файлы

Наименование Файл Версия Размер
1 5
.epf 6,71Kb
22.06.12
5
.epf 6,71Kb Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа