Имя: Пароль:
1C
1С v8
Ошибка при импорте .xls
,
0 Nykos
 
26.08.13
10:54
Такой парадокс. Надо выгрузить екселевский док в справочник. Фишка в том что из 10 однотипных .xls файлов все загружаются, а один выдает ошибку. Почему имено он - не понимаю. Откуда ошибка - тоже не понимаю. Ошибка следующая:

"Значение не является значением объектного типа (Sheets).

Вот кусок кусок кода(с запасом):

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Выборка = Справочники.ДляЗагрузкиПрейскурантов.Выбрать();
    Пока Выборка.Следующий() Цикл
        ТекЗапись = Выборка.ПолучитьОбъект();
        ТекЗапись.Удалить();
    КонецЦикла;
    Если ПустоеЗначение(Путь) Тогда
        Сообщить("Не выбран файл для загрузки...",СтатусСообщения.ОченьВажное);
        Возврат;
    КонецЕсли;
    // обработка документа Excel
    Документ = Новый COMОбъект("Excel.Application");
    Попытка
        Книга = Документ.Workbooks.Open(Путь);
    Исключение
        Сообщить("Невозможно открыть файл Excel...",СтатусСообщения.ОченьВажное);
    КонецПопытки;
    Книга = Документ.ActiveWorkbook;
    Лист = Книга.Sheets(НомерЛиста);
    НомерСтроки = НачСтрока;
    Пока НомерСтроки <> КонСтрока + 1 Цикл
        НоваяСтрока = Справочники.ДляЗагрузкиПрейскурантов.СоздатьЭлемент();
        ТекНомер = СокрЛП(Строка(Лист.Cells(НомерСтроки,НомерКолонкиНомера).Value));
        НоваяСтрока.НовНаим = СокрЛП(Строка(Лист.Cells(НомерСтроки,НомерКолонкиНаименования).Value));
        НоваяСтрока.Цена = ?(Не ПустоеЗначение(СокрЛП(Строка(Лист.Cells(НомерСтроки,НомерКолонкиЦены).Value))),Число(СокрЛП(Строка(Лист.Cells(НомерСтроки,НомерКолонкиЦены).Value))),0);
        НоваяСтрока.НормаВремени = ?(СокрЛП(Строка(Лист.Cells(НомерСтроки,НомерКолонкиНормыВремени).Value))<>"0",СокрЛП(Строка(Лист.Cells(НомерСтроки,НомерКолонкиНормыВремени).Value)),0);
        // проверка правильности установки номера
        Попытка
            флаг = 0;
            левНомер = Число(Лев(ТекНомер,1));
        Исключение
            флаг = 1;
        КонецПопытки;
1 butterbean
 
26.08.13
10:58
убери строку
Книга = Документ.ActiveWorkbook;
2 Nykos
 
26.08.13
11:02
не помогло...
3 Wobland
 
26.08.13
11:19
я зачем-то открывал в попытке. зачем?

Попытка
        ExcelFile=Excel.Workbooks.Open(Файл);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
4 Nykos
 
26.08.13
11:20
хрен знает
5 dk
 
26.08.13
11:26
значит 10-й чем-то отличается от 9
может там на первом листе диаграмма скрытая или номер листа переопределяется
попробуй
Сообщить(Книга.Sheets.Count);
Сообщить(Книга.WorkSheets.Count);
Сообщить(НомерЛиста);
Лист = Книга.WorkSheets(НомерЛиста);
6 Nykos
 
26.08.13
11:38
(5) Да в том то и дело, что в сотый раз перепроверил - одинаковые полностью два файла, разница только в числах в ячейках некоторых. Все! Пипец..

Сообщения тоже никакого результата не дали.
7 zladenuw
 
26.08.13
11:39
(6) так что пишут ?
8 Steini
 
26.08.13
11:41
(6) а если первый файл скопировать и в нем поменять числа? =)
9 Nykos
 
26.08.13
11:45
Млять, да все короче. понял я в чем фишка. Отличие от остальных в том, что название файла имеет ниибически большую длину. От этого и не хотело выковыривать.
10 Nykos
 
26.08.13
11:45
Как раньше не допер, хз.
11 dk
 
26.08.13
11:47
на будущее можно так страховаться:

    Исключение
        Сообщить("Ошибка при открытии файла: ");
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;

потому как описаниеошибки иногда пустое
12 Nykos
 
26.08.13
11:50
ок
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.