Имя: Пароль:
1C
1С v8
из эксель в 1с 8,2. несколько листов
0 Liroi
 
10.09.12
12:33
Всем привет. задачка импортировать в 1с 8,2 файл эксель. с одного листа я реализовал, а как еще с другого листа импортировать, короч. со всех листов в одну кучу. количество листов в документе постоянно
1 Rie
 
10.09.12
12:34
(0) Циклом не пробовал?
2 DrShad
 
10.09.12
12:42
количество листов не важно
3 Liroi
 
10.09.12
12:45
количество не важно, а тогда какой последний будет. выражение. если циклом
4 Rie
 
10.09.12
12:56
(3) Книга.Worksheets.Count
5 Liroi
 
10.09.12
13:24
Книга = ExcelФайл.WorkSheets.Count;
ExcelЛист = Книга.WorkSheets(1);
   
   Для ExcelЛист = 1 по Книга  Цикл
....

так?
6 Rie
 
10.09.12
13:35
(5)
КолвоЛистов = ExcelФайл.Worksheets.Count;
Для НомерЛиста = 1 По КолвоЛистов Цикл
   ExcelЛист = ExcelФайл.Worksheets(НомерЛиста);
   // и тут что хочешь с ним, то и делаешь
КонецЦикла;
7 Liroi
 
10.09.12
13:56
{Форма.Форма.Форма(56)}: Метод объекта не обнаружен (WorkSheets)
8 Liroi
 
10.09.12
13:59
Попытка
       // Загрузка Microsoft Excel
       Состояние("Загрузка Microsoft Excel...");
       ExcelПриложение = Новый COMОбъект("Excel.Application");
   Исключение
       Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
       Возврат;
   КонецПопытки;
   
   Попытка
       // Открытие файла Microsoft Excel
       Состояние("Открытие файла Microsoft Excel...");
       ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
   Исключение
       Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
   КонецПопытки;
   
   Попытка
       // Обработка файла Microsoft Excel
       Состояние("Обработка файла Microsoft Excel...");
       // Читаем данные  листа книги
         КолвоЛистов = ExcelФайл.Worksheets.Count;
Для НомерЛиста = 1 По КолвоЛистов Цикл
   ExcelЛист = ExcelФайл.Worksheets(НомерЛиста);

       // Определить количество строк и колонок выбранного листа книги Excel
       xlCellTypeLastCell = 11;
       ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
       ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
         

   Исключение
       Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
       // Закрыть COM соединение для экономии памяти
       ExcelПриложение.Quit();
       КонецПопытки;
           
       
   // Создание описателя типов для таблицы значений
   КЧ = Новый КвалификаторыЧисла(15,2);
   КС = Новый КвалификаторыСтроки(50);
   Массив = Новый Массив;
   Массив.Добавить(Тип("Строка"));
   ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
   Массив.Очистить();
   Массив.Добавить(Тип("Число"));
   ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
   
   // Очистить предыдущие значения
   ТаблицаДокумента.Очистить();
   ТаблицаДокумента.Колонки.Очистить();
   
   // Создать колонки табличного документа
   ТаблицаДокумента.Колонки.Добавить("Номер",ОписаниеТиповС,"Номер",5);
   ТаблицаДокумента.Колонки.Добавить("Артикул",ОписаниеТиповС,"Артикул",11);
   ТаблицаДокумента.Колонки.Добавить("Описание",ОписаниеТиповС,"Описание",25);
   ТаблицаДокумента.Колонки.Добавить("Цена",ОписаниеТиповЧ,"Цена",6);
   ТаблицаДокумента.Колонки.Добавить("Тип",ОписаниеТиповС,"Тип",4);
   
   // Последовательное чтение строк с выбранного листа
   Для Строка = 1 По ExcelПоследняяСтрока Цикл
               
       // Обработка нажатия Ctrl + Break
       ОбработкаПрерыванияПользователя();
       
       // Добавить данные в табличную часть экранной формы
       Стр=ТаблицаДокумента.Добавить();
       Стр.Номер                = Строка;
       Попытка
           Стр.Артикул             = ExcelЛист.Cells(Строка, 1).Value;
           Стр.Описание            = ExcelЛист.Cells(Строка, 2).Value;
           Стр.Цена                = ExcelЛист.Cells(Строка, 3).Value;
           Стр.Тип                = ExcelЛист.Cells(Строка, 4).Value;
       Исключение
           // Не редко происходит ошибка конвертации отдельной ячейки документа
           Сообщить("Ошибка чтения строки файла Microsoft Excel." + Строка + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
       КонецПопытки;
       // Отобразить информацию о ходе выполнения обработки
       Состояние("Обработка файла Microsoft Excel : "
        + "строка " + Строка + " из " + ExcelПоследняяСтрока);
       
    КонецЦикла;    
 
   
    // Закрыть COM соединение для экономии памяти
    ExcelПриложение.Quit();
9 Liroi
 
10.09.12
14:11
Rie, пардон. с WorkSheets разобрался.

только теперь почему-то все поля пустые
10 Rie
 
10.09.12
14:28
(9) Теперь разберись с тем, что ты с каждым новым листом чистишь свою ТаблицаДокумента.
11 Liroi
 
10.09.12
14:39
дело не в очистке. последний лист оказался пустым, я его удалил, осталось 2 листа и в 1ске он мне выводит не все листы, а только последний оказыввается, вот почему до этого пустая таблица была. лист последний пустой был
12 Rie
 
10.09.12
14:51
(11) Именно из-за очистки у тебя и терялось содержимое предыдущих листов.
13 Liroi
 
10.09.12
14:55
там на очистку 2 строчки. я их закомментировал, не помогло
Программист всегда исправляет последнюю ошибку.