LiteX это Com объект обертка над Sqlite API.
весь объект с описанием и ссылкой на скачивание находятся
здесь
http://roed.republika.pl/litex/automation.htmlСкачиваем расспаковываем, регистрируем
regsvr32 <путь>sqlite3.dll
Если после этого в 1с программа не жалуется на
oDb = СоздатьОбект("LiteX.LiteConnection");
то все установка LiteX завершена и можно использовать его на языке 1с.
LiteX внутри себя содержит весь sqlite и пользоваться бд sqlite можно
используя методы и свойства LiteX.
В тестовой конфигурации показано на примерах как работает объект liteX.
В файле qlite3.dll находиться объект "LiteX.LiteConnection" позволяет манипулировть данными в формате utf-8
точно такой же объект
В файле qlite3u.dll находиться объект "LiteXU.LiteConnection" позволяет манипулировть данными в формате utf-16
Выявленые Недочеты LiteX :
Первый недочет Что непонятно LiteX выдает версию 3,3,5 а сейчас уже 3,4,2 т.е. получается
что надо разбираться и самим перекомпилировать объект чтобы получить самую последнюю версию.
Второй недочет то что свойство RowCount возвращает int64 и 1с его не понимает.
Третий недочет не удалось напрямую через LiteX читать,писать BLOB
Ошибка в том что 1с не может передать как параметр объект ADODB.Stream.
На javascript все работает безукоризнено.
Поэтому в тесте из 1с вызываем javascript ( get.js и put.js ) и тогда
уже читаем пишем BLOB
sqlite и ODBC
документация по odbc
http://www.ch-werner.de/sqliteodbc/html/index.htmlпоследняя версия odbc
http://www.ch-werner.de/sqliteodbc/Просто копируем последний файл и устанавливаем.
В тестовом примере приводиться работа и с odbc sqlite.
При чтении данных из бд odbc не преобразует данные из utf-8 в win1251 ( изменение флажков
в odbc ни к чему не приводит). Наверное odbc не может отличить blob от text или
не знает что нужно пользователю win1251 или unicode
и поэтому при возврате строк не делает никаких преобразований т.е. возвращает
строку в формате utf-8
Пример по update поля blob не получился (может кто скажет в чем ошибка этот пример тоже есть
в тестовой конфе но закоментарен) зато работает insert.
select по blob также не получился но может это и мои ошибки до этого я не пользовался объектом
BinaryData.
Все это есть в тестовых примерах.
Тестовая конфигурация 1с
Архив содержит файл sqlite_1c.zip.
В чистой базе можно через конфигуратор --> Администрирование --> загрузить данные
получает тестовую конфигурацию. В каталоге базы 1с должна быть папка image из этого архива.
Все. Запускаем единственный отчет и проверяем работу sqlite из 1с.
Кнопка создать БД создает БД и именем 1c.db в каталоге базы 1с.
создается база и единственная таблица в ней book
нажимая кнопку повторно текущая версия 1c.db будет будет уничтожена
Далее нужно простучать три кнопки добавить записи. При этом в БД 1c.db
будет добавлено в таблицу book 5 записей.
Первая кнопка использует LiteX, вторая - odbc и последняя запись сделана только для проверки букв Ёё.
Блок извлечь записи : первая кнопка извлекает все записи из таблицы book
вторая кнопка извлекает все записи из таблицы book с ограничением where
третья кнопка извлекает данные используя odbc
Далее показано как можно читать и писать BLOB объекты.
regsvr32 <путь>sqlite3.dll - Ошибка: SQLite3.dll was loaded but the DllRegisterServer entry point was not found... !!!
qlite3.dll , qlite3u.dll , Тестовая конфигурация 1с - что-то не вижу ссылку!?!?