Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ODBCRecordset в глобальном модуле и параллельный доступ? (число прочтений - 1881 )
Kateryne
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Зарегистрирован: 30. Марта 2010
Пол: Женский
ODBCRecordset в глобальном модуле и параллельный доступ?
05. Марта 2011 :: 01:58
Печать  
Здравствуйте!
Подскажите пожалуйста, в FAQ есть рекомендация создавать ODBCRecordset в глобальном модуле 1 раз. Я так понимаю, это потому что соединение с БД - дорого стоит.

Но я немного не понимаю, что будет, если обратиться к этой переменной одновременно в рамках приложения пользователя? Например, в одном окне интерфейса пользователь нажал сформировать отчет, а в другом - по таймеру запустилась обработка?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: ODBCRecordset в глобальном модуле и параллельный доступ?
Ответ #1 - 05. Марта 2011 :: 03:28
Печать  
1С - штука однопоточная - там все выполняется последовательно.
Если юзер нажал кнопку - таймер не отработает, пока функция, вызванная кнопкой, не передаст управление основному окну 1С.
т.е. одновременного выполнения не будет, однако сразу после выполнения может возникнуть конфликт. тут уж надо просто иметь голову и самому принимать решение...
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: ODBCRecordset в глобальном модуле и параллельный доступ?
Ответ #2 - 05. Марта 2011 :: 10:16
Печать  
если честно, я не понимаю, почему дорого стоит ? по времени строка
rs=создатьобъект("odbcrecordset");
совсем немного.
если внешняя база, то приходится кэшировать.
м. кто объяснит, зачем создавать в гм ?
  
Наверх
ICQ  
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: ODBCRecordset в глобальном модуле и параллельный доступ?
Ответ #3 - 05. Марта 2011 :: 10:17
Печать  
или речь идет об oledb?
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ODBCRecordset в глобальном модуле и параллельный доступ?
Ответ #4 - 05. Марта 2011 :: 11:16
Печать  
(0) RecordSet  это набор записей
и если Вы одновременно( неважно как добиться этой одновременности) выполните заполнение конкретного набора записей из двух разных мест , то кто-то кого то перезатрет и результат у другого процесса будет непредсказуемый.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: ODBCRecordset в глобальном модуле и параллельный доступ?
Ответ #5 - 07. Марта 2011 :: 06:35
Печать  
Может вы путаете ODBCRecordset и ODBCDataBase ?
Так и то ODBCDataBase имеет смысл создавать отдельно только при подключении к другим базам, по дефолту ODBCRecordset работает сразу в "родном" соединении 1С, которое уже есть.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: ODBCRecordset в глобальном модуле и параллельный доступ?
Ответ #6 - 07. Марта 2011 :: 06:39
Печать  
Z1 писал(а) 05. Марта 2011 :: 11:16:
(0) RecordSet  это набор записей
и если Вы одновременно( неважно как добиться этой одновременности) выполните заполнение конкретного набора записей из двух разных мест , то кто-то кого то перезатрет и результат у другого процесса будет непредсказуемый.

Неверно. Получение данных из ODBCRecordset идет через соединение (ODBCDataBase). ODBC так устроено, что через одно соединение можно одновременно получать данные только для одного запроса, если попытаться выполнить запрос, когда еще недополучены данные другого запроса, возникнет ошибка - "Подключение занято для получения результатов другого запроса". Именно поэтому в 1С++ и появился метод - ВыполнитьИнструкцию, который выполняет запрос и сразу все перекачивает в таблицу значений.
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: ODBCRecordset в глобальном модуле и параллельный доступ?
Ответ #7 - 07. Марта 2011 :: 07:38
Печать  
ol писал(а) 05. Марта 2011 :: 10:16:
если честно, я не понимаю, почему дорого стоит ?


наверно имелось ввиду стоимость лицензии на одно подключение  Подмигивание
  
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать