|
Строка в дату | ☑ | ||
---|---|---|---|---|
0
Юзер123
naïve
29.06.15
✎
09:53
|
Доброго времени.
Подскажите как строку 25 мая преобразовать в дату. Данные читаются из Эксель файла. И если преобразовать не получается то выдает ошибку и файл остается открыт. как это можно обойти чере "Попытка" ? спасибо |
|||
1
Ненавижу 1С
гуру
29.06.15
✎
09:54
|
25 мая 2015 года или 25 мая 1917 года?
|
|||
2
zak555
29.06.15
✎
09:55
|
Если Найти(ВРЕГ(Стр), "МАЯ") > 0 Тогда
Месяц = 5; КонецЕСли; |
|||
3
1Сергей
29.06.15
✎
09:56
|
(2) +
Если Найти(ВРЕГ(Стр), "25 МАЯ") > 0 Тогда День = 25; Месяц = 5; КонецЕСли; |
|||
4
samozvanec
29.06.15
✎
09:57
|
(0) там прям строка, ты валуё смотришь?
|
|||
5
МаксимМП23
29.06.15
✎
09:57
|
(0) Я бы лучше предварительно подготовил экселевский файл, чтобы дата там была в удобном формате. Благо это не сложно.
|
|||
6
newbling
29.06.15
✎
09:57
|
(2) лучший вариант. Перебираешь 12 вариантов и всё. А год и дата просто берётся через лев() и прав()
|
|||
7
samozvanec
29.06.15
✎
09:58
|
+(4) экселька же сама умеет, формулой там колонку сделай, и с нее читай
|
|||
8
Юзер123
naïve
29.06.15
✎
10:02
|
(4) да.
Экчель кривой. Я понимаю что надо в норм формат привести колонку в Экселе. Но что бы у юзера было меньше проблем с закрытием файла через диспетчер задач надо или по ошибке эксель закрывать или даты шаманить. |
|||
9
samozvanec
29.06.15
✎
10:07
|
(8) а что не так с попыткой? в исключении формируй протокол несоответствия форматы загрузки, потом ексель закрывай и тыкай юзера носом
|
|||
10
Ildarovich
29.06.15
✎
10:07
|
Вот в этой статье в разделе 13 приведена функция для преобразования строки в дату по форматной строке, которая умеет работать с датами, где месяц записан прописью (ММММ). Функция имеет вид
Функция СтрокаВДату(Знач ФорматДаты, Знач Дано, Ошибка = Ложь) Экспорт Попытка ё = Формат('00010101', "ДФ=" + ФорматДаты) // - необязательная проверка первого правильности параметра Исключение Ошибка = Истина; Возврат '00010101' КонецПопытки; Ч = Новый Соответствие; Для ё = 1 По СтрДлина(ФорматДаты) + 7 Цикл Ч[Сред(ФорматДаты + "dMyHhms", ё, 1)] = 0 // - инициализация частей даты КонецЦикла; Для ё = 1 По 12 Цикл Дано = СтрЗаменить(Дано, Формат(Дата(1, ё, 1), "ДФ=MMММ"), Формат(ё, "ЧЦ=4; ЧВН=")); // - замена названий месяцев числами Дано = СтрЗаменить(Дано, Формат(Дата(1, ё, 1), "ДФ=MMМ" ), Формат(ё, "ЧЦ=3; ЧВН=")) КонецЦикла; Для ё = 1 По СтрДлина(ФорматДаты) Цикл Ч[Сред(ФорматДаты, ё, 1)] = 10 * Ч[Сред(ФорматДаты, ё, 1)] + Найти("123456789", Сред(Дано, ё, 1)); // - накопление частей даты Ошибка = Ошибка ИЛИ Найти("dMyHhms", Сред(ФорматДаты, ё, 1)) И НЕ Найти("0123456789", Сред(Дано, ё, 1)) // - необязательная проверка на цифры КонецЦикла; Ч["y"] = Ч["y"] + ?(Ч["y"] < 50, 2000, ?(Ч["y"] < 100, 1900, 0)); // - дополнение двух цифр года до четырех Попытка Возврат Дата(Ч["y"], Ч["M"], Ч["d"], Ч["H"] + Ч["h"], Ч["m"], Ч["s"]) Исключение Ошибка = Истина; Возврат '00010101' КонецПопытки КонецФункции |
|||
11
samozvanec
29.06.15
✎
10:07
|
(9) формату*
|
|||
12
Ildarovich
29.06.15
✎
10:09
|
+(10) вот в этой статье http://catalog.mista.ru/public/306536/ в разделе 13
|
|||
13
Юзер123
naïve
29.06.15
✎
10:09
|
короче. Сделал через попытку до цикла по экселю. если ошибка - пропускает продолжает. Ковырять корявый файл не буду. спс всем за ответы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |