Имя: Пароль:
1C
 
Ошибка при выборе листа эксель
,
0 falselight
 
21.03.19
10:34
Использую обработку для загрузки данных с эксель листов.
На форме появилось дерево, файла эксель и его листов. Выбираю лист.
Жму прочитать, в тз появляются данные.
Но если выбрать другой лист и нажать прочитать, то, выходит ошибка

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(319)}: Ошибка при вызове метода контекста (Sheets)
    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  
по причине:
Произошла исключительная ситуация (0x800a03ec)


То есть как её исключить? Что бы перечитывался другой выбранный лист?
1 falselight
 
21.03.19
10:39
Вижу ошибку, Excel - не определена в этом случае. Наверное в этом дело.
2 falselight
 
21.03.19
10:44
Все же ошибка идет, не подскажете почему?

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(329)}: Ошибка при вызове метода контекста (Sheets)
    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  
по причине:
Произошла исключительная ситуация (0x800a03ec)
3 Дмитрий
 
21.03.19
10:44
ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы чему равно?
4 falselight
 
21.03.19
10:51
Почему вот это бывает пустое?????
При первой загрузке там COMОбъект

(3) Названию выбранного листа.
5 falselight
 
21.03.19
10:51
(4+) Excel.Sheets
6 falselight
 
21.03.19
10:57
Точку останова ставлю, вроде как обновляются данные
без точки останова ошибка, как будто COMОбъект не успевает считаться, как тут быть?
7 falselight
 
21.03.19
10:58
как с этим быть? Что то не понятно!!!!
8 falselight
 
21.03.19
11:06
Почему не видна функция в 1с ТекущееВремя() ?
9 falselight
 
21.03.19
11:08
Хотел вот такую функцию использовать, паузу. но она не работает.

Процедура Пауза(Время)
чЧас=0; чМин=0; чСек=0;
ТекущееВремя(чЧас,чМин,чСек);
чТекВремя = чЧас*3600+чМин*60+чСек;
чВремяЗавершения = чТекВремя+Время;
Пока чТекВремя<чВремяЗавершения Цикл
ТекущееВремя(чЧас,чМин,чСек);
чТекВремя = чЧас*3600+чМин*60+чСек;
КонецЦикла;
КонецПроцедуры;
10 falselight
 
21.03.19
12:17
Ставлю точку останова на этой строке.

// ЧТЕНИЕ ЛИСТА
Процедура КоманднаяПанель1ПрочитатьДанныеСЛиста(Кнопка)
    Если ОбрЗавершена = 1 Тогда
        Сообщить("Данный файл уже был обработан. Перезапустите обработку и выберите новый файл для загрузки!");
        Возврат;
    КонецЕсли;
    //
    // Необходимый лист
    Если Найти(СокрЛП(Строка(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы)), "xls") > 0 Тогда
        Предупреждение("Выберите конкретный лист для загрузки, а не сам файл!");
        Возврат;
    КонецЕсли;
    //
    Если Excel = неопределено Тогда
        Попытка
            Excel = новый COMОбъект("Excel.Application");
        Исключение
            Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
            Возврат;
        КонецПопытки;    
        //НашФайл = Excel.Workbooks.Open(ИмяФайла);
        Excel.Workbooks.Open(ИмяФайла);
    КонецЕсли;
    //
    //ПаузаПустымЦиклом(5);
    //
    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  


Читаю листы, у загруженного файла в дерево. Читается как и один так и другой.
Останавливаясь на точке останова. Как только я убираю точку останова, при этих же действиях вываливается ошибка.

{ВнешняяОбработка.ЗагрузкаИзExcel_1_2.Форма.Форма.Форма(333)}: Ошибка при вызове метода контекста (Sheets)
    Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select();  
по причине:
Произошла исключительная ситуация (0x800a03ec)


Что нужно поправить? Подскажите пожалуйста!
11 falselight
 
21.03.19
12:21
Решил вопрос.
Нужно было сделать так, -

    Excel = Неопределено;
    //
КонецПроцедуры
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn