Имя: Пароль:
1C
1С v8
Почему условие построителя накладывается на вложенный запрос?
,
0 mikecool
 
11.04.13
17:43
Есть запрос:

ВЫБРАТЬ
   ТребованиеНакладная.Ссылка
ПОМЕСТИТЬ _Требования
ИЗ
   Документ.ТребованиеНакладная КАК ТребованиеНакладная
ГДЕ
   ТребованиеНакладная.Проведен
   И ТребованиеНакладная.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВложеннаяТаблица.Регистратор КАК Регистратор,
   СУММА(ЕСТЬNULL(ВложеннаяТаблица.Проводки, 0)) КАК ПроводкиОборот,
   СУММА(ЕСТЬNULL(ВложеннаяТаблица.Затраты, 0)) КАК ЗатратыОборот
{ВЫБРАТЬ
   ПроводкиОборот,
   ЗатратыОборот,
   Регистратор.*}
ИЗ
   (ВЫБРАТЬ
       _Требования.Ссылка КАК Регистратор,
       ЕСТЬNULL(ЗатратыБухгалтерскийУчетОбороты.СуммаОборот, 0) КАК Затраты,
       0 КАК Проводки
   ИЗ
       _Требования КАК _Требования
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗатратыБухгалтерскийУчет.Обороты(&ДатаНачала, &ДатаКонца, Регистратор, ) КАК ЗатратыБухгалтерскийУчетОбороты
           ПО _Требования.Ссылка = ЗатратыБухгалтерскийУчетОбороты.Регистратор
               И (ЗатратыБухгалтерскийУчетОбороты.Регистратор ССЫЛКА Документ.ТребованиеНакладная)
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ХозрасчетныйОборотыДтКт.Регистратор,
       0,
       ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0)
   ИЗ
       _Требования КАК _Требования
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&ДатаНачала, &ДатаКонца, Регистратор, СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИздержкиОбращенияНеОблагаемыеЕНВД), , , , ) КАК ХозрасчетныйОборотыДтКт
           ПО _Требования.Ссылка = ХозрасчетныйОборотыДтКт.Регистратор
               И (ХозрасчетныйОборотыДтКт.Регистратор ССЫЛКА Документ.ТребованиеНакладная)) КАК ВложеннаяТаблица
{ГДЕ
   (ЕСТЬNULL(ВложеннаяТаблица.Проводки, 0)) КАК ПроводкиОборот,
   (ЕСТЬNULL(ВложеннаяТаблица.Затраты, 0)) КАК ЗатратыОборот,
   ВложеннаяТаблица.Регистратор.*}

СГРУППИРОВАТЬ ПО
   ВложеннаяТаблица.Регистратор
{УПОРЯДОЧИТЬ ПО
   Регистратор.*,
   ПроводкиОборот,
   ЗатратыОборот}
ИТОГИ
   СУММА(ПроводкиОборот),
   СУММА(ЗатратыОборот)
ПО
   ОБЩИЕ,
   Регистратор
{ИТОГИ ПО
   Регистратор.*}


как бы хотелось прописать условия на суммы построителю для конечного запроса, а в результате условие применяется для вложенного
то бишь получаю при условии ЗатратыОборот = 0 просто пустую колонку ЗатратыОборот, а все остальное без изменений
чяднт?
1 MadHead
 
11.04.13
17:44
обернуть все в один запрос может или временную таблицу
2 simol
 
11.04.13
17:45
А выложи Постротитель.ПолучитьЗапрос().Текст сюда после установки условия ЗатратыОборот = 0
3 mikecool
 
11.04.13
17:45
Ща пример приведу
Тр1   100  100
Тр2    0     0
накладываю условие, получаю
Тр1   100    0
Тр2    0     0
4 mikecool
 
11.04.13
17:46
(2) ухтыж, век живи - век учись, ща посмотрю
5 mikecool
 
11.04.13
17:48
добавляется
ГДЕ
   ЕСТЬNULL(ВложеннаяТаблица.Проводки, 0) = &Параметр1
как бы вроде правильно
6 mikecool
 
11.04.13
17:49
уберу ка я внешние ЕСТЬNULL, ибо они там нафик не нужны
7 mikecool
 
11.04.13
17:50
не помогло )
8 simol
 
11.04.13
17:51
Заметь, у тебя условие не на Сумма(ВложеннаяТаблица.Проводки) = 0, а на ВложеннаяТаблица.Проводки = 0
9 simol
 
11.04.13
17:53
В {ГДЕ ...} нужны агрегатные функции СУММА(..)
10 mikecool
 
11.04.13
17:54
(9) семен семеныч, точно, спасибо
11 mikecool
 
11.04.13
17:57
получилось!