Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Доработать функцию в SQL (число прочтений - 799 )
mastervut
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 1
Зарегистрирован: 17. Марта 2010
Доработать функцию в SQL
18. Июня 2010 :: 09:26
Печать  
Ребята, подсобите, плиз!
Я не силен в 1CPP, говорю сразу..
Если функция в SQL базе, она отбирает цену последней (ORDER BY pr.sp3230 DESC, pr.CODE DESC),не удаленной (pr.ISMARK=0 ) партии из подчиненного ТМЦ справочника товаров.
Вопрос: как в запросе исключить из выборки партии, сформированные определенным документом (не все партии формируются Приходной накладной). Типа, передать в запрос метаданные одного из видов доков, который я хочу исключить (Если Док.Вид()<>"ВнутрПродажа"  Тогда ... , например)
Спасибо заранее откликнувшимся Гуру!

CREATE  FUNCTION dbo.sp_TovPrice(@tovar char(9),@date datetime,@kind smallint) RETURNS numeric(15,6) AS
BEGIN
DECLARE @p numeric(15,6); SET @p=-1;
IF @kind=-1 RETURN 0.11111111111111111111111;
SELECT TOP 1 @p=CASE @kind WHEN 1 THEN pr.sp3232 ELSE pr.sp3233 END
FROM sc3226 AS pr WITH (NOLOCK INDEX=VIP3230)
WHERE pr.PARENTEXT=@tovar AND pr.ISMARK=0 AND pr.sp3230<=CONVERT(CHAR(8),@date,112)+'ZZZZZZ' ORDER BY pr.sp3230 DESC, pr.CODE DESC;
IF @p = -1
SET @p=(SELECT TOP 1 value FROM _1sconst WITH (NOLOCK INDEX=IDD)
WHERE id=CASE @kind WHEN 1 THEN 89 ELSE 2698 END AND objid=@tovar AND date<=@date
ORDER BY date DESC, time DESC, docid DESC, row_id DESC);
IF @p=-1 SET @p=0;
RETURN(@p);
END
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Доработать функцию в SQL
Ответ #1 - 19. Июня 2010 :: 23:39
Печать  
попробуй

Код
Выбрать все
SELECT TOP 1 @p=CASE @kind WHEN 1 THEN pr.sp3232 ELSE pr.sp3233 END

inner join _1sjourn Жур  (NOLOCK) on Жур.iddoc=pr.(поле документа)
или
inner join _1sjourn Жур  (NOLOCK) on Жур.iddoc=substring(pr.(поле документа),5,9) если поле документа в партии - док.неопр.вида


FROM sc3226 AS pr WITH (NOLOCK INDEX=VIP3230)


WHERE pr.PARENTEXT=@tovar AND pr.ISMARK=0 AND pr.sp3230<=CONVERT(CHAR(8),@date,112)+'ZZZZZZ'

AND Жур.iddocdef=(нужное значение)
или
AND Жур.iddocdef in (список нужных значений)


ORDER BY pr.sp3230 DESC, pr.CODE DESC;
 

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