8.х ADODB

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Dmitrij, 12 фев 2010.

  1. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Помогите разобраться adodb, начал изучать, у меня есть к примеру накладная ТОРГ 12 excel как мне жестко в коде прописать что с этой колонки с этой строки (количество) я беру данные и засуну в док ПТУ. У меня проблема я не знаю как вытащить данные с помощью adodb. Подскажите кто чем может
  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    А зачем через adodb? Проще через OLE... http://www.1cdb.ru/Articles/detail.php?ID=1461
    Или воспользоваться ВК http://www.infostart.ru/public/18726/
  3. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
  4. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    А гуглом пользоваться не пробовали? http://infostart.ru/public/64883/
  5. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Пробовал, я весь infostart излазил. Вы бы лучше конкретно на мой вопрос ответили, а не ссылки скидовали
  6. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    А вопроса то я и не увидел, ни кода, ни ошибок, в чем проблема так и не понятно, я Вам и даю ссылки на общее описание механизма...
  7. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Это именно то что Вам нужно :unsure:
    Внимательно поюзайте.
    Включите пожалуйста голову, за Вас никто работу делать не будет, Вам показывают направление действий.
    Удачи!
  8. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Я ему уже эту ссылку давал :)
  9. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26

    Я и не прошу делать за меня работу, я прошу подсказать один момент только и всего. А в этих примерах идет настройка самим пользователем, он сам указывает какие колонки грузить. А я хочу жестко указать какие колонки грузить.
  10. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Если Вы не можете изменить алгоритм, который ориентируется на "выбор" пользователя в фиксированные значения... Это говорит о том, что Вы либо даже не пытались что-либо сделать, либо неправильно выбрали профессию, раз такие простые вещи у Вас вызывают трудности. Обратную конвертацию сделать намного сложнее.

    А если чего-то делали и не получается, то, как я уже писал код в студию, какие выдает ошибки и т.д.

    ЗЫ Но что там может не получиться... сиди да делай.
  11. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Ошибок у меня нет данные я вывожу все работает я не могу понять как мне допустим достать данные из строки 10 в колонке 5 как мне это в коде прописать

    Код:
    //Создание объекта для установки связи с источником данных
    Connection = Новый COMОбъект("ADODB.Connection");
    
    //сформируем строку подключения
    //Если необходимо в дальнейшем оперировать цифровыми значениями колонок,то ставим признак HDR = NO
    //если необходимо производить загрузку с учетом псевдонимов в 1й строке,то ставим HDR = YES
    ИмяФайлаЗагрузки="C:\obmen\123.xls";
    СтрокаПодключения = "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;
    
    //получим листы документа,
    //для обработки колонок листа можно обратится к коллекции Лист.Columns,которую тоже можно обойти посредством цикла Для каждого
    счЛиста=1;
    Для каждого Лист ИЗ axCatalog.Tables Цикл
    
    //Если счЛиста = ЭлементыФормы.НомерЛиста.Значение Тогда
    
    //получим имя т аблицы,затем будем использовать в запросе
    //ИмяТаблицы = Сред(Строка(Лист.Name),2,СтрДлина(Строка( >Лист.Name))-1);
    ИмяТаблицы = Лист.Name; 
    
    Прервать;
    
    //КонецЕсли;
    
    счЛиста = счЛиста+1;
    
    КонецЦикла;
    
    //отсортируем таблицу колонок,которые необходимо загрузить
    //чтобы в дальнейшем при обработке RecordSet могли не беспокоится о последовательности обработки
    ТаблицаИспользуемыхКолонок= Новый ТаблицаЗначений;
    ТаблицаЗагрузки= Новый ТаблицаЗначений;
    
    //ТаблицаИспользуемыхКолонок.Сортировать("НомерКолонки Возр");
    
    //соберем часть запроса,а именно имена используемых колонок
    //по умолчанию имя колонки выглядит следющим образом F1,F2 и т.д
    
    ТекстЗапросаКолонки = "";
    СтрокаКолонки = "";
    
    //Для каждого СтрокаТаблицы ИЗ ТаблицаИспользуемыхКолонок Цикл
    
    ТекстЗапросаКолонки = ТекстЗапросаКолонки + ?(ТекстЗапросаКолонки="","F2",",F2");
    
    //добавим колонку в таблицу загрузки
    ТаблицаЗагрузки.Колонки.Добавить("F2");//соотв. колонки идут в порядке возрастания,т.к мы отсортировали таблицу ранее
    
    //соберем строку используемых колонок для записи в регистр ЖурналОбновленийСерийныхНомеров,в конце загрузки
    СтрокаКолонки = СтрокаКолонки + ?(СтрокаКолонки="","F2",","+"F2");
    
    //КонецЦикла;
    
    //Создание объекта набора записей
    RecordSet = Новый COMОбъект("ADODB.RecordSet");
    
    //Указание активного соединения
    Command.ActiveConnection = Connection;
    
    //получим количество строк в документе
    Command.CommandText = "SELECT COUNT(*)FROM ["+ИмяТаблицы+"]";
    
    //определение типа команды
    Command.CommandType = 1;
    
    //Выполнение и получение набора данных
    RecordSet = Command.Execute();
    
    //первая запись это количество
    КоличествоСтрок = RecordSet.Fields(0).Value;
    
    //опредлеление текста команды
    Command.CommandText = "SELECT "+ТекстЗапросаКолонки+" FROM ["+ИмяТаблицы+"]";
    
    //определение типа команды
    Command.CommandType = 1;
    
    //Выполнение и получение набора данных
    Попытка         
    RecordSet = Command.Execute();
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    RecordSet.MoveNext();//т.к первая строка это заголовки таблиц,не будем ее учитывать
    
    Пока RecordSet.EOF() = 0 Цикл
    
    СтрокаТабличнойЧасти = ТаблицаЗагрузки.Добавить();
    
    сч = 0;
    Для каждого Колонка ИЗ ТаблицаЗагрузки.Колонки Цикл
    
    //СтрокаТабличнойЧасти[Колонка.Имя] = СокрЛП(Строка(RecordSet.Fields(сч).Value));
    Сообщить(СокрЛП(Строка(RecordSet.Fields(сч).Value)));
    сч=сч+1;
    
    КонецЦикла;
    
    RecordSet.MoveNext();
    
    КонецЦикла;
    
    RecordSet.Close();
    Connection.Close();
    
    
    
  12. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Код:
     	Connection = Новый COMОбъект("ADODB.Connection");
    ИмяФайлаЗагрузки="D:\test.xls";
    СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = "+ИмяФайлаЗагрузки;
    СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 8.0"+";HDR=NO;IMEX=1"";";
    Попытка
    Connection.Open(СтрокаПодключения);
    Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    Command = Новый COMОбъект("ADODB.Command");
    Command.ActiveConnection = Connection;
    axCatalog = Новый COMОбъект("ADOX.Catalog");
    axCatalog.ActiveConnection = Connection;
    
    ИмяТаблицы = axCatalog.Tables.Item(0).Name;
    
    Command.CommandText = "SELECT F5 FROM ["+ИмяТаблицы+"]";
    Command.CommandType = 1;
    Попытка         
    RecordSet = Command.Execute();
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    Для К = 1 по 9 Цикл
    RecordSet.MoveNext();
    КонецЦикла;
    
    

Поделиться этой страницей