Имя: Пароль:
1C
 
из excel в 1С
0 besks
 
13.05.08
15:32
Здравствуйте.
Есть обработка загрузки в ТЗ 1С таблицы excel.
Проблема: одна из ячеек excel имеет формат "ddmmyyyy ччммсс". Хочется получить это значение в ТЗ 1С, хотя бы в текстовом формате, а берется только дата.
Помогите...
1 ТелепатБот
 
гуру
13.05.08
15:32
2 Torquader
 
13.05.08
15:37
Sheet.Cells(Row,Col).Text - пробовали ?
Если не помогает, то
v=Sheet.Cells(Row,Col).Value - получаем дробное число (double) целая часть - дата, дробная часть - время.
3 Касандер
 
13.05.08
15:49
Код в студию!
4 Касандер
 
13.05.08
15:54
Не пойму, почему нельзя превратить в строку полученную дату из Excel при заполнении таблицы?
На худой конец завести строчную колонку, в которую сдублировать строчное значение даты.  Ходя бы при последующем переборе строк таблицы.
5 besks
 
13.05.08
15:59
На text-ругается,а на value - выдает дату, а хотелось бы получить еще и время:

   rs.MoveFirst();                
   Пока rs.EOF() = 0 Цикл
       ТЗ.НоваяСтрока();
       Для iCount = 0 По rs.Fields.Count-1 Цикл
ТЗ.УстановитьЗначение(ТЗ.КоличествоСтрок(),iCount+1,rs.Fields(iCount).Value);
       КонецЦикла;
     rs.MoveNext();  
   КонецЦикла;


М.б. кто-нибудь на док. по АДО отправит, вообще было бы здорово, а то методом тыка - тяжеловато
6 YF
 
13.05.08
16:00
(0) Поиском по форуму, а мона сюды поглядеть: Вытащить дату и время из ячейки Дата-время Excell
7 Касандер
 
13.05.08
16:08
(5) Извращенцы, блин.
Внутрь цикла:
ЛеваяПеременная = ...
ТЗ.ИмяКолонки = Строка(ЛеваяПеременная);
или обрабатывай левую как хочешь.
8 Torquader
 
13.05.08
16:10
А так и не получится, так как ADO передаёт в виде даты-времени, что 1С автоматически преобразует в дату, т.к. 1С не все типы данных понимает.
Параметр Text доступен только если читаешь через объект Excel.Application, а не через ADO.
9 besks
 
13.05.08
16:13
Касандеру:
Это неизменяет смысла, значение то все равно нет, а как его занести в ТЗ это уже мелочи
10 YF
 
13.05.08
16:16
(9) По АДО никак не получишь ты того, что хочешь, (8) уже сказал ...
11 Касандер
 
13.05.08
16:17
Винаватс, а что отладчик показывает после:
= Строка(rs.Fields(iCount).Value) ?
12 besks
 
13.05.08
16:18
Спасибо, буду смотреть Excel.Application.
Все вопросы буду задавать попозже
13 besks
 
13.05.08
16:18
что отладчик показывает после:
= Строка(rs.Fields(iCount).Value) ?

Дату
14 Касандер
 
13.05.08
16:19
А жаль, тогда придётся документик форматнуть.
15 Касандер
 
13.05.08
16:22
А после: Строка(Sheet.Cells(Row,Col)) ?
16 FreeFin
 
13.05.08
16:26
ДатВрем=Строка(ExcelApp.Cells(1,1).Text);
Датта=Дата(Лев(ДатВрем,8));
Времья=Сред(ДатВрем,10);
17 besks
 
13.05.08
16:28
Все равно дата, а руками ячейку делить не буду.
Надо сделать и что бы люди работали без моего вмешательство. Лучше скиньте ссылку на Excel.Application, что бы мне не искать
18 Torquader
 
13.05.08
16:35
ExcelOle=CreateObject("Excel.Application");
ExcelWorkbook=ExcelOle.Workbooks.Open(ИмяФайла);
Sheet=ExcelWorkbook.Worksheets.Item(1);// если только один лист
BeginLine=Sheet.UsedRange.Row;
EndLine=Sheet.UsedRange.Rows.Count+BeginLine-1;
for l=BeginLine to EndLine do
v=Sheet.Cells(l,1).Text; // или в какой колонке у вас дата ?
enddo;
// потом закрываем Excel
ExcelOle.Quit();
// или делаем его видимым, чтобы пользователь сам его закрыт
ExcelOle.Visible=-1;// True = -1

Удачи.
19 FreeFin
 
13.05.08
16:46
+(18) а можно и проверить,... я помню токмо через селект:

ExcelApp.Range("A1").Select();
Если ExcelApp.Selection.NumberFormat = "ДД.ММ.ГГ ч:мм;@" Тогда
Сообщить(Строка(ExcelApp.Cells(1,1).Text)); //строка томушто первая цифра
КонецЕсли;
20 besks
 
13.05.08
17:01
Torquader
Спасибо, все заработало.
Не подскажешь как определить к-во столбцов, чтобы не жестко задавать?
21 FN
 
13.05.08
17:01
(18) А если в региональных настройках дата в виде yyyy-MM-dd? Что тогда вернет .Text?

По-моему совсем правильно будет сначала задать ячейке четкий формат даты, а уже потом читать .Text
22 Torquader
 
13.05.08
18:12
Sheet.UsedRange.Column - начальная
Sheet.UsedRange.Columns.Count - количество колонок
23 besks
 
14.05.08
08:33
Torquader

Спасибо.