Имя: Пароль:
1C
1С v8
v8: Не грузится второй екселевский фаил
,
0 Grigory123456789
 
31.05.13
17:12
В общем есть на форме 2 табличных поля, есть функция

Функция ИзExcelВТаблицу1(ПутьДоExcel,НомерЛиста,ПерСтрокаЗаголовок)
   ТЗ = Новый ТаблицаЗначений();
   Попытка
       Эксель = Новый COMОбъект("Excel.Application"); // для v7 код будет: Эксель = СоздатьОбъект("Excel.Application");
   Исключение
       Сообщить(ОписаниеОшибки());
       Возврат ТЗ;
   КонецПопытки;
   
       Книга = Эксель.WorkBooks.Open(ПутьДоExcel);
//Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:

   Лист = Книга.WorkSheets(НомерЛиста);
//Нумерация листов книги начинается с 1. Общее количество листов можно получить, используя следующую команду:

   КоличествоЛистов = Книга.Sheets.Count;
//Лист можно выбрать по имени листа в книге:

   //Лист = Книга.WorkSheets(ИмяЛиста);
//Имя листа в книге можно получить по номеру:

   ИмяЛиста = Книга.Sheets(НомерЛиста).Name;
//Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:

   ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
   ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
//Получим значения ячейки листа в строке НомерСтроки и в колонке НомерКолонки:

   //Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
//Ниже приведен отрывок кода, запустив который мы прочитаем все данные с первой страницы:

   //Эксель = СоздатьОбъект("Excel.Application");
   Книга = Эксель.WorkBooks.Open(ПутьДоExcel);
   Лист = Книга.WorkSheets(1);  

   ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
   ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;  
   
   
   
   
   
   
   
     
   Страница = Лист;//Док.Sheets(НомерСтраницы);
   МакСтрок = ВсегоСтрок;//Страница.UsedRange.Rows.Count;       // макс. колич. строк
   МакСтолб = ВсегоКолонок;//Страница.UsedRange.Columns.Count;    // макс. колич. столбцов    
   
   Для Столбец = 1 по МакСтолб цикл
       ИмяСтолбца = "Столбец_"  + Столбец;
       Если ПерСтрокаЗаголовок тогда
           ИмяСтолбца = Страница.Cells(1,Столбец).Value;
           ИмяСтолбца = СокрЛП(ИмяСтолбца);
           ИмяСтолбца = СтрЗаменить(ИмяСтолбца," ","_");
       КонецЕсли;                      
       ТЗ.Колонки.Добавить(ИмяСтолбца, Новый ОписаниеТипов("Строка"));
   КонецЦикла;
   
   НачальнаяСтрока = 1;    
   Если ПерСтрокаЗаголовок тогда                                      
       НачальнаяСтрока = 2;
   КонецЕсли;          
   
   Для НомСтрока = НачальнаяСтрока по МакСтрок цикл
       СтрТЗ = ТЗ.Добавить();
       Для НомСтолбец = 1 по МакСтолб цикл
           Данные = Страница.Cells(НомСтрока,НомСтолбец).Value;                
           СтрТЗ[НомСтолбец-1] = Данные;
           Сообщить(данные);
       КонецЦикла;    
       
//        ФормаИндикатора.ЭлементыФормы.Индикатор.Значение = НомСтрока/МакСтрок * 100;        
   КонецЦикла;    
   
   //Если ЗакрытьФормуИндиктаора тогда
   //    ФормаИндикатора.Закрыть();
   //КонецЕсли;      
    Док=Неопределено;
    Страница=Неопределено;
    Эксель.Application.Quit();
   Возврат ТЗ;
КонецФункции  

которая нормально все отрабатывает, но вот только во вторую ТЗ не грузит результат. Загрузку делаю следующим образом

ТаблицаДанные1=ИзExcelВТаблицу(ИмяФайлаНоменклатуры,1,истина);
ТаблицаДанные2=ИзExcelВТаблицу1(ИмяФайлаНоменклатуры1,1,истина);


в ТаблицаДанные1 данные приходят а вот во вторую нет, передача параметров в функцию происходит правильно, в чем затык не пойму.
1 Wobland
 
31.05.13
17:14
а я догадываюсь
2 Grobik
 
31.05.13
17:14
Может наоборот в первую не грузит. Или Функция ИзExcelВТаблицу гдето припрятана.
3 ssh2012
 
31.05.13
17:14
(0) > екселевский фаил

[фаил]
4 Grigory123456789
 
31.05.13
17:15
проверил на 5 раз, подставляю разные екселевские файлы, в первую приходит первыфй ексель
5 Grigory123456789
 
31.05.13
17:18
(2) нет все проверено и функцию скопировал в ветку прям из обработки
6 Wobland
 
31.05.13
17:18
(5) а вторую куда дел?
7 Grigory123456789
 
31.05.13
17:20
так же на форме разместил
8 Grigory123456789
 
31.05.13
17:20
ТаблицаДанные1
ТаблицаДанные2

это имена тз
9 Grigory123456789
 
31.05.13
17:21
могу выложить куданить обработку, мож у меня глюки
10 Ковычки
 
31.05.13
17:25
книгу закрой
11 Grigory123456789
 
31.05.13
17:27
понял, но не понял
12 Grigory123456789
 
31.05.13
17:31
походу нашел в чем фишка, не созданы колонки в тз2
13 Grobik
 
31.05.13
17:52
(5) Какую функцию ИзExcelВТаблицу  или ИзExcelВТаблицу1?
14 Grigory123456789
 
31.05.13
18:20
обе их использовал, ну думал мож глюк какой поэтому просто сделал ИзExcelВТаблицу1
15 Ковычки
 
31.05.13
18:22
автор к сведению прими SpecialCells(11) не дает последней заполненной ячейки
16 Grigory123456789
 
31.05.13
18:28
нашел

ТаблицаДанные1=ИзExcelВТаблицу(ИмяФайлаНоменклатуры,1,истина);
ТаблицаДанные2=ИзExcelВТаблицу1(ИмяФайлаНоменклатуры1,1,истина);
ЭлементыФормы.ТаблицаДанные1.СоздатьКолонки();
ЭлементыФормы.ТаблицаДанные2.СоздатьКолонки();