Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 07:44

Как проверить возможность преобразования строки в дату?

Автор Gennadiyy, 15 сен 2016, 09:45

0 Пользователей и 1 гость просматривают эту тему.

Gennadiyy

Здравствуйте! В общем ситуация следующая: необходимо распарсить огромный эксель, в некоторых ячейках есть числа, к примеру 8.9, которые автоматически преобразуются в дату (8.9 = 08.09.2016 00:00:00), так вот: можно ли как то проверить, что ячейку возможно преобразовать в дату Дата(Строка), что бы в коде проверять "если можно преобразовать, значит нужно из даты спарсить день и месяц иначе оставить как есть"

ilyay

Неправильная постановка задачи заключается в борьбе с неверно оформленным в Ексель файлом средствами 1С. Не лучше ли причесать Ексель его же средствами?

Gennadiyy

Цитата: ilyay от 15 сен 2016, 10:04
Неправильная постановка задачи заключается в борьбе с неверно оформленным в Ексель файлом средствами 1С. Не лучше ли причесать Ексель его же средствами?
Не легче, в файле несколько миллионов строк и порядка 30 столбцов с числами, конечно можно через если ячейка = "01.01.2016 00:00:00" тогда ячейка = "1.1"; иначеесли... но это будет не очень красиво, вот хотел бы узнать более красивый способ)

cska-fanat-kz

строковый формат даты, который "понимает" функция Дата() - далеко не "08.09.2016 00:00:00"
в 1С это "ГГГГММДД..." и т.д.
то есть можете смело парсить :ooifh:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ilyay

Цитата: Gennadiyy от 15 сен 2016, 10:27
Цитата: ilyay от 15 сен 2016, 10:04
Неправильная постановка задачи заключается в борьбе с неверно оформленным в Ексель файлом средствами 1С. Не лучше ли причесать Ексель его же средствами?
Не легче, в файле несколько миллионов строк и порядка 30 столбцов с числами, конечно можно через если ячейка = "01.01.2016 00:00:00" тогда ячейка = "1.1"; иначеесли... но это будет не очень красиво, вот хотел бы узнать более красивый способ)
Напишите макрос, который определит тип значения в ячейке и перезапишет его в однозначном представлении.

Gennadiyy

Цитата: ilyay от 15 сен 2016, 11:01
Цитата: Gennadiyy от 15 сен 2016, 10:27
Цитата: ilyay от 15 сен 2016, 10:04
Неправильная постановка задачи заключается в борьбе с неверно оформленным в Ексель файлом средствами 1С. Не лучше ли причесать Ексель его же средствами?
Не легче, в файле несколько миллионов строк и порядка 30 столбцов с числами, конечно можно через если ячейка = "01.01.2016 00:00:00" тогда ячейка = "1.1"; иначеесли... но это будет не очень красиво, вот хотел бы узнать более красивый способ)


Напишите макрос, который определит тип значения в ячейке и перезапишет его в однозначном представлении.

Да я уже так, в самой обработке добавил код:

Если СтрДлина(Строка)>5 Тогда
Массив = РазложитьСтрокуВМассивПодстрок(Строка, ".");
ЦелаяЧасть = Массив[0];
ДробнаяЧасть = Массив[1];

Если Лев(ЦелаяЧасть, 1) = "0" Тогда
ЦелаяЧасть = Сред(ЦелаяЧасть, 2);
КонецЕсли;

Если Лев(ДробнаяЧасть, 1) = "0" Тогда
ДробнаяЧасть = Сред(ДробнаяЧасть, 2);
КонецЕсли;
Строка = ЦелаяЧасть + "." + ДробнаяЧасть;

КонецЕсли;


Всё в принципе устраивает, по скорости примерно так же парсится, как и без дат)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск