Имя: Пароль:
1C
1C 7.7
v7: запрос игнорирует все условия
0 zenon46
 
15.11.17
16:22
Есть запрос к регистрам, сегодня прилепил в группировке условие ("+?(флПоказНулевых=1," Все","")+";), так теперь запрос отрабатывает игнорируя все условия, не пойму что не так.
Вот текст запроса.

Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = "
    |Период с ДатаНачала по ДатаКонца;    
    |Фирма                              = Регистр.ОстаткиТМЦ.Фирма,            
    |                                   Регистр.РезервыТМЦ.Фирма,
    |                                   Регистр.Заказы.Фирма;
    |Номенклатура                      = Регистр.ОстаткиТМЦ.Номенклатура,
    |                                   Регистр.РезервыТМЦ.Номенклатура,    
    |                                   Регистр.Заказы.Номенклатура;
    |Поставщик                        = Регистр.ОстаткиТМЦ.Номенклатура.Поставщик,
    |                                   Регистр.РезервыТМЦ.Номенклатура.Поставщик,    
    |                                   Регистр.Заказы.Номенклатура.Поставщик;    
    |Количество                       = Регистр.ОстаткиТМЦ.Количество;
    |Резерв                           = Регистр.РезервыТМЦ.Количество;
    |Заказ                            = Регистр.Заказы.КоличествоПриход;
    |Функция КоличествоНачОст          = НачОст(Количество);
    |Функция КоличествоПриход          = Приход(Количество);
    |Функция КоличествоРасход          = Расход(Количество);
    |Функция КоличествоКонОст          = КонОст(Количество);
    |Функция РезервНачОст              = НачОст(Резерв);
    |Функция РезервПриход           = Приход(Резерв);
    |Функция РезервРасход              = Расход(Резерв);
    |Функция РезервКонОст              = КонОст(Резерв);
    |Функция ЗаказНачОст              = НачОст(Заказ);
    |Функция ЗаказПриход            = Приход(Заказ);
    |Функция ЗаказРасход              = Расход(Заказ);
    |Функция ЗаказКонОст              = КонОст(Заказ);
    |Группировка Номенклатура Без Групп"+?(флПоказНулевых=1," Все","")+";
    |Условие (Фирма в ВбрФирма);    
    |Условие (Номенклатура в ВбрНоменклатура);
    |Условие (Поставщик = ВбрПоставщик);
    |";
1 aka AMIGO
 
15.11.17
16:32
(0) И что, игнорирует независимо от значения флПоказНулевых ?
2 zenon46
 
15.11.17
16:35
(1) валит всю номенклатуру, игнорирую условия по отбору поставщика. а хотелось бы что бы валилась с отбором по этому условию.
3 Ёпрст
 
15.11.17
16:36
(0)
ВСЕ - покажет все, т.е весь справочник.
4 Ёпрст
 
15.11.17
16:37
все ВошедшиеВЗапрос - покажет те, что были при вычислении функций.
5 zenon46
 
15.11.17
16:38
(4) да уже так сделал
6 Davalebor
 
15.11.17
16:38
(2) Как он отберет по поставщику, если поставщик в регистре, а ВСЕ подразумевает включение в выборку всего справочника номенклатура.
7 aka AMIGO
 
15.11.17
16:43
Совет, конечно, кхм.. но.. Раз прилепленное условие губит идею, примени хотя-бы это:
ТекстЗапроса = ... [твой текст до Группировки]
Если флПоказНулевых = 1 Тогда
  ТекстЗапроса = ТекстЗапроса +"
  [Группировка Номенклатура Без Групп..Все]
Иначе
  [Группировка Номенклатура Без Групп]
КонецЕсли;

ТекстЗапроса = ТекстЗапроса +" [остатки от твоего текста запроса]
8 zenon46
 
15.11.17
18:12
(7) да валится вся, причем та что на остатках есть или в резерве или в заказе, то с указанием количества, НО игнорируется Условие Поставщика, я так понимаю тут методология не правильная или вообще идея не правильная. Действом "ВСЕ" хотелось получить в выборке ВСЮ номенклатуру по данному поставщику, даже если ее нет на остатке/в заказе /в резерве плюсом к той что есть на остатке/в заказе /в резерве.
9 Ёпрст
 
15.11.17
19:27
(8) так нельзя сделать, можно с извртом в черных запросах, или через 2 чорных запроса.

А так, пиши прямой запрос, там что угодно и бысстро