Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Запрос к базе oracle через citrix пустой. (число прочтений - 7106 )
DmitryCh
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 23. Июля 2007
Запрос к базе oracle через citrix пустой.
23. Июля 2007 :: 11:41
Печать  
Используется компонента версии 2.5.0.1. База 1С грузится через Цитрикс. В цикле следуют запросы к оракловой базе. Через какое-то время запросы возвращаются пустыми. Но если их запустить отдельно ,то результаты есть. Вставление пауз (до 30 секунд) между запросами - не помогает.
  
Наверх
 
IP записан
 
DmitryCh
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 23. Июля 2007
Re: Запрос к базе oracle через citrix пустой.
Ответ #1 - 23. Июля 2007 :: 12:56
Печать  
Соединение = СоздатьОбъект("ODBCDatabase");
Если Соединение.Соединение(СокрЛП(Константа.СтрокаСоединения)) = 0   Тогда
    Возврат;                                                
КонецЕсли;
   
СпрФирмы.ВыбратьЭлементы();
Пока СпрФирмы.ПолучитьЭлемент() = 1 Цикл
    КодЮрЛица = СпрФирмы.КодЮрЛица;
    НД = СоздатьОбъект("ODBCRecordSet");   
    НД.УстБД(Соединение);
    ТекстЗапроса =
    "select ID, OBJID, SOBID, STEXT as NAME, CTIME
    |  from t_hrmd_a_1cpers_o_input
    | where persa = '"+КодЮрЛица+"'
    |   and processed is null
    | and objid in (select distinct B.ObjID
    |                   from t_hrmd_a_1cpers_o_dict A,
    |                        t_hrmd_a_1cpers_o_dict B
    |                  where B.ObjID = A.SOBID and B.persa = '"+КодЮрЛица+"')
    | order by objid, CTIME
    |";
    НД.Открыть(ТекстЗапроса);
    ВрТЗ = СоздатьОбъект("ТаблицаЗначений");
    НД.ПолучитьРезультатыВ_ТЗ(ВрТЗ,1);
    НД.Закрыть();
КонецЦикла;
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Запрос к базе oracle через citrix пустой.
Ответ #2 - 23. Июля 2007 :: 13:11
Печать  
а так?

Код
Выбрать все
Соединение = СоздатьОбъект("ODBCDatabase");
Если Соединение.Соединение(СокрЛП(Константа.СтрокаСоединения)) = 0   Тогда
    Возврат;
КонецЕсли;

НД = СоздатьОбъект("ODBCRecordSet");
НД.УстБД(Соединение);

СпрФирмы.ВыбратьЭлементы();
Пока СпрФирмы.ПолучитьЭлемент() = 1 Цикл
    КодЮрЛица = СпрФирмы.КодЮрЛица;
    ВрТЗ =  НД.ВыполнитьИнструкцию(
    "select ID, OBJID, SOBID, STEXT as NAME, CTIME
    |  from t_hrmd_a_1cpers_o_input
    | where persa = '"+КодЮрЛица+"'
    |   and processed is null
    | and objid in (select distinct B.ObjID
    |			 from t_hrmd_a_1cpers_o_dict A,
    |				t_hrmd_a_1cpers_o_dict B
    |			where B.ObjID = A.SOBID and B.persa = '"+КодЮрЛица+"')
    | order by objid, CTIME
    |");
КонецЦикла; 

  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос к базе oracle через citrix пустой.
Ответ #3 - 23. Июля 2007 :: 13:32
Печать  
ПолучитьРезультатыВ_ТЗ / GetResultsInVT
Синтаксис: ПолучитьРезультатыВ_ТЗ(Таблица, Очищать)
...
метод является устаревшим, вместо него рекомендуется использовать ВыполнитьИнструкцию / ExecuteStatement (цы) Дока

Интересно...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
DmitryCh
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 23. Июля 2007
Re: Запрос к базе oracle через citrix пустой.
Ответ #4 - 25. Июля 2007 :: 06:32
Печать  
Не помогло ни разу. Может что-то в Оракле настроить надо? Краем уха слышал что-то про ограничение количества курсоров.
  
Наверх
 
IP записан
 
DmitryCh
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 23. Июля 2007
Re: Запрос к базе oracle через citrix пустой.
Ответ #5 - 30. Июля 2007 :: 04:34
Печать  
Ну кто-нибудь! Тут мне подсказали что типа у оракла "курсоры кончаются"
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Запрос к базе oracle через citrix пустой.
Ответ #6 - 30. Июля 2007 :: 05:26
Печать  
Ну вот неверю я, что просто так результат пустой и все, не бывает так.
Если это проблемы работы с драйвером (проблемы 1с++), должна быть какая-то ошибка.
Если это проблемы работы с сервером (проблемы драйвера), тоже должна быть какая-то ошибка.
Если это проблемы логики высокого уровня (курсоры кончаются), тоже должна быть какая-то ошибка (ее всяко должен вернуть сервер).

Я работал с ораклом через ODBC, работал и через майкросовтовский драйвер и через оракловский, все было без проблем, однако в MSDN, по обоим драйверам, статей, фиксов, описаний ошибок - не просто много, а я бы сказал дох..ща!
Если никаких ошибок не возвращается, и только результат запроса пустой, ну это наводит только на определенные мысли: в запросе чета не так как кажется программисту, или в данных чета не так как кажется программисту, или внутреняя ошибка драйвера (ну вообще врядли при таком результате).
  
Наверх
ICQ  
IP записан
 
DmitryCh
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 23. Июля 2007
Re: Запрос к базе oracle через citrix пустой.
Ответ #7 - 30. Июля 2007 :: 06:16
Печать  
DmitrO писал(а) 30. Июля 2007 :: 05:26:
Ну вот неверю я, что просто так результат пустой и все, не бывает так.


Значит бывает. Я смотрел в отладчике. Проходит запрос, никаких ошибок. А таблица значений - пустая. Тот же самый запрос копирую в PL/SQL Developer  - результаты есть.
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к базе oracle через citrix пустой.
Ответ #8 - 30. Июля 2007 :: 06:24
Печать  
DmitrO, есть такое и в 2.0.3.0 и на MS SQL в какой-то момент перестает выгружаться в таблицу значений результат запроса уже успешно отлаженного и работающего.
Думаю проблема возникае именно в момент выгрузки результата в таблицу значений, а не получения результатов с сервера. По этому и нет ошибок.
  
Наверх
IP записан
 
DmitryCh
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 23. Июля 2007
Re: Запрос к базе oracle через citrix пустой.
Ответ #9 - 30. Июля 2007 :: 06:46
Печать  
Я как-бы человек неопытный в 1С++ не подскажешь как это локализовать?
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Запрос к базе oracle через citrix пустой.
Ответ #10 - 30. Июля 2007 :: 07:09
Печать  
trdm писал(а) 30. Июля 2007 :: 06:24:
DmitrO, есть такое и в 2.0.3.0 и на MS SQL в какой-то момент перестает выгружаться в таблицу значений результат запроса уже успешно отлаженного и работающего.

В первый раз слышу об этом. Если проблема действительно есть, надо локализовать. Готов помочь чем могу.
Цитата:
Думаю проблема возникае именно в момент выгрузки результата в таблицу значений, а не получения результатов с сервера. По этому и нет ошибок.

Результат запроса получается с сервера непосредственно в ТЗ, так что я не понял твоего предположения.
  
Наверх
ICQ  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к базе oracle через citrix пустой.
Ответ #11 - 30. Июля 2007 :: 08:10
Печать  
DmitrO писал(а) 30. Июля 2007 :: 07:09:
Результат запроса получается с сервера непосредственно в ТЗ, так что я не понял твоего предположения.

я не шучу, может мое предположение не соотв. действительности, но ситуевина наблюдается..
помучай 1CQA частыми выполнениями одного и того же запроса, получишь этот результат.
  
Наверх
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Запрос к базе oracle через citrix пустой.
Ответ #12 - 30. Июля 2007 :: 09:12
Печать  
trdm писал(а) 30. Июля 2007 :: 08:10:
DmitrO писал(а) 30. Июля 2007 :: 07:09:
Результат запроса получается с сервера непосредственно в ТЗ, так что я не понял твоего предположения.

я не шучу, может мое предположение не соотв. действительности, но ситуевина наблюдается..
помучай 1CQA частыми выполнениями одного и того же запроса, получишь этот результат.

Не могу повторить этот эффект.

Зато могу предупрепредить о давно известном глюке, очень хорошо тестирующемся на 1CQA.
Алгоритм такой:
1. Открываем 1CQA.
2. Пишем такой запрос:
Код
Выбрать все
select top 10
*
from _1sjourn 


3. Выполняем, видим результат в 10 строк.
4. Ставим фокус в ТЗ результата, делаем текущей строкой любую, кроме первой или второй.
5. Правим запрос на такой:
Код
Выбрать все
select top 2
*
from _1sjourn 


6. Выполняем, в ТЗ результата видим колонки результата; НО строк с данными нет(!).
7. Ставим фокус в ТЗ результата, пытаемся поползать по ней в надежде отыскать стоки резултьтата, Up, Down, Left, Right, PageUp, PageDown - ничего не дают - строк не видно.
8. Жмем Home или End и вот они, отобразились!
Имхо, глюки контрола отображающего ТЗ.

Может ты это имел в виду?
  
Наверх
ICQ  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос к базе oracle через citrix пустой.
Ответ #13 - 30. Июля 2007 :: 09:21
Печать  
Похоже на то. Последовательность действий не смогу привести,
но "колонки есть - строк нет" совпадает.
Не исследовал этот глюк подробнее, сори.
  
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Запрос к базе oracle через citrix пустой.
Ответ #14 - 30. Июля 2007 :: 09:25
Печать  
DmitrO писал(а) 30. Июля 2007 :: 09:12:
Имхо, глюки контрола отображающего ТЗ.

Не стреляйте в музыканта, он играет как умеет Улыбка
Есть такое дело в ТЗ, бывало ловилось и приходилось явно сбрасывать контрол методом ТекущаяСтрока().
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать