|   |   | 
| 
 | 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) Нашел, Спасибо большое помогло.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |