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


1C++ rocks!

Сообщений: 2
Зарегистрирован: 18. Февраля 2009
Отбор остатков товаров с учетом группы
18. Февраля 2009 :: 06:59
Печать  
Не могу понять что я сделал не так.
Подтолкните плз в правильном направлении
База ДБФ
Необходимо отобрать все товары с остатком >0 входящих в указанную группу. В данном случа результат пустой.

[code]      ТекстЗапроса = "
     |SELECT
     |      Рег.Товар as [Товар $Справочник.Товары],
     |      Рег.Склад as [Склад $Справочник.Склады],
     |      Sum(Рег.Остаток) as Остаток
     |FROM
     |      (Select
     |            $Р.Товар as Товар,
     |            $Р.ОстатокТовара as Остаток,
     |            $Р.Склад as Склад
     |      from
     |            $РегистрИтоги.ОстаткиТоваров as Р
     |      where
     |            Р.period = :НачПериода~~ AND $Р.Товар IN (Select Val FROM :Группа)
     |      UNION ALL
     |      select
     |            $Р.Товар as ТоварДвиж,
     |            $Р.ОстатокТовара * (1 - Р.debkred * 2) as ОстатокДвиж,
     |            $Р.Склад as СкладДвиж
     |      from
     |            $Регистр.ОстаткиТоваров as Р
     |      INNER JOIN
     |            1sjourn as жур ON Р.iddoc=жур.iddoc
     |            AND (жур.date BETWEEN :НачДвиж~~ AND :КонДвиж~~)
     |      where
     |            $Р.Товар IN (Select Val FROM :Группа)
     |      ) Рег
     |GROUP BY
     |      Рег.Товар,Рег.Склад
     |Having
     |      Sum(Рег.Остаток)>0
     |";

     Нач_месяца=НачМесяца(ТекущаяДата());
     Нач_месяца=Нач_месяца-1; // - это последний день пред месяца
     УстНачПериодаИтогов=НачМесяца(Нач_месяца);
     //Сообщить(УстНачПериодаИтогов);
     
     Запрос.УстановитьТекстовыйПараметр("НачПериода", УстНачПериодаИтогов);
     Запрос.УстановитьТекстовыйПараметр("НачДвиж", НачМесяца(ТекущаяДата()));
     Запрос.УстановитьТекстовыйПараметр("КонДвиж", ТекущаяДата());
     
     ИмяТаблицы="#Группа";
     Запрос.УложитьСписокОбъектов(ЭлемРод,ИмяТаблицы);
     Запрос.УстановитьТекстовыйПараметр ("Группа", ИмяТаблицы);
[/code]
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Отбор остатков товаров с учетом группы
Ответ #1 - 18. Февраля 2009 :: 08:43
Печать  
УложитьСписокОбъектов или свой подзапрос, как вариант Улыбка
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
dimka
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 18. Февраля 2009
Re: Отбор остатков товаров с учетом группы
Ответ #2 - 18. Февраля 2009 :: 09:21
Печать  
Запрос.УложитьСписокОбъектов(ЭлемРод,ИмяТаблицы);
укладываю - не помогает Улыбка
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Отбор остатков товаров с учетом группы
Ответ #3 - 18. Февраля 2009 :: 10:55
Печать  
Вот работающий пример, нет времени сравнивать

Функция УсловиеВхождения(ИмяТабл, ПолеТабл, ТипМФ, ИмяВремТабл)
     Перем Результат;
     
     Результат = "" + ИмяТабл + "." + ПолеТабл;
     
     Если (ТипМФ = 1) или (ТипМФ = 3)  Тогда
           Результат = Результат + " IN ";
     ИначеЕсли ТипМФ = 2 Тогда
           Результат = Результат + " NOT IN ";
     КонецЕсли;
     
     Результат = Результат + "(SELECT VAL FROM " + ИмяВремТабл + ")";
     
     Возврат Результат;
КонецФункции // УсловиеВхождения()


...

                 Запрос.УложитьСписокОбъектов(Список, СписокТМЦМФ, "Номенклатура");
           Запрос.УстановитьТекстовыйПараметр("СписокТМЦМФ", СписокТМЦМФ);

...

ТекстЗапросаВлож = ТекстЗапросаВлож + " AND ((" + УсловиеВхождения("Номенклатура", "ID", ТипМФНоменклатура, ":СписокТМЦМФ") + ")";

...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отбор остатков товаров с учетом группы
Ответ #4 - 18. Февраля 2009 :: 14:41
Печать  
Попробуй сначала уложить
Код
Выбрать все
ИмяТаблицы="";
Запрос.УложитьСписокОбъектов(ЭлемРод,ИмяТаблицы,ВидСправочника); 


а потом формируй текст запроса:
Код
Выбрать все
$Р.Товар IN (Select Val FROM "+ИмяТаблицы+") 

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