Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 17:12

Из Excel в 1с 8.2.

Автор beztrud, 02 дек 2011, 11:21

0 Пользователей и 1 гость просматривают эту тему.

beztrud

Здравствуйте! Помогите пожалуйста нужно из файла Excel импортировать в табличную часть документа (ЗаказыМДФ) данные. 1с 8.2. управляемое приложение. Есть табличная часть Пленка с реквизитами Высота, Ширина, Количество, Примечание. ИмяФайла - строка неограниченной длины. Вот что делаю я:


&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.ПроверятьСуществованиеФайла = Истина;
ВыборФайла.Фильтр = "Excel (*.xls)|*.xls";
ВыборФайла.МножественныйВыбор = Ложь;
Если НЕ ВыборФайла.Выбрать() Тогда
        Предупреждение("Файлы не выбраны");
Возврат
КонецЕсли;
НайтиФайл = ВыборФайла.ВыбранныеФайлы[0];
Поле = Строка(НайтиФайл);
Объект.ИмяФайла=НайтиФайл;
Объект.Пленка.Очистить();
Попытка
      Эксель = Новый COMОбъект("Excel.Application");
      Исключение
      Сообщить(ОписаниеОшибки());
      Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Open(НайтиФайл);
Лист = Книга.WorkSheets(1);
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;     
   Для Строка = 1 По ВсегоСтрок Цикл   
   Для Колонка = 1 По ВсегоКолонок Цикл
   Значение = Лист.Cells(Строка,Колонка).Value;
        СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Высота");
   СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Ширина");
        СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Количество");
   СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Примечание");
КонецЦикла;
КонецЦикла;

   Эксель.Application.Quit();
КонецПроцедуры

Пишет при отладке Несоответствие типов (параметр '1')

beztrud

Что -то не вставилось попробую еще раз.

&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.ПроверятьСуществованиеФайла = Истина;
ВыборФайла.Фильтр = "Excel (*.xls)|*.xls";
ВыборФайла.МножественныйВыбор = Ложь;
Если НЕ ВыборФайла.Выбрать() Тогда
        Предупреждение("Файлы не выбраны");
Возврат
КонецЕсли;
НайтиФайл = ВыборФайла.ВыбранныеФайлы[0];
Поле = Строка(НайтиФайл);
Объект.ИмяФайла=НайтиФайл;
Объект.Пленка.Очистить();
Попытка
      Эксель = Новый COMОбъект("Excel.Application");
      Исключение
      Сообщить(ОписаниеОшибки());
      Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Open(НайтиФайл);
Лист = Книга.WorkSheets(1);
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;     
   Для Строка = 1 По ВсегоСтрок Цикл   
   Для Колонка = 1 По ВсегоКолонок Цикл
   Значение = Лист.Cells(Строка,Колонка).Value;
    СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Высота");
   СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Ширина");
    СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Количество");
   СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Примечание");
КонецЦикла;
КонецЦикла;

   Эксель.Application.Quit();
КонецПроцедуры

Пишет при отладке несоответствие типов (параметр '1')

beztrud

попробую по частям:


&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.ПроверятьСуществованиеФайла = Истина;
ВыборФайла.Фильтр = "Excel (*.xls)|*.xls";
ВыборФайла.МножественныйВыбор = Ложь;
Если НЕ ВыборФайла.Выбрать() Тогда
        Предупреждение("Файлы не выбраны");
Возврат
КонецЕсли;
НайтиФайл = ВыборФайла.ВыбранныеФайлы[0];
Поле = Строка(НайтиФайл);
Объект.ИмяФайла=НайтиФайл;
Объект.Пленка.Очистить();
Попытка
      Эксель = Новый COMОбъект("Excel.Application");
      Исключение
      Сообщить(ОписаниеОшибки());
      Возврат;
КонецПопытки;

beztrud

часть 2


Поле = Строка(НайтиФайл);
Объект.ИмяФайла=НайтиФайл;
Объект.Пленка.Очистить();
Попытка
      Эксель = Новый COMОбъект("Excel.Application");
      Исключение
      Сообщить(ОписаниеОшибки());
      Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Open(НайтиФайл);
Лист = Книга.WorkSheets(1);
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;     
   Для Строка = 1 По ВсегоСтрок Цикл   
   Для Колонка = 1 По ВсегоКолонок Цикл
   Значение = Лист.Cells(Строка,Колонка).Value;
    СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Высота");
   СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Ширина");
    СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Количество");
   СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Примечание");
КонецЦикла;
КонецЦикла;

   Эксель.Application.Quit();
КонецПроцедуры

beztrud

Вот полная картинка

beztrud

Вот что пишет

has

На какую строку ругается то?

beztrud

{Документ.ФаксыМДФ.Форма.ФормаДокумента.Форма(70)}: Ошибка при вызове метода контекста (Вставить)
    СтрокаТабличнойЧасти=Объект.Пленка.Вставить("Высота");
по причине:
Несоответствие типов (параметр номер '1')

has

Какой тип у Пленка?

beztrud

Пленка- табличная часть документа

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск