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

Загрузка данных в 1с из экселя с через (ADO)

Автор Начинающий 1с, 10 окт 2013, 17:06

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

Начинающий 1с


  Всем привет подскажите пожалуйста, пишу обработку для платформы 8.2, конфигурация БП 3.0 упр формы, вариант клиент серверный, ниже код:



&НаСервере
Функция ПарсингЭкселя(пФайл, пЛист, СтруктураКолонок = Неопределено,  НачСтрока = 0, знач ПодключениеADODB = "MicrosoftJetOLEDB40",  КонСтрока = 0,Таблица,ТЗнач) Экспорт

   СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+Объект.Путь;
   СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=NO;IMEX=1"";";
   
   // Подключаемся
   
   Об_Конект = Новый COMОбъект("ADODB.Connection");
   
   Попытка
      Об_Конект.Open(СтрокаПодключения);
   Исключение
      Сообщить ("Невозможно подключится к Microsoft Excel" + ОписаниеОшибки());
      Возврат Неопределено;
   КонецПопытки;
   
      RS = Новый COMОбъект("ADODB.Recordset");
      
      ТекстЗапроса =
      "SELECT
      |    Лист.*
      |FROM
         |    [Лист1$] as Лист";
   
    Попытка
       RS.Open(ТекстЗапроса, Об_Конект);
    Исключение
       Сообщить ("Проблемы с выполнением запроса");
       Возврат Неопределено;
    КонецПопытки;
   
   Таблица = Новый ТаблицаЗначений;
       
    Если СтруктураКолонок = Неопределено Тогда
       
       Для Счетчик = 1 По RS.Fields.Count Цикл
          Поле = RS.Fields.Item(Счетчик - 1);
         Колонка = Таблица.Колонки.Добавить("К" + Счетчик, , Поле.Name);
      КонецЦикла;

    Иначе

      Для каждого КлючИЗначение Из СтруктураКолонок Цикл
         Колонка = Таблица.Колонки.Добавить(КлючИЗначение.Ключ);
      КонецЦикла;

    КонецЕсли;

    НомерСтроки = 0;
    КолвоСтрок  = RS.RecordCount;
    НачСтрока = 0;
      КонСтрока = 0;
   
    Пока RS.EOF() = 0 Цикл

      НомерСтроки = НомерСтроки + 1;

      #Если Клиент Тогда
      Состояние("Чтение файла: " + Формат(НомерСтроки) + " из " + Формат(КолвоСтрок));
      ОбработкаПрерыванияПользователя();
      #КонецЕсли

      Если НомерСтроки < НачСтрока Тогда
         RS.MoveNext();
         Продолжить;
      КонецЕсли;

      Если КонСтрока > 0 И НомерСтроки > КонСтрока Тогда
         Прервать;
      КонецЕсли;

      НоваяСтрока = Таблица.Добавить();

      Если СтруктураКолонок = Неопределено Тогда

         Для Счетчик = 1 По RS.Fields.Count Цикл

            Поле = RS.Fields.Item(Счетчик - 1);
            НоваяСтрока["К" + Счетчик] = Поле.Value;

         КонецЦикла;

      Иначе

         Для каждого КлючИЗначение Из СтруктураКолонок Цикл

            Поле = RS.Fields.Item(КлючИЗначение.Значение - 1);
            НоваяСтрока[КлючИЗначение.Ключ] = Поле.Value;

         КонецЦикла;

      КонецЕсли;

      // Обработка других полей
      RS.MoveNext();

    КонецЦикла;

    // Завершение работы

    RS.Close();
    Об_Конект.Close();

    Возврат Таблица;

КонецФункции   

когда данную функй делаю на айловом варианте все работает. а когда на клиент серверном , то он
вот на этом месте



   Попытка
      Об_Конект.Open(СтрокаПодключения);
   Исключение
      Сообщить ("Невозможно подключится к Microsoft Excel" + ОписаниеОшибки());
      Возврат Неопределено;
   КонецПопытки;

уже застревает, идет в исключение, может кто делал,

Dethmontt

На сервере либо нет драйвера Microsoft.ACE.OLEDB.12.0, либо у пользователя под кем запущена служба нет прав на создание соединения
Добавлено: 10 окт 2013, 19:09


Перенеси подключение к драйверу на клиент
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Начинающий 1с

сделал на клиенте, все равно не открвает в попытке
Добавлено: 11 окт 2013, 14:38


сделал на клиенте, но теперь не могу получить и заполнить ТЗ, потому что он доступен только на сервере, что делать подскажите пожл)

Dethmontt

Цитата: Начинающий 1с от 11 окт 2013, 08:54сделал на клиенте, но теперь не могу получить и заполнить ТЗ, потому что он доступен только на сервере, что делать подскажите пожл)
Не понос, так золотуха....

Ну так теперь передавай управление на сервер и там заполняй свою ТЗ и делай свои махинации...
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск