Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема получить КонОст по регистру с условием? (число прочтений - 2512 )
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
получить КонОст по регистру с условием?
26. Сентября 2014 :: 02:23
Печать  
"обычный" запрос:
...
СкладРезерв=Регистр.РезервыТМЦ.Склад;
СкладЗаявка=Регистр.РезервыТМЦ.ЗаявкаПокупателя.Склад;
Резерв=Регистр.РезервыТМЦ.Количество;
Функция ВРезерве=КонОст(Резерв) Когда(СкладРезерв=СкладЗаявка);
....

т.е. надо получить остаток резерва на "родном" складе документа (особенность проведения заявки в том, что товар резервируется на НЕСКОЛЬКИХ складах)
что-то не могу сообразить как наложить такое условие в прямом запросе...

  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: получить КонОст по регистру с условием?
Ответ #1 - 26. Сентября 2014 :: 03:44
Печать  
попробовал так:
select
Резервы.Номенклатура as [Номенклатура $Справочник.Номенклатура],
Резервы.ЗаявкаПокупателя as [ЗаявкаПокупателя $Документ],
Резервы.СкладРезерв as [СкладРезерв $Справочник.Склады],
sum(Резервы.Количество) as ВРезерве
from (
     select
           Резервы.sp4477 Номенклатура,
           Резервы.sp4762 ЗаявкаПокупателя,
           Резервы.sp4476 СкладРезерв,
           Резервы.sp4479 Количество,
           0 Приход,
           0 Расход
     from rg4480 as Резервы
     where Резервы.period='20140801'

     union all
     select
           Резервы.sp4477 Номенклатура,
           Резервы.sp4762 ЗаявкаПокупателя,
           Резервы.sp4476 СкладРезерв,
           Резервы.sp4479*(1-Резервы.debkred*2),
           Резервы.sp4479*(1-Резервы.debkred),
           0
     from ra4480 as Резервы
     where Резервы.date_time_iddoc BETWEEN '20140901' and '20140921'  
     ) as Резервы
inner join _1SJourn Журнал (nolock) on Журнал.iddoc=Резервы.ЗаявкаПокупателя and Журнал.sp12918=Резервы.СкладРезерв
group by
     Резервы.Номенклатура,
     Резервы.ЗаявкаПокупателя,
     Резервы.СкладРезерв

но тогда запрос возвращает 0 (нет резервов) что неверно...
(Склад - это общий реквизит документов а НЕ реквизит докмуента Заявка!)
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: получить КонОст по регистру с условием?
Ответ #2 - 29. Сентября 2014 :: 02:26
Печать  
попробовал использовать ВТ остатки + соединение с журналом, тот же результат (нет резервов)...
help!!
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: получить КонОст по регистру с условием?
Ответ #3 - 29. Сентября 2014 :: 03:34
Печать  
В запросе выше неправильный порядок полей:
pisarev писал(а) 26. Сентября 2014 :: 03:44:
     select
           Резервы.sp4477 Номенклатура,
           Резервы.sp4762 ЗаявкаПокупателя,
           Резервы.sp4476 СкладРезерв,
           Резервы.sp4479 Количество,
           0 Приход,
           0
...
     select
           Резервы.sp4477 Номенклатура, -- Это Номенклатура
           Резервы.sp4762 ЗаявкаПокупателя, -- Это ЗаявкаПокупателя
           Резервы.sp4476 СкладРезерв, -- Это СкладРезерв
           Резервы.sp4479*(1-Резервы.debkred*2), -- Это Количество !!!
           Резервы.sp4479*(1-Резервы.debkred), -- Это Приход !!!
           0 -- Это Расход

Покажите запрос с ВТ
  
Наверх
 
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: получить КонОст по регистру с условием?
Ответ #4 - 29. Сентября 2014 :: 03:37
Печать  
     Соединение="inner join _1SJourn Журнал (nolock) on Журнал.iddoc=ЗаявкаПокупателя and Журнал.$ОбщийРеквизит.Склад=Склад";
     
     Текст="select
           |Резервы.Номенклатура as [Номенклатура $Справочник.Номенклатура],
           |Резервы.КоличествоОстаток as Зарезервировано
           |from
           |$РегистрОстатки.РезервыТМЦ(:КонДата,"+Соединение+",,,) Резервы";
     
     RS=СоздатьОбъект("ODBCRecordSet");
     RS.УстановитьТекстовыйПараметр("КонДата",КонДата);
  

хотел как лучше, а получилось как всегда Печаль
Наверх
IP записан
 
pisarev
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Местоположение: Новосибирск
Зарегистрирован: 09. Августа 2013
Пол: Мужской
Re: получить КонОст по регистру с условием?
Ответ #5 - 29. Сентября 2014 :: 03:44
Печать  
все, разобрался... дело было в длине полей iddoc и на регистре (дело в том, что измерение "ЗаявкаПокупателя" на регимстре - документ неопределенного вида...)
  

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