Имя: Пароль:
1C
1С v8
Подскажите по загрузке данных в 1С из Excel
0 Luhtas
 
03.05.12
13:51
Доброго дня, поднимал эту тему, подсказали как реализоват, вот что удалось сделать...Но не могу реализовать заполнение строк ТЧ, т.е сроки добавляются, но без данных. Подскажите что забыл сделать.
Вод код:
&НаКлиенте
Функция мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1) Экспорт
   Ответ=Вопрос("Табличная часть будет очищена!, Продолжить?", РежимДиалогаВопрос.ДаНет);
   Если Ответ=КодВозвратаДиалога.Да Тогда
       
       xlLastCell = 11;
       
       ВыбФайл = Новый Файл(ИмяФайла);
       Если НЕ ВыбФайл.Существует() Тогда
           Сообщить("Файл не существует!");
           Возврат Ложь;
       КонецЕсли;
       
       Попытка
           Excel = Новый COMОбъект("Excel.Application");
           Excel.WorkBooks.Open(ИмяФайла);
           Состояние("Обработка файла Microsoft Excel...");
           ExcelЛист = Excel.Sheets(НомерЛистаExcel);
       Исключение
           Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
           Возврат ложь;
           
       КонецПопытки;
       
       Объект.Номенклатура.Очистить();
       
       ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
       RowCount = ActiveCell.Row;
       ColumnCount = ActiveCell.Column;
       //Для Column = 1 По ColumnCount Цикл
       //    ТабличныйДокумент.Область("C" + Формат(Column, "ЧГ=")).ШиринаКолонки = ExcelЛист.Columns(Column).ColumnWidth;
       //КонецЦикла;
       Для Row = 1 По RowCount Цикл
           
           Для Column = 1 По ColumnCount Цикл
               НоваяСтрока=Объект.Номенклатура.Добавить();
               Для Column = 1 По ColumnCount Цикл
                   НоваяСтрока.Наименование = ExcelЛист.Columns(Column).ColumnWidth;
               КонецЦикла;
               //НоваяСтрока.Наименование=ExcelЛист.Cells(Row,Column).Text;
               //ТабличныйДокумент.Область("R" + Формат(Row, "ЧГ=") +"C" + Формат(Column, "ЧГ=")).Текст = ExcelЛист.Cells(Row,Column).Text;
           КонецЦикла;
           
       КонецЦикла;
       
       Excel.WorkBooks.Close();
       Excel = 0;
       
       Возврат Истина;
   Иначе
       Возврат Ложь;
   КонецЕсли;
   
   
КонецФункции // ()
1 sanja26
 
03.05.12
13:53
НоваяСтрока.номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ExcelЛист.Cells(Row,Column).Text)
2 vicof
 
03.05.12
13:53
Для Column = 1 По ColumnCount Цикл
                   НоваяСтрока.Наименование = ExcelЛист.Columns(Column).ColumnWidth;
               КонецЦикла;

вот это вот зачем?
3 Luhtas
 
03.05.12
13:55
(2) Пробовал добавить данные в поле "наименование" строки ТЧ видимо...
4 Luhtas
 
03.05.12
13:57
(1) А если поиск не увенчался успехом, как добавить наименование из екселя в поле ТЧ "номенклатура"? Никак не вкурю что-то.
5 Mouzem
 
03.05.12
13:58
Передаешь строку путь к файлу, получаешь ТЗ.

Функция ПрочитатьВТаблицуЗначений(Файл)
   НомерНачальнойСтроки = 1;
   Excel = Новый ComОбъект("Excel.Application");
   Excel.Workbooks.Open(Файл);
   Excel.DisplayAlerts = 0; //Не выводить предупреждения Excel
   
   ТЗ = Новый ТаблицаЗначений;
   Для ии = 1 По Excel.Cells.SpecialCells(11).Column Цикл
       
       Попытка
           Если ии < 10 Тогда
               ТЗ.Колонки.Добавить("Кол00"+Строка(ии), ,Excel.ActiveSheet.Cells(1,ии).Value);
           Иначе
               ТЗ.Колонки.Добавить("Кол0"+Строка(ии), ,Excel.ActiveSheet.Cells(1,ии).Value);
           КонецЕсли;
       Исключение
           Сообщить("Не удалось добавить колонку");
       КонецПопытки;
       
   КонецЦикла;
       
   КолКолонок = ии - 1;
   
   КоличествоСтрок = Excel.Cells.SpecialCells(11).Row;
   
   Если НомерНачальнойСтроки < 1 Тогда
       НомерНачальнойСтроки = 1
   КонецЕсли;
 
   Для ии = НомерНачальнойСтроки По КоличествоСтрок  Цикл
       стр = ТЗ.Добавить();
       Для кол = 1 По КолКолонок Цикл
           стр[кол-1] = Формат(Excel.ActiveSheet.Cells(ии,кол).Value,"ЧГ=0");
       КонецЦикла;
       Состояние("Загружено из XLS: "+Строка(ии)+ " из "+Строка(КоличествоСтрок));
   КонецЦикла;
   
   Excel.Quit();

   Возврат ТЗ;
   
КонецФункции // ПрочитатьВТаблицуЗначений()
6 vicof
 
03.05.12
13:59
(3) не, это наименованию присваивается ширина колонки
7 vicof
 
03.05.12
14:01
(4) тогда создавать объект номенклатуры, его записывать и передавать ссылку на него в ТЧ
8 Luhtas
 
03.05.12
14:01
(6) Да, не то признаю. Буду править. Первый раз делаю...
9 Luhtas
 
03.05.12
14:02
В (5) хороший пример, кажется понимаю как делать нужно.
Спасибо.
Программист всегда исправляет последнюю ошибку.