Имя: Пароль:
1C
1C 7.7
v7: Не могу получить дату из екселя в йоксель
0 Zhuravlik
 
21.06.12
14:59
Здравствуйте. В экселе дата - 14.05.2012 12:17 (формат ячейки ММ.ДД.ГГГГ ч:мм), при считывании значения этой даты (обл.Текст) возвращается вот такое значение: 41043.512257.
А мне нужно получить дату, НЕ залазия в эксель, и не исправляя формат ячейки. Что значат эти цифры? Я думал кол секунд, но нет...
1 andrewks
 
21.06.12
15:08
2 andrewks
 
21.06.12
15:12
а что возвращает value?
3 Zhuravlik
 
21.06.12
15:56
(2) Я загружай файл Йокселем, там нет такого метода.
4 Zhuravlik
 
21.06.12
16:12
http://www.planetaexcel.ru/tip.php?aid=127

"На самом деле любую дату Excel хранит и обрабатывает именно так - как число с целой и дробной частью. Целая часть числа (38998) - это количество дней, прошедших с 1 января 1900 года (взято за точку отсчета) до текущей даты. А дробная часть (0,65417), соответственно, доля от суток (1сутки = 1,0)

Из всех этих фактов следуют два чисто практических вывода:

Во-первых, Excel не умеет работать (без дополнительных настроек) с датами ранее 1 января 1900 года. Но это мы переживем! ;)
Во-вторых, с датами и временем в Excel возможно выполнять любые математические операции. Именно потому, что на самом деле они - числа! А вот это уже раскрывает перед пользователем массу возможностей."

Жаль, жаль... что нельзя прочесть готовую дату( И когда я к 1 января 1900 прибавляю целую часть числа, у меня не экселевское значение для даты, то + день, то минус 2 дня....
5 antoneus
 
21.06.12
16:13
На демоконфе Йокселя попробовал - всё ок грузит.
6 Mikeware
 
21.06.12
16:20
(3) Есть. У области.
Даты грузит нормально.
7 Zhuravlik
 
21.06.12
16:34
(5) Что именно грузит?? Я загружаю в 1С файл экселя, где дата+время представлена числом миллисекунд. Как ее увидеть в 1С?
(6) Есть "Значение", которое возвращает то же самое, что и показывает мне фрейм, когда ф вывожу на просмотр таблицу, закгруженную из конвертора. То есть число с дробью, а не строку где дата _пробел_ время.
8 Ёпрст
 
21.06.12
16:35
(7)  в экселе выстави, что тип ячейки текст и грузи в 1с как текст
9 antoneus
 
21.06.12
16:39
(7) Формат ячейки Excel - дата, ДД.ММ.ГГГГ ЧЧ:ММ.
Йоксель.КонвертерВТаблицуЗначений, грузит дату в таблицу значений, в отладчике ТипЗначенияСтр(ТЗ.ПолучитьЗначение(1,1))="Дата".
10 Zhuravlik
 
21.06.12
16:41
(8) Грузить будет бухгалтер. Я не хочу чтобы он там случайно где-нибудь нажал пробел, или удалил ячейку.
(9) А время? Время тоже нужно...
А можно в 1С как-нибудь программно пересохранить файл экселя в csv? Не хочу, чтобы бухи даже просто открывали файл перед выгрузкой.
11 Zhuravlik
 
21.06.12
16:43
(9) хотя время можно будет потом пересчитать из дробной части... спасибо, сейчас попробую еще раз.
12 Zhuravlik
 
21.06.12
16:50
(9) Нет, выходит тз с такой же бедой... Вместо даты - число с дробью.
13 Ёпрст
 
21.06.12
16:51
пробуй в конвертере отключить распознавание числовых ячеек
14 Zhuravlik
 
21.06.12
16:55
(13) Конвертер.Открыть(ИмяФайла) возвращает КнигуЗагрузчика, а как получить книгу конвертера?
15 Zhuravlik
 
21.06.12
16:58
(14) А, все, нашел..
16 Zhuravlik
 
21.06.12
17:06
(13) то же самое
17 Ёпрст
 
21.06.12
17:06
а как в (8) хоть работает ?
18 Zhuravlik
 
21.06.12
17:12
(17) не пробовал, но сработает судя по тому, что если я сохраняю в csv - все нормально. Теперь нужно найти способ как программно сохранить файл екселя в csv.
19 Mikeware
 
21.06.12
17:33
(18) ADO. Или DTS
20 Zhuravlik
 
22.06.12
11:26
Решил))    

прИмяВремФайла = "D:\1.txt";
   Попытка
       НачатьТранзакцию();
       Эксель = СоздатьОбъект("Excel.Application");
       Книга = Эксель.Workbooks.Open(СокрЛП(фрАдресФайла));
       Лист = Книга.Worksheets("Лист1");
       Эксель.DisplayAlerts = 0;
       Книга.SaveAs(прИмяВремФайла, 6);
       Книга.Close(0);
       Эксель.Quit();
       ЗафиксироватьТранзакцию();
   Исключение
       Сообщить(ОписаниеОшибки() + ", вероятно не установлен ексель...", "!");
       Возврат;
   КонецПопытки;    

   Если фс.СуществуетФайл(прИмяВремФайла) = 1 Тогда
       Текст = СоздатьОбъект("Текст");
       Текст.Открыть(прИмяВремФайла);
   КонецЕсли;
   

   
   Для сч=1 По Текст.КоличествоСтрок() Цикл
       Сообщить(Текст.ПолучитьСтроку(сч));
   КонецЦикла;


Сохраняю экселевский файл в csv, где все выглядит так, как надо.
Может пригодится кому:
У метода SaveAs(прИмяВремФайла, 6), второй параметр (6) - формат сохраняемого файла, причем если пишу формат отсюда http://msdn.microsoft.com/en-us/library/aa194915(v=office.10).aspx, это не работает. Чтобы узнать эту цифру сохранил файл екселя в csv, и открыл его программно, а затем Сообщить(Книга.FileFormat)
21 Mikeware
 
22.06.12
11:36
(20) Блинн. нетленка, йоптыть... ты еще запатентуй....
зы. То, что указанные тобой XlFileFormat - символьные представления xbckjds[ констант - известно всем желающим...
22 Zhuravlik
 
22.06.12
13:27
(22) Мне известно не было, к чему такая язвительность? По-моему это хороший тон к своему вопросу писать его решение. Тем более если сам его нашел, т.е. в ветке мне никто не посоветовал пересохранить файл екселя методами Excel.Application.