Имя: Пароль:
1C
1С v8
Создание соединения с sqlite
0 mefisto666series
 
10.10.13
20:32
В общем, тема такая: мне необходимо пользоваться sqlite  как внешним источником данных(для бухгалтерии, т.к. там нет дока заказ, и нельзя редактировать конфу, нужно заказы хранить во внешней базе). с sql не работал, но с запросами разберусь, инфы достаточно, а, вот, по инициализации соединения все не понятно. то есть, здесь: http://infostart.ru/public/103371/ есть что-то, и тут: v8: Sqlite и 1с8, но мне мало. я уже и по liteX почитал, но ничего не ясно. вот таким образом пробовал:
1 mefisto666series
 
10.10.13
20:33
ПутьКБазе="File=C:\Users\Михаил\Downloads\sqlite.db;";
    
    
    //V8 = Новый COMОбъект("V8.Application");

    
    V8 = Новый COMОбъект("ADODB.Connection");
    
    
    Попытка
        Открытие = V8.Connect(ПутьКБазе);          
    Исключение
         Сообщить("Невозможно подключится к драйверу SQLite. Возможно файл [" + ФайлБД + "] открыт другим пользователем или программой!");
         Сообщить(ОписаниеОшибки());
        Возврат Ложь;
    КонецПопытки;
но тщетно
2 shuhard
 
10.10.13
20:34
(0)[для бухгалтерии, т.к. там нет дока заказ, и нельзя редактировать конфу, нужно заказы хранить во внешней базе]
не взлетит
3 NcSteel
 
10.10.13
20:35
(2) При пряморукости - взлетит.
4 mefisto666series
 
10.10.13
20:35
такая ошибка вылетает: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (ADODB.Connection): Операция не допускается, если объект закрыт.
пытался sqlite3.dll через regsvr32 зарегать - кидает ошибку
5 mefisto666series
 
10.10.13
20:38
(3) было сделано так до меня и есть база в которой это все собрано. но как там реализовано подключение - известно только тому наркоману, который это делал. логику сбора из таблиц полноценного дока я понял. а вот подключение к базе - вопрос открытый пока что.
6 orefkov
 
10.10.13
23:24
Кури http://www.connectionstrings.com/sqlite/

Там смотри SQLite3 ODBC Driver.

У тебя походу не хватает строки
DRIVER=SQLite3 ODBC Driver;
7 orefkov
 
10.10.13
23:25
Ну и сам SQLite3 ODBC Driver должен быть на компе установлен.
8 mefisto666series
 
11.10.13
14:40
Вот сейчас попробовал вот так:
SQLiteObject = Новый COMОбъект("ADODB.Connection");
SQLiteConnectionString = "DRIVER=SQLite3 ODBC Driver;Database=\Users\Михаил\Downloads\sqlite.db;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;";
        Попытка
        SQLiteObject.Open(SQLiteConnectionString);
    Исключение

и это дело кидает такую ошибку:
{Форма.ОсновноеОкно.Форма(953)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
драйвер я устанавливал, качал здесь: http://www.ch-werner.de/sqliteodbc/
вот это: sqliteodbc_w64.exe

прбовал по-другому:
СтрокаПодключения ="DRIVER=SQLite3 ODBC Driver;Database=\Users\Михаил\Downloads\sqlite.db;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;";
                    
    V8 = Новый COMОбъект("ADODB.Connection");        
    Попытка
       Открытие = V8.Connect(СтрокаПодключения);          
    Исключение
    Сообщить("Невозможно подключится к драйверу SQLite. Возможно файл [" + ФайлБД + "] открыт другим пользователем или программой!");
         Сообщить(ОписаниеОшибки());
       Возврат Ложь;
    КонецПопытки;

этот вариант кидает: {Форма.ОсновноеОкно.Форма(969)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (ADODB.Connection): Операция не допускается, если объект закрыт.
9 orefkov
 
11.10.13
14:48
(8)
Что у тебя за путь к базе прописан?
Может "\\Users\..."
10 mefisto666series
 
11.10.13
15:32
на путь я обратил внимание сразу как запостил сообщение, исправил, но ошибки те же. путь так записан: "C:\Users\Михаил\Downloads\sqlite.db"
11 orefkov
 
11.10.13
15:36
Попробуй для начала через Администрирование/Источники Данных ODBC создать источник данных, будет ли создаваться.
12 Kreont
 
11.10.13
15:40
кирилица еще бывает плохо в путях сказывается, лучше сделай путь проще: D:\Base\sqlite.db
13 alex74
 
11.10.13
16:14
сделай пустой файл с расширением udl и открой его двойным кликом мышки. У тебя откроется окошко для настройки подключения. Когда все настроишь - нажми ОК, окошко закроется а в файле будет прописана строка подключения.
14 mefisto666series
 
14.10.13
15:40
значит так. насчод udl - не понятно. что-то делали, пробовали - неясно что там должно быть. вот последний вариант:
Попытка
    
        СтрокаПодключения = "DSN=SQLite3 Datasource;Database=C:\sqlte.db;StepAPI=0;SyncPragma=NORMAL;NoTXN=0;Timeout=100000;ShortNames=0;LongNames=0;NoCreat=0;NoWCHAR=0;FKSupport=0;JournalMode=;OEMCP=0;LoadExt=;BigInt=0;";
        ADOUtils = Новый("AddIn.ADOUtils");
        Connection = Новый COMОбъект("ADODB.Connection");
        Connection.Open(СтрокаПодключения);

    
    Исключение
        Сообщить(ОписаниеОшибки());
         Возврат Ложь;
    КонецПопытки;


Описание Ошибки: "Тип не определен (AddIn.ADOUtils)"
15 orefkov
 
14.10.13
15:45
GameWithFire.dll надо подключать.
16 sm_vp
 
14.10.13
15:46
(15) каким образом?
17 Kreont
 
14.10.13
15:47
"ADOUtils = Новый("AddIn.ADOUtils");"
зачем вообще здесь?
удали и ошибки не будет :)
18 mefisto666series
 
14.10.13
15:49
(17) ок, я пробовал, только в таком случае:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
19 mefisto666series
 
14.10.13
15:50
(15) странное название))
20 Kreont
 
14.10.13
15:53
(18) вот эту ошибку и лечи, а не создавай новую
21 Kreont
 
14.10.13
15:57
Панель управления -> Администрирование -> Источники данных (ODBC)
на закладке системный DSN есть строка/драйвера sqlite?
22 sm_vp
 
14.10.13
15:58
(20) а в чем может быть причина этой ошибки? драйвера устанавливали
23 sm_vp
 
14.10.13
15:58
(21)есть
24 Kreont
 
14.10.13
16:00
(22) если 100% устанавливали драйвера, значит строка СтрокаПодключения не соответсвуем им.
см.(6)
25 mefisto666series
 
14.10.13
16:06
(24) ну вот как так: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию. тут: (21) указано что SQlite3 odbc driver  есть
26 Kreont
 
14.10.13
16:16
я хз что у тебя не так, запустил у себя для теста такой код без ошибок отработал:
БД_ODBC = Новый ComObject("ADODB.Connection");
ШляхБД = "D:\sqlite\test.db";
БД_ODBC.Open("Driver={SQLite3 ODBC Driver};Database=" + ШляхБД + ";LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;")
27 mefisto666series
 
14.10.13
16:31
может такое быть что дрова хоть и установил, но не регистрировал через regsvr32? у меня винда восьмерка и ругается на исполнение regsvr32 sqlite3.dll
28 Kreont
 
14.10.13
16:33
установщик сам их регистрирует.
сравни строки в (26) и (14) там есть разница все таки
29 sm_vp
 
14.10.13
16:39
(28) все равно такая же ошибка
30 Серго62
 
14.10.13
16:50
Все таки попробуй создать udl-файл и проверить подключение.
1. Создаешь пустой файл с расширением udl
2. Два раза на нем щелкаешь - откроется окно Свойства связи с данными
3. В этом окне выбираешь - Использовать строку подключения и вставляешь вот эту строку: Driver={SQLite3 ODBC Driver};Database=C:\sqlite.db;StepAPI=0;SyncPragma=NORMAL;NoTXN=0;Timeout=;ShortNames=0;LongNames=0;NoCreat=0;NoWCHAR=0;FKSupport=0;JournalMode=;OEMCP=0;LoadExt=;BigInt=0;
4. Вместо C:\sqlite.db напишешь свой путь
5. Жмешь - проверить подключение
31 Kreont
 
14.10.13
16:52
(29) неверю (с)
ну как вариант на винХП/7-ке попробуй уст.драйвер и выполнить код.
а точно из (26) скопировал к себе строку подключения?
32 sm_vp
 
14.10.13
17:01
(31) да он точно также делал
33 mefisto666series
 
14.10.13
17:23
в общем, не могу понять в чем дело, но, о, сенсей, спасибо. такой вариант работает:
Попытка
    
        БД_ODBC = Новый ComObject("ADODB.Connection");        
        БД_ODBC.Open("Driver={SQLite3 ODBC Driver};Database=C:\sqlite.db;StepAPI=0;SyncPragma=NORMAL;NoTXN=0;Timeout=;ShortNames=0;LongNames=0;NoCreat=0;NoWCHAR=0;FKSupport=0;JournalMode=;OEMCP=0;LoadExt=;BigInt=0;")
    
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат ЛожЬ;      
    КонецПопытки;
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший