Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Запрос по остаткам (число прочтений - 3865 )
U_zer
Экс-Участник


Re: Запрос по остаткам
Ответ #15 - 29. Сентября 2009 :: 05:35
Печать  
alexdd писал(а) 28. Сентября 2009 :: 14:17:
Цитата:
Вот такой запрос работать не хочет..

ну дык потому что, вот это
Код
Выбрать все
ЗапросОстПоСтр.УложитьСписокОбъектов(..) 


х#рит(простите мой французский) подготовленный запрос. Отсюда и сообщение про неверный индекс параметра.
Нужно создать другой объект ODBCRecordset для того же соединения и для него выполнять УложитьСписокОбъектов. Вроде должно работать Улыбка
зы: можно и одним запросом: сначала сделать тоже, что делает УложитьСписокОбъектов(можно в табличную переменную, например), потом выполнить запрос к регистру


Ну так я так и сделал (про врем таблицу см. рабочий запрос).
Но ведь баг(или фича налицо)?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос по остаткам
Ответ #16 - 29. Сентября 2009 :: 06:20
Печать  
U_zer
Твой код
Код
Выбрать все
Функция ПолучитьОстаток()
	Если табСклад.Выбран() = 1 Тогда
		_Скл = табСклад
	Иначе
		_Скл = загСклад
	КонецЕсли;
	Если ОстГрупп = 1 Тогда
		ЗапросСкл = СоздатьОбъект("OdbcRecordSet");
		ТзСкл = "
		|select
		|Скл.id [Склад $Справочник.Склады]
		|from $Справочник.Склады Скл (nolock)
		|where $Скл.спрСкладВладелец = :СклВлад";
		ЗапросСкл.УстановитьТекстовыйПараметр("СклВлад", _Скл);
		ЗапросСкл.ВыполнитьИнструкцию(ТзСкл, СписСкл);
	КонецЕсли;
	ЗапросОстПоСтр.УстПараметр(1, табТовар);
	ЗапросОстПоСтр.УложитьСписокОбъектов(СписСкл, "#TempSklSC")
 	Рез = ЗапросОстПоСтр.ВыполнитьСкалярный();
 	РезРез = Рез.Резв;
 	глОст = Рез.Ост;
 	возврат Рез.Ост
КонецФункции
 


чему у тебя равно       ОстГрупп
Если не 1 то и получается ерунда список не определен
и таблица неизвесно какая.
Может так надо написать
Цитата:
Функция ПолучитьОстаток()
       СписСкл.УдалитьВсе();
     Если табСклад.Выбран() = 1 Тогда
           _Скл = табСклад
     Иначе
           _Скл = загСклад
     КонецЕсли;
       СписСкл.ДобавитьЗначение(_Скл,"");
     Если ОстГрупп = 1 Тогда
           ЗапросСкл = СоздатьОбъект("OdbcRecordSet");
           ТзСкл = "
           |select
           |Скл.id [Склад $Справочник.Склады]
           |from $Справочник.Склады Скл (nolock)
           |where $Скл.спрСкладВладелец = :СклВлад";
           ЗапросСкл.УстановитьТекстовыйПараметр("СклВлад", _Скл);
           ЗапросСкл.ВыполнитьИнструкцию(ТзСкл, СписСкл);
     КонецЕсли;
     ЗапросОстПоСтр.УстПараметр(1, табТовар);
     ЗапросОстПоСтр.УложитьСписокОбъектов(СписСкл, "#TempSklSC")
     Рез = ЗапросОстПоСтр.ВыполнитьСкалярный();
     РезРез = Рез.Резв;
     глОст = Рез.Ост;
     возврат Рез.Ост
КонецФункции


также  не совсем понятна конструкция $Скл.спрСкладВладелец ???

  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Запрос по остаткам
Ответ #17 - 29. Сентября 2009 :: 07:01
Печать  
Ладно, замнем для ясности. Я уже написал, что получилось через
Create Table.
В коде там все нормально, я просто не все процитировал, суть не в том.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать