7.7 Преобразование типов при считывании из Excel

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем _Ольга, 20 фев 2011.

  1. TopicStarter Overlay
    _Ольга
    Offline

    _Ольга

    Регистрация:
    20 фев 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте. Необходимо считать данные из экселевского файла в 1С 7.7. При этом эксель на компе не установлен, поэтому использую драйвер Microsoft.Jet.OLEDB.4.0. Создаю руками колонки ТЗ произвольного типа. При заполнении ТЗ данные из Excel преобразую в нужные типы данных. Столкнулась с такой проблемой. При "вытягивании" значений одной из колонок экселя данные имеют тип "Дата". При этом значения в этой колонке экселя имеют вид, например, 44,25. Необходимо преобразовать эти значения в число вида 44.25.
    Пробовала делать так:
    Код:
    ЗначениеЯчейки = Число(СтрЗаменить(Строка(НаборЗаписей.Fields(к).Value), "," , "."));
    
    Результат:ЗначениеЯчейки = 13.02
    Подскажите, пожалуйста, как в данном случае получить число 44.25?
  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    А зачем Вам Дату приводить к Числу?
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вид и значения немного разные вещи. Что содержится в НаборЗаписей.Fields(к).Value?
  4. TopicStarter Overlay
    _Ольга
    Offline

    _Ольга

    Регистрация:
    20 фев 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    НаборЗаписей.Fields(к).Value - это значение из ячейки эксель - реально в ней записано 45,25. Но при этом отладчик говорит, что НаборЗаписей.Fields(к).Value имеет тип "Дата". Необходимо, чтобы при записи из экселя в ТЗ 45,25 с типом значения "Дата" преобразовывалась в 45.25 с типом значения "Число".
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Преобразуйте в самом файле или через свойства ячейки к формату "общий" и все получится
  6. TopicStarter Overlay
    _Ольга
    Offline

    _Ольга

    Регистрация:
    20 фев 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Это понятно, я так уже делала. Только вот беда. Эксель на компе не установлен. А экселевский файл получаем от поставщиков - поэтому назначать свойства ячейки программно при создании файла тоже нет возможности. А может быть можно сделать это непосредственно перед считыванием данных?
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Да. Можно.

    Код:
    NumberFormat = "0.00"
    
    
    
  8. TopicStarter Overlay
    _Ольга
    Offline

    _Ольга

    Регистрация:
    20 фев 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Кто-нибудь знает какой атрибут используется для программного задания формата ячейки эксель, при работе с объектом ADODB.RecordSet ?? Для Excel.Application это NumberFormat, например:
    Код:
    Е.Cells(строка,столбец).NumberFormat="# ##0.00";
    
  9. TopicStarter Overlay
    _Ольга
    Offline

    _Ольга

    Регистрация:
    20 фев 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    NumberFormat вроде бы применяется только для объектов Excel.Application.
    Код:
    	НаборЗаписей.Fields(к).NumberFormat="0.00";
    
    Ошибка:Поле агрегатного объекта не обнаружено (NumberFormat)
  10. TopicStarter Overlay
    _Ольга
    Offline

    _Ольга

    Регистрация:
    20 фев 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    А если решать ту же задачу посредством внешней компоненты ExcelEditor.dll, всё получается гораздо проще и подобная проблема не возникает. Спасибо всем за советы.

Поделиться этой страницей