Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Блокировка таблиц драйвером FoxPro (число прочтений - 14031 )
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Блокировка таблиц драйвером FoxPro
12. Марта 2008 :: 10:11
Печать  
Как известно uzhast исправил дравйвер http://uzhast.fatal.ru/vfpoledb/

Цитата:
В драйвере отключены блокировки таблиц 1С при выполнении прямого запроса. Это решает две проблемы:

  1. Позволяет формировать отчеты с прямыми запросами во время проведения документов по тем регистрам, по которым выполняется прямой запрос. В исходном драйвере возникала ошибка: драйвер не мог заблокировать таблицу 1С из-за проведения документа.
  2. Исключает возможность возникновения ситуации, когда при выполнении прямого запроса драйвер заблокирует таблицу регистра 1С, а другой пользователь в это время захочет провести документ по этому регистру. В этом случае 1С не сможет получить доступ к таблице регистра.


Нисколько не умаляя заслуг uzhast тем не менее должен заметить, что существует более изящное  решение проблемы

Команда
Цитата:
SET EXCLUSIVE ON | OFF
ON
Данный параметр ограничивает полный доступ к данным, размещенным в открываемых таблицах. Эти таблицы становятся недоступными для других пользователей в сети.
OFF
В данном режиме открываются все таблицы для коллективного использования , в локальной сети.


Таким образом после создания соединения достаточно выполнить команды
Код
Выбрать все
ОлеДБКоманда = глОлеДБ.СоздатьКоманду();
ОлеДБКоманда.Выполнить("EXECSCRIPT('SET EXCLUSIVE  OFF')");   



аналогично, если например нужно включить режим для вставки или модернизации данных
Код
Выбрать все
ОлеДБКоманда = глОлеДБ.СоздатьКоманду();
ОлеДБКоманда.Выполнить("EXECSCRIPT('SET EXCLUSIVE  ON')");   



Таким образом можно всегда пользоваться родным и наиболее свежим драйвером
и более тонко подходить к вопросу блокирования таблиц.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #1 - 12. Марта 2008 :: 10:17
Печать  
А если подумать?
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #2 - 12. Марта 2008 :: 10:20
Печать  
Nick писал(а) 12. Марта 2008 :: 10:17:
А если подумать?


Поясни
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #3 - 12. Марта 2008 :: 10:23
Печать  
Изящно, говоришь...  Улыбка Твои скрипты ни одной из указанных мной проблем не решают. Что-то не в ту степь тебя понесло Улыбка
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #4 - 12. Марта 2008 :: 10:24
Печать  
kiruha писал(а) 12. Марта 2008 :: 10:20:
Nick писал(а) 12. Марта 2008 :: 10:17:
А если подумать?


Поясни


То что ты раскопал ни как не влияет на блокировки связанные с записью данных. Это параметр эквивалентен открытию 1с в монопольном режиме. Т.е. таблица полностью блокируется одним пользователем, и пока он её не закроет фиг кто ещё к ней обратится
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #5 - 12. Марта 2008 :: 10:27
Печать  
Uzhast писал(а) 12. Марта 2008 :: 10:23:
Изящно, говоришь...  Улыбка Твои скрипты ни одной из указанных мной проблем не решают. Что-то не в ту степь тебя понесло Улыбка


Были произведены 2 теста.
Проведение документа с (родным драйвер) регистр Резервы , при включенной настройке
произошла ошибка доступа. При OFF данная ошибка исчезла.

Был эмулирован многопользовательский доступ - также никаких задержек не наблюдалось.

Честно говоря именно об этом и написано в родной документации.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #6 - 12. Марта 2008 :: 10:31
Печать  
Nick писал(а) 12. Марта 2008 :: 10:24:
kiruha писал(а) 12. Марта 2008 :: 10:20:
Nick писал(а) 12. Марта 2008 :: 10:17:
А если подумать?


Поясни


То что ты раскопал ни как не влияет на блокировки связанные с записью данных. Это параметр эквивалентен открытию 1с в монопольном режиме. Т.е. таблица полностью блокируется одним пользователем, и пока он её не закроет фиг кто ещё к ней обратится


И что? (не буду придираться к "эквивалентен" -все таки это не так - но будем считать что аналогичен).
Именно это я и писал.

Да возьмите и проверьте.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #7 - 12. Марта 2008 :: 10:34
Печать  
kiruha писал(а) 12. Марта 2008 :: 10:27:
Uzhast писал(а) 12. Марта 2008 :: 10:23:
Изящно, говоришь...  Улыбка Твои скрипты ни одной из указанных мной проблем не решают. Что-то не в ту степь тебя понесло Улыбка


Были произведены 2 теста.
Проведение документа с (родным драйвер) регистр Резервы , при включенной настройке
произошла ошибка доступа. При OFF данная ошибка исчезла.

Был эмулирован многопользовательский доступ - также никаких задержек не наблюдалось.

Честно говоря именно об этом и написано в родной документации.


При включении этой настройки ты вообще таблицу двумя пользователями не откроешь! Естествено у тебя ошибка доступа
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #8 - 12. Марта 2008 :: 10:44
Печать  
vfpoledb SP2: не подтверждается. В модуле проведения после выполнения движений вставляю Предупреждение.
Далее во втором экземпляре 1С выполняю запрос с предварительным SET EXCLUSIVE OFF. Результат:
Цитата:
File is in use by another user.

Таким образом, SET EXCLUSIVE не влияет на успешность чтения драйвером Фокспро заблокированной таблицы.

Может, конечно, драйвер не самый новый.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #9 - 12. Марта 2008 :: 10:46
Печать  
Nick писал(а) 12. Марта 2008 :: 10:34:
kiruha писал(а) 12. Марта 2008 :: 10:27:
Uzhast писал(а) 12. Марта 2008 :: 10:23:
Изящно, говоришь...  Улыбка Твои скрипты ни одной из указанных мной проблем не решают. Что-то не в ту степь тебя понесло Улыбка


Были произведены 2 теста.
Проведение документа с (родным драйвер) регистр Резервы , при включенной настройке
произошла ошибка доступа. При OFF данная ошибка исчезла.

Был эмулирован многопользовательский доступ - также никаких задержек не наблюдалось.

Честно говоря именно об этом и написано в родной документации.


При включении этой настройки ты вообще таблицу двумя пользователями не откроешь! Естествено у тебя ошибка доступа


Да конечно. Только эта настройка действует по умолчанию.
Т.е. ошибка вызывалась когда НИКАКИХ скриптов не выполнялось.
Uzhast поэтому и вырезал блокировки.
А можно не вырезать а вызвать ОлеДБКоманда.Выполнить("EXECSCRIPT('SET EXCLUSIVE  OFF')");

Nick, ты говоришь правильные вещи - но не понял чему они противоречат.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #10 - 12. Марта 2008 :: 10:51
Печать  
Я вообще то думаю что Uzhast боролся с другими блокировками или нет?
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #11 - 12. Марта 2008 :: 10:54
Печать  
ещё можно просто открывать предварительно табличку в разделенном режиме
Use <TableName > in 0 [EXCLUSIVE] [SHARED] [NOUPDATE]
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Блокировка таблиц драйвером FoxPro
Ответ #12 - 12. Марта 2008 :: 11:08
Печать  
Uzhast писал(а) 12. Марта 2008 :: 10:44:
vfpoledb SP2: не подтверждается. В модуле проведения после выполнения движений вставляю Предупреждение.
Далее во втором экземпляре 1С выполняю запрос с предварительным SET EXCLUSIVE OFF. Результат:
Цитата:
File is in use by another user.

Таким образом, SET EXCLUSIVE не влияет на успешность чтения драйвером Фокспро заблокированной таблицы.

Может, конечно, драйвер не самый новый.


драйвер последний http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA...

Провел много тестов. По методике Uzhast в том числе. Все ОК.
Вероятно ты делаешь"SET EXCLUSIVE  OFF" для разных  ОлеДБ - при этом настройка действует
только в рамках ОлеДБ .
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #13 - 12. Марта 2008 :: 11:14
Печать  
Скачал по этой ссылке. Версия 9.0.0.5815. Результат не изменился.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Блокировка таблиц драйвером FoxPro
Ответ #14 - 12. Марта 2008 :: 11:30
Печать  
В общем, так. Хватит вешать людЯм лапшу на уши. Улыбка Запутал ты меня. EXCLUSIVE может быть только в двух положениях ON и OFF. Если БЫ он был в ON изначально, то запросы вообще бы нельзя было бы выполнять к текущей базе - файлы открыты 1С. Значит, этот переключатель УЖЕ в OFF. Поэтому твой скрипт ВООБЩЕ ни на что не влияет.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать