Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Ошибка при обновлении 1С++ до версии 3.0.1.23 (число прочтений - 3088 )
vovast
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 17. Июня 2009
Ошибка при обновлении 1С++ до версии 3.0.1.23
16. Декабря 2009 :: 11:44
Печать  
РекордсетПлюс = создатьобъект("odbcrecordset");
РекордсетПлюс.УложитьСписокОбъектов(ТоварРасшиф,"#ВыбГруппа","Номенклатура");

     ТекстЗапроса="
     |SELECT
     |Товар [Товар $Справочник.Номенклатура],
     |Склад [Склад $Справочник.Склады],
     |КоличествоОстаток КоличествоОстатокСумма
     |FROM
     |$РегистрОстатки.ОстаткиТоваров(,
     |,Товар IN (SELECT * FROM #ВыбГруппа),(Товар,Склад)) РегистрОстаткиТоваров
     |ORDER BY Склад                    
     |";    

РекордсетПлюс.Открыть(ТекстЗапроса);

У меня была версия 1срр 1.8.1.5 и этот кусок кода нормально работал. После обновления 1срр до версии 3.0.1.23 в результате его выполнения стала выходить ошибка:
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

Я, конечно, понимаю, что если я вместо "SELECT * FROM #ВыбГруппа"  напишу "SELECT val FROM #ВыбГруппа", все будет работать, но у меня в конфигурации такие конструкции используются не в одном десятке мест.

Можно как-то побороть эту ошибку не переписывая конфигурацию?               

  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка при обновлении 1С++ до версии 3.0.1.23
Ответ #1 - 16. Декабря 2009 :: 11:49
Печать  
vovast писал(а) 16. Декабря 2009 :: 11:44:
Можно как-то побороть эту ошибку не переписывая конфигурацию?

нет
  

1&&2&&3
Наверх
 
IP записан
 
vovast
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 17. Июня 2009
Re: Ошибка при обновлении 1С++ до версии 3.0.1.23
Ответ #2 - 16. Декабря 2009 :: 11:56
Печать  
А почему так?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка при обновлении 1С++ до версии 3.0.1.23
Ответ #3 - 16. Декабря 2009 :: 12:01
Печать  
Что почему?
Почему нульзя побороть без переписывания?
Потому что полей в #ВыбГруппа стало два вместо одного.
« Последняя редакция: 16. Декабря 2009 :: 13:15 - trad »  

1&&2&&3
Наверх
 
IP записан
 
vovast
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 17. Июня 2009
Re: Ошибка при обновлении 1С++ до версии 3.0.1.23
Ответ #4 - 16. Декабря 2009 :: 12:12
Печать  
Понятно.
Хоть бы в документации где про это написали...
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка при обновлении 1С++ до версии 3.0.1.23
Ответ #5 - 16. Декабря 2009 :: 13:13
Печать  
да, там формулировка этого момента как то не очень доходчиво сменилась.

было
Цитата:
Идентификаторы объектов из списка сохраняются во временной таблице. Таблица имеет единственное поле val char(9).

стало
Цитата:
Идентификаторы объектов из списка сохраняются во временной таблице в поле val char(9).
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка при обновлении 1С++ до версии 3.0.1.23
Ответ #6 - 16. Декабря 2009 :: 13:15
Печать  
я, например, всегда следовал правилу: по возможности не применять в промышленных запросах * поэтому и не попался на эти грабли.
  

1&&2&&3
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Ошибка при обновлении 1С++ до версии 3.0.1.23
Ответ #7 - 17. Декабря 2009 :: 04:29
Печать  
trad писал(а) 16. Декабря 2009 :: 13:15:
я, например, всегда следовал правилу: по возможности не применять в промышленных запросах * поэтому и не попался на эти грабли.

+100, вообще как правило не пишу запросы с *. Когда то наткнулся на какую то статейку, где автор описывал почему стоит ограничивать поля выборки. Счас уже не помню формулировки и обоснование, но в голове отложилось правило стараться не пользоваться *.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Ошибка при обновлении 1С++ до версии 3.0.1.23
Ответ #8 - 17. Декабря 2009 :: 06:03
Печать  
* не стоит использовать потому что для обработки *
sql должен залезть в системные таблицы и вытащить оттуда информацию о всех столбцах. А это время и ресурсы сервера.
Также есть еще негласное правило возвращать на клиента только необходимые(как можно меньше) столбцы (выигрыш хотя бы в меньшей загрузки сети ).
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Ошибка при обновлении 1С++ до версии 3.0.1.23
Ответ #9 - 17. Декабря 2009 :: 06:32
Печать  
Z1 писал(а) 17. Декабря 2009 :: 06:03:
* не стоит использовать потому что для обработки *
sql должен залезть в системные таблицы и вытащить оттуда информацию о всех столбцах. А это время и ресурсы сервера.
Также есть еще негласное правило возвращать на клиента только необходимые(как можно меньше) столбцы (выигрыш хотя бы в меньшей загрузки сети ).

Именно так... Подмигивание
  

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