Имя: Пароль:
1C
1C 7.7
v7: Кто работал с 1sqlite.dll. В многопользовательском режиме зависает.
, ,
0 Snikers_OLD
 
25.09.13
16:34
Доброго времени. У клиента стоит 7.7. Достаточно большой справочник Номенклатуры. Для быстрого поиска предыдущий разработчик применил библиотеку 1sqlite.dll для прямых запросов, насколько я понял. Пока работа была в однопользовательском режиме все работало хорошо, но потом клиент решил подключить 2 комп. И тут возникла проблема, когда работает одновременно 2 комп., то тот на котором запустили 1с последним фичи с использованием 1sqlite.dll зависают.

С 1sqlite.dll не доводилось работать, не подскажите в чем причина.

1с r27 файловая.
1sqlite.dll (1.0.2.3). Сама длл-ка загружается в "ПриНачалеРаботыСистемы()"
1 viktor_vv
 
25.09.13
17:05
Использую. Не встречал такого. Правда у меня, там где это работает, все в терминале работают.
2 IVT_2009
 
25.09.13
17:30
сама по себе эта субд однопользовательская, точней не дает возможности писать в таблицу в два и более потока. Или нужно колдовать с ее параметрами или вообще невозможно.
3 hogik
 
25.09.13
22:04
Попробуйте использовать режим "NeedTransaction=0".
4 Aleksey
 
25.09.13
22:08
(2) так ворде бы тут не в записи дело, идет стандартный запрос на чтения в памяти к БД
5 Aleksey
 
25.09.13
22:08
(3) эээ, а почему не
запрос.ВыполнитьЗапрос("PRAGMA journal_mode = WAL");
6 hogik
 
25.09.13
23:10
(5)
эээ, а потому не... :-)
Вот диалог.

Aleksey:
"PRAGMA journal_mode = WAL или OFF
Для внешней SQLite базы понятно. А если запрос выполняется к таблицам 1С"

orefkov:
"Тогда фиолетово."
http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/571

Дальше тему не читал. Возможно Вам удалось разубедить Орефкова Александра. ;-)
7 hogik
 
25.09.13
23:41
(5)(0)
Если "подключить 2 комп"(с), то скорость выполнения запроса при использовании разных значений NeedTransaction может измениться в пятнадцать раз.
http://infostart.ru/public/57165/
8 Холст
 
26.09.13
00:19
(0) работа по сети ? конечно кеширование теряется
используй http://www.wirth.ru/load/v7dbnet/1-1-0-2
9 Dolly_EV
 
27.09.13
08:33
(0) если не хочешь вникать и разбираться - сделай из одной машины терминал, и второго пользователя - в терминал.
10 ЧеловекДуши
 
27.09.13
08:43
(0) Может вы запрос написали не корректно...

Дайте взглянуть на код Запроса, где подвисает?
11 Snikers_OLD
 
27.09.13
19:23
(10)    //РазбиваемаяСтрока=СтрЗаменить(РазбиваемаяСтрока,"'","''");
    РазбиваемаяСтрока=СтрЗаменить(СокрЛП(стрПоиска)," ",РазделительСтрок);
    текст="SELECT
    |code Код,
    |Артикул,
    |id [Товар :Справочник.Номенклатура],
    |Поставщик [Поставщик :Справочник.Контрагенты]
    |FROM Номенклатура
    |WHERE isfolder=2 and ismark <> '*'";
    
    ПолеПоиска= СписокПолейПоиска.ПолучитьЗначение(СписокПолейПоиска.ТекущаяСтрока());
    
    Если ПолеПоиска="Наименование" Тогда
        ПолеПоиска="descr";
    ИначеЕсли ПолеПоиска = "ПолноеНаименование" Тогда
        ПолеПоиска = "ПолнНаименование"
    КонецЕсли;
    
    Для Индекс=1 По СтрКоличествоСтрок(РазбиваемаяСтрока) Цикл
        Слово=СтрПолучитьСтроку(РазбиваемаяСтрока,Индекс);
        Если ПустоеЗначение(Слово)=0 Тогда
            текст=текст+"
            |AND "+ПолеПоиска+" LIKE '%"+Слово+"%'";
        
        КонецЕсли;
    КонецЦикла;
12 hogik
 
27.09.13
19:51
(11)
Еще раз. ;-)

http://infostart.ru/public/57165/

NeedTransaction=0
Время выполнения запроса: 2513
NeedTransaction=1
Время выполнения запроса: 161

NeedTransaction
Тип: Число
Чтение/Запись
Описание: 1 - автоматически начинать транзакцию 1С при выполнении запроса в момент первого обращения к таблицам 1С, 0 - не начинать.
При создании объекта SQLiteQuery свойство устанавливается в 0.
В немонопольном режиме работы, при установке свойства в 1, в момент первого обращения к любой таблице 1С при выполнении запроса, если транзакция не начата, будет начата транзакция, и она же будет отменена сразу после выполнения запроса. При этом увеличивается скорость выполнения запроса, однако любая таблица 1С, из которой осуществлено чтение - будет недоступна для записи в других сеансах 1С. В монопольном режиме, независимо от значения свойства, транзакция будет начата, если она еще не открыта.
13 Snikers_OLD
 
05.10.13
10:50
(12) прошу прощения, я туплю конечно, где установить этот NeedTransaction=1?
14 Snikers_OLD
 
05.10.13
10:57
(12),(13) Нашел, Спасибо большое помогло.