Имя: Пароль:
1C
1С v8
загрузка в 1с из excel через ADODB
0 rinaty17
 
04.06.13
16:12
может кто разбирался.
через этот метод у меня все пашет, но только одно но,
в файле excel есть пустые строки перед данными мне они тоже нужны, а они не загружаются
вот код

Процедура ЗагрузитьПрайс() Экспорт
   Connection = Новый COMОбъект("ADODB.Connection");
   СтрокаПодключения="Provider=Microsoft.Jet.OLEDB.4.0; Data Source = "+ПутьКФайлу;
   СтрокаПодключения=СтрокаПодключения+"; Extended Properties = "+"""Excel 8.0"+";HDR=NO;IMEX=1"";";
   
   Попытка
       
       Connection.Open(СтрокаПодключения);
       
   Исключение
       
       Сообщить(ОписаниеОшибки());
       Возврат;
       
   КонецПопытки;
   
   Command =Новый COMОбъект("ADODB.Command");
   
   axCatalog =Новый COMОбъект("ADOX.Catalog");                                                
   axCatalog.ActiveConnection = Connection;
   
   счЛиста=1;
   Для каждого Лист ИЗ axCatalog.Tables Цикл
       ИмяТаблицы=Лист.Name;
       
       Прервать;
       счЛиста=счЛиста+1;
       //        
   КонецЦикла;
       
   RecordSet =Новый COMОбъект("ADODB.RecordSet");
   Command.ActiveConnection = Connection;
   
   Сз = Новый СписокЗначений;
   Сз.Добавить(НомерКолонкиНаименование);
   Сз.Добавить(НомерКолонкиИдентификатора);
   Сз.Добавить(НомерКолонкиГруппыТоваров);
   Сз.Добавить(НомерКолонкиЦены);
   Сз.СортироватьПоЗначению();
   ТекстЗапросаКолонки = "";
   Для Каждого Стр Из Сз Цикл
       ТекстЗапросаКолонки=ТекстЗапросаКолонки+?(ТекстЗапросаКолонки="","F"+Стр.Значение,",F"+Стр.Значение);
   КонецЦикла;
   
   Command.CommandText ="SELECT "+ТекстЗапросаКолонки+" FROM ["+ИмяТаблицы+"]";
   
   Command.CommandType =1;
   
   Попытка        
       RecordSet = Command.Execute();
   Исключение
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
       
   //RecordSet.MoveNext();//т.кперваястрокаэтозаголовкитаблиц,небудемееучитывать
   Ном = 0;    
   Пока RecordSet.EOF()=0 Цикл
       Ном = Ном + 1;
       Если Ном >= НомерНачалаСтрокиТоваров ТОгда
           СтрокаТабличнойЧасти = Данные.Добавить();
           СтрокаТабличнойЧасти.Наименование=СокрЛП(Строка(RecordSet.Fields(НомерКолонкиНаименование-1).Value));
           СтрокаТабличнойЧасти.Идентификатор=СокрЛП(Строка(RecordSet.Fields(НомерКолонкиИдентификатора-1).Value));
           СтрокаТабличнойЧасти.Группа=СокрЛП(Строка(RecordSet.Fields(НомерКолонкиГруппыТоваров-1).Value));
           СтрокаТабличнойЧасти.ЦенаИзПрайса=RecordSet.Fields(НомерКолонкиЦены-1).Value;
           //СтрокаТабличнойЧасти.Наименование=СокрЛП(Строка(RecordSet.Fields(НомерКолонкиНаименование).Value));
       КонецЕсли;
       
       RecordSet.MoveNext();
       
   КонецЦикла;
   
   RecordSet.Close();
   Connection.Close();
   

КонецПроцедуры
1 rinaty17
 
04.06.13
16:13
как мне еще эти пустые строки тоже подтянуть?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший