Есть парам. запрос:
_RSU=создатьОбъект("ODBCRecordset");
_RSU.SetTextParam("Приход",Перечисление.Режимы.Приход);
_RSU.SetTextParam("Период",_RSU.MD.GetBegOfPeriod());
Если _RSU.Prepare(ТекстЗапросаСводныйОстаток)=0 Тогда
Предупреждение("Не подготовился запрос ТекстЗапросаСводныйОстаток!"+РазделительСтрок+_RSU.GetLastError());
Возврат;
КонецЕсли;
_RSU.AddParam(1,14,9,0);
_RSU.AddParam(1,14,9,0);
_RSU.AddParam(1,14,9,0);
...
_RSU.SetParam(1,ТД.Фирма);
_RSU.SetParam(2,ТД.Склад);
_RSU.SetParam(3,ТД.Товар);
Рез=Рез+Мин(_RSU.ExecuteScalar(),ТД.Количество);
ТекстЗапросаСводныйОстаток="
|set nocount on
|declare @Фирма char(9)
|declare @Склад char(9)
|declare @Товар char(9)
|set @Фирма = ?
|set @Склад = ?
|set @Товар = ?
|select sum($p.Количество)
|from $РегистрИтоги.Партии p(nolock)
|where
| p.period = :Период~~ and $p.Режим = :Приход and $p.Фирма = @Фирма and $p.Склад = @Склад and $p.Товар = @Товар";
Пытаюсь запихнуть запрос в польз. функцию:
TextOfFunction="create function dbo.fn_svost
|(
|@perio datetime,
|@prihod char(9),
|@firm char(9),
|@sklad char(9),
|@tovar char(9)
|)
|returns decimal(17,3)
|as
|begin
|declare @Aol53 decimal(17,3)
|set @Aol53 =
| (
| select
| sum($p.Количество)
| from $РегистрИтоги.Партии p(nolock)
| where
| p.period = @perio and
| $p.Режим = @prihod and
| $p.Фирма = @firm and
| $p.Склад = @sklad and
| $p.Товар = @tovar
| )
|return (@Aol53)
|end";
и вызвать:
ТекстЗапросаСводныйОстаток="
|set nocount on
|declare @Период datetime
|declare @Приход char(9)
|declare @Фирма char(9)
|declare @Склад char(9)
|declare @Товар char(9)
|set @Период = ?
|set @Приход = ?
|set @Фирма = ?
|set @Склад = ?
|set @Товар = ?
|select dbo.fn_svost(@Период ,@Приход ,@Фирма ,@Склад ,@Товар )";
_RSU.SetParam(1,_RSU.MD.GetBegOfPeriod());
_RSU.SetParam(2,Перечисление.Режимы.Приход);
_RSU.SetParam(3,ТД.Фирма);
_RSU.SetParam(4,ТД.Склад);
_RSU.SetParam(5,ТД.Товар);
Рез=Рез+Мин(_RSU.ExecuteScalar(),ТД.Количество);
Не работает!
Моя интуиция молчит.
Где я не прав?