Имя: Пароль:
1C
1С v8
из access в 1C или как подсоединить .mdb
,
0 Hикита
 
28.08.14
07:49
Подскажите пожалуйста кто-нибудь подсоединял через внешние источники Аксесовскую базу ? как это сделать ? Таблицу xls получилось прочитать в 1С, а хотелось бы читать .mdb
пробовал такой строкой соединения
СтрокаСоединения ="Driver={Microsoft Access Driver (*.mdb)};Dbq="+Файл+";Uid=Admin;Pwd=;";
и такой
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Файл + ";""";
1 skunk
 
28.08.14
07:51
2 Wobland
 
28.08.14
07:54
Процедура ЗагрузитьAccess()
    Попытка
        Access=Новый COMОбъект("Access.Application");
        wsp=Access.DBEngine.Workspaces(0);
        БД=wsp.OpenDatabase(ФайлAccess);
    Исключение
        Сообщить("Ошибка загрузки Access");
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Процедура ЗакрытьAccess()
    Попытка
        БД.Close();
        БД=Неопределено;
        Access.Quit();
        Access=Неопределено;
    Исключение
    КонецПопытки;
КонецПроцедуры
3 Hикита
 
28.08.14
08:01
Делаю так
[code]&НаСервере
Процедура ОбновитьНаСервере()
    //Файл = "C:\CarrierTable.mdb" ;
    ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
    ПараметрыСоединения.СтрокаСоединения ="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\CarrierTable.mdb";
   // Persist Security Info=False;
    //"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Файл + ";""";     Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\CarrierTable.xls; DriverID=790";
//Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
//Persist Security Info=False;
    ВнешниеИсточникиДанных.Excel.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
    ВнешниеИсточникиДанных.Excel.УстановитьСоединение();
                 //"Driver={Microsoft Access Driver (*.mdb)};Dbq="+Файл+";Uid=Admin;Pwd=;";    
    Запрос = Новый Запрос();
    
    Запрос.Текст = "ВЫБРАТЬ
                    |    Данные.CarrierId              КАК CarrierId,
                    |    Данные.ComponentName          КАК ComponentName,
                    |    Данные.BatchId                КАК BatchId,
                    |    Данные.MagazineName           КАК MagazineName ,
                    |    Данные.Feeder                 КАК Feeder,
                    |    Данные.TrayPosition           КАК TrayPosition,
                    |    Данные.CarrierType            КАК CarrierType,
                    |    Данные.CarrierSubtype         КАК CarrierSubtype,
                    |    Данные.Angle                  КАК Angle,                                                   
                    |    Данные.Quantity               КАК Quantity,
                    |    Данные.Step                   КАК Step,
                    |    Данные.Amplitude              КАК Amplitude,
                    |    Данные.Duration               КАК Duration,
                    |    Данные.Frequency              КАК Frequency,
                    |    Данные.StepLengthTrim         КАК StepLengthTrim,
                    |    Данные.XOffset                КАК XOffset,
                    |    Данные.ServoAdjustment        КАК ServoAdjustment,
                    |    Данные.Alarm                  КАК Alarm,
                    |    Данные.AutoRefill             КАК AutoRefill,
                    |    Данные.HydraReachable         КАК HydraReachable,
                    |    Данные.Location               КАК Location,
                    |    Данные.Owner                  КАК Owner,
                    |    Данные.YAcc                   КАК YAcc,
                    |    Данные.ZAcc                   КАК ZAcc ,
                    |    Данные.QuantityAtNew          КАК QuantityAtNew,
                    |    Данные.HasBeenLoaded          КАК HasBeenLoaded ,
                    |    Данные.SupplierPartNumber     КАК SupplierPartNumber,
                    |    Данные.TimeAtFirstLoad        КАК TimeAtFirstLoad,
                    |    Данные.MaxTotalTime           КАК MaxTotalTime,
                    |    Данные.TimeAtWarning          КАК TimeAtWarning,
                    |    Данные.PreviousFeeder         КАК PreviousFeeder,
                    |    Данные.LastChanged            КАК LastChanged,
                    |    Данные.Created                КАК Created,
                    |    Данные.Test                   КАК Test,
                    |    Данные.Aux_2                  КАК Aux_2,
                    |    Данные.Country                КАК Country,
                    |    Данные.Operator               КАК Operator,
                    |    Данные.Aux_6                  КАК Aux_6,
                    |    Данные.Aux_7                  КАК Aux_7,
                    |    Данные.Aux_8                  КАК Aux_8,
                    |    Данные.Aux_9                  КАК Aux_9
                    |    ИЗ
                    |    ВнешнийИсточникДанных.Excel.Таблица.Данные КАК Данные";

                   ТЗ = Запрос.Выполнить().Выгрузить();

КонецПроцедуры
[/code]
4 Hикита
 
28.08.14
08:05
(1) Чего то не выходит :(
5 vde69
 
28.08.14
08:13
http://infostart.ru/public/57426/

//
// Функция получает таблицу из базы аксесса
//
Функция ПолучитьТаблицуАкцесса (Подключение, ИмяТаблици)
    Результат = СоздатьОбъект("ТаблицаЗначений");
    Результат.Очистить();

    Команда = СоздатьОбъект("ADODB.Command");
    Команда.ActiveConnection=Подключение;
    ТекстСелект = "SELECT * FROM " +  ИмяТаблици;
    НаборЗаписей = СоздатьОбъект("ADODB.RecordSet");
    Команда.CommandText=ТекстСелект;
    Попытка
        НаборЗаписей=Команда.Execute();
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат -1;
    КонецПопытки;
    
    // надо создать колонки
    Для е = 0 по (НаборЗаписей.Fields.Count - 1) Цикл
        Результат.НоваяКолонка(СокрЛП(НаборЗаписей.Fields(е).Name));
    КонецЦикла;
    
    Попытка
        НаборЗаписей.MoveFirst();
    Исключение //нет записей в рекордсете
        НаборЗаписей.Close();
        Возврат Результат;
    КонецПопытки;
    
    НаборЗаписей.MoveFirst();
    Пока НаборЗаписей.EOF() = 0 Цикл
        // тут имеем строку записи
        //ОбработкаПрерыванияПользователя();  
        Состояние("Идет чтение таблицы <" + ИмяТаблици + "> - " + Обмен_Индикатор(Счетчик, МаксСчетчик));

        Результат.НоваяСтрока();
        Стр = "";
        Для е = 0 по (НаборЗаписей.Fields.Count - 1) Цикл
            Результат.УстановитьЗначение(Результат.КоличествоСтрок(), СокрЛП(НаборЗаписей.Fields(е).Name), НаборЗаписей.Fields(е).Value);
            Если ВыводитьДанныеВСтрокуСообщений=1 Тогда
                Стр = Стр + "; " + НаборЗаписей.Fields(е).Name + "=" + НаборЗаписей.Fields(е).Value;
            КонецЕсли;
        КонецЦикла;
        
        Если ВыводитьДанныеВСтрокуСообщений=1 Тогда
            Сообщить (Стр);
        КонецЕсли;
                
        НаборЗаписей.MoveNext();
    КонецЦикла;
            
    НаборЗаписей.Close();
    
    Возврат Результат;
КонецФункции

// *******************************
// пример вызова
//


//
// подключаемся
//
СтрокаПод="Driver={Microsoft Access Driver (*.mdb)};Dbq=" + ИмяФайла + ";";
Акцесс = СоздатьОбъект("ADODB.CONNECTION");
Попытка
    Акцесс.Open(СтрокаПод);
Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
КонецПопытки;

//
// получем таблицу с именем "Номенклатура"
//
ТабСпр = ПолучитьТаблицуАкцесса (Акцесс, """Номенклатура""");
6 Hикита
 
28.08.14
08:40
А можно ли как-нибудь интерактивно подцепиться через внешние источноики ?
7 shuhard
 
28.08.14
08:44
(0) для разных релизов аксесса разные строки подключения
8 shuhard
 
28.08.14
08:45
(6) ясен пень, udl файлик
9 Hикита
 
28.08.14
09:30
(8) Не понял, можно поподробнее?
10 shuhard
 
28.08.14
09:45
(9) можно, гугл
11 Ненавижу 1С
 
гуру
28.08.14
09:57
(3) >>Data Source=C:\CarrierTable.mdb

а база у тебя тоже на сервере?
12 Balabass
 
28.08.14
10:18
Встряну в тему.
А как юзать компоненту акцесса без установки самого акцесса? Какие варианты есть?
13 Balabass
 
28.08.14
10:22
есть терминал 2008, там только ворд у меня и эксель..возможности ставить акцесс нет.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.