|
v8sqlite. Ошибка при подключении к базе | ☑ | ||
---|---|---|---|---|
0
zelenprog
07.06.23
✎
14:45
|
Здравствуйте!
Решил попробовать работать с компонентой v8sqlite: v8sqlite - нативная ВК для работы из 1С c базами sqlite Нужно загрузить данные из внешней sqlite-базы. Написал вот такой код: база = Новый("AddIn.v8sqlite.v8sqlite"); база.ОткрытьБазуДанных("C:\Выгрузка_из_77.db"); база.Выполнить("pragma encoding='UTF-16'"); лРезультатЗапроса = база.ВыполнитьЗапрос(" |select * |from Контрагенты", "ТаблицаЗначений", ""); лТЗКонтрагенты = ЗначениеИзСтрокиВнутр(лРезультатЗапроса); Однако, у меня не срабатывает даже первая строка - создание базы. Выдается ошибка - "К сожалению возникла непредвиденная ситуация". Кстати, и с регистрацией компоненты тоже не все просто. Регистрация срабатывает только если 1С запустить под правами Администратора. Возможно все эти проблемы из-за операционки? У меня Win 11 Pro x64. Компоненту v8sqlite также скачал x64-битную. Подскажите, в чем может быть проблема? Как исправить эту ошибку? |
|||
1
zelenprog
08.06.23
✎
10:12
|
Никто не пользуется v8sqlite?
|
|||
2
Salimbek
08.06.23
✎
12:34
|
(0) А компоненту подключил? Первый пункт отсель:
https://github.com/orefkov/v8sqlite#использование |
|||
3
zelenprog
08.06.23
✎
12:58
|
(2) Да, это я читал. Компонента подключена
|
|||
4
Salimbek
08.06.23
✎
13:42
|
Попробовал поиграться с компонентой. База у меня создается. Возможно у вашей 1С-ки нету прав на доступ к корню диска С?
Но у меня другая проблема - не создаются таблицы и ничего не может записать в базу. И вообще - файл нулевой длины генерируется. Сейчас с тестовой базой, созданной в другом ПО попробую поработать. |
|||
5
Salimbek
08.06.23
✎
14:13
|
Продолжаю наблюдение:
Запрос: От1 = база.ВыполнитьЗапрос("create table test(a,b,c);","JSON"); - создает Таблицу в БД а запрос: база.Выполнить("create table test(a,b,c);"); ничего не создает. Странное поведение. При этом дальнейшее "insert into" и через Выполнить, и через ВыполнитьЗапрос - выдают Ошибку, но в качестве описания ошибки - пустая строка. P.S. испытываю на версии компоненты х32 |
|||
6
Salimbek
08.06.23
✎
14:24
|
Хотя наврал в (5), пока заменял команды случайно вместо ВыполнитьЗапрос использовал ВыполнитьВыполнитьЗапрос, что и давало ошибку. Как исправил, так и стало нормально работать.
Вот с чем баловался: https://controlc.com/8225d8b9 |
|||
7
zelenprog
15.06.23
✎
16:35
|
(4)-(6)
Спасибо! Попробую еще раз. |
|||
8
zelenprog
19.06.23
✎
15:28
|
Снова сделал попытку...
Почему то не подключается компонента :( |
|||
9
Salimbek
21.06.23
✎
14:32
|
(8) А разрядность правильная?
|
|||
10
zelenprog
23.06.23
✎
13:49
|
(9) Пробовал разные разрядности подсовывать.
Результат одинаковый. |
|||
11
orefkov
03.07.23
✎
10:11
|
(0)
А если без русских букв назвать базу данных? |
|||
12
orefkov
03.07.23
✎
10:42
|
(0)
А если попробовать база.ОткрытьБазуДанных("file:/C:/Выгрузка_из_77.db?mode=ro"); Возможно нет прав на создание файлов в корне диска, а если база в режиме WAL, то при открытии не режиме "только чтение", sqlite пытается создать рядом с базой два служебных файла. |
|||
13
orefkov
03.07.23
✎
10:56
|
Стоп. Вот это
"Кстати, и с регистрацией компоненты тоже не все просто. Регистрация срабатывает только если 1С запустить под правами Администратора." ВК же по нативной технологии, какая там "регистрация"? |
|||
14
zelenprog
03.07.23
✎
16:01
|
(11),(12)
Дело до открытия базы не доходит. Ошибка на этапе подключения компоненты. (13) Под "регистрацией" я имел ввиду подключение: ПутьКВК1 = "C:\1C_Dlls\v8sqlite.dll"; лВКПодключена1 = ПодключитьВнешнююКомпоненту(ПутьКВК1, "v8sqlite", ТипВнешнейКомпоненты.Native); Всегда возвращает "Ложь". |
|||
15
zelenprog
03.07.23
✎
16:34
|
Несколько раз пересоздавал и переименовывал папку, в которой лежит v8sqlite. Подсовывал dll-ки разной разрядности.
В общем подключение компоненты заработало! Не понял в чем было дело. Скорее всего в названии папки "1С" была русскими буквами, а в коде - латинские буквы. |
|||
16
zelenprog
03.07.23
✎
16:48
|
Всем спасибо!
|
|||
17
zelenprog
03.07.23
✎
16:52
|
А можно ли результат запроса сразу засунуть в ТЗ на форме?
Чтобы не делать преобразования в промежуточную ТЗ? РезультатЗапроса = база.ВыполнитьЗапрос(""..."): ТЗКонтрагенты = ЗначениеИзСтрокиВнутр(РезультатЗапроса); Можно ли сделать что-то типа: ТЗНаФорме.Загрузить(РезультатЗапроса)? |
|||
18
orefkov
03.07.23
✎
17:23
|
(17)
Нет, так не получится, механизм нативных ВК не предусматривает передачу и возврат объектов, только примитивные типы - строки, числа и т.п. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |