Имя: Пароль:
1C
1C 7.7
v7: прямой запрос: в отчет не попадают группы справочника
0 dimm7310
 
06.10.11
10:57
простой запрос по справочнику скидки с фильтром по контрагенту и по номенклатуре

[code]
   ТекстЗапроса = "
       |SELECT Скидки.ID [Скидки $Справочник.Скидки]
       |    , $Скидки.Контрагент [Контрагент $Справочник.Контрагенты]
       |    , $Скидки.Номенклатура [Номенклатура $Справочник.Номенклатура]
       |    , $Скидки.ДатаНачала ДатаНачала
       |    , $Скидки.ДатаОкончания ДатаОкончания
       |    , $Скидки.Процент Процент
       |FROM $Справочник.Скидки AS Скидки
       |WHERE Скидки.IsMark=0 ";
       Если сзТМЦ.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +
           "
           |and $Скидки.Номенклатура IN (SELECT Val FROM #ГруппаН)";
       КонецЕсли;
       Если сзКонтр3.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +
           "
           |and $Скидки.Контрагент IN (SELECT Val FROM #ГруппаК)";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса +
       "
       |GROUP BY Скидки.ID
       |    , $Скидки.Контрагент
       |    , $Скидки.Номенклатура
       |    , $Скидки.ДатаНачала
       |    , $Скидки.ДатаОкончания
       |    , $Скидки.Процент
       |ORDER BY $Скидки.Номенклатура
       |    , $Скидки.Контрагент
       |";
   рс.УложитьСписокОбъектов(сзТМЦ, "#ГруппаН", "Номенклатура");
   рс.УложитьСписокОбъектов(сзКонтр3, "#ГруппаК", "Контрагенты");
[/code]

Если я устанавливаю фильтр по номенклатуре, к примеру задав в список сзТМЦ папку 1-го уровня, то в результат попадут только скидки установленные на элементы справочника номенклатуры (входящие в эту группу) а скидки установленные на группы номенклатуры (более низкого уровня) вообще не попадают в результирующую таблицу.
Если я вообще не накладываю фильтр по номенклатуре , а только по контрагенту, то в отчет попадают все как надо.

Подскажите как решить проблему?
1 ДенисЧ
 
06.10.11
10:58
А с чего бы туда группам попадать, если их в фильтре нету?
2 dimm7310
 
06.10.11
11:06
а почему они не должны попадать ? Ведь они также как и элементы входят в группу верхнего уровня
3 ДенисЧ
 
06.10.11
11:07
(2) в фильтре после УложитьСписокОбъектов() - групп нет. Вот и не попадают.
4 dimm7310
 
06.10.11
11:16
(3) Да верно.
Прочитал в описании
Если strRefKind – идентификатор иерархического справочника, то таблица будет содержать элементы, иерархически принадлежащие группам переданным в списке.

Как тогда можно решить мою проблему?
5 ДенисЧ
 
06.10.11
11:17
Руками таблицу фильтра формировать. С группами
6 dimm7310
 
06.10.11
11:20
пожалуйста выложите пример такой реализации, я раньше так не пробовал
7 Kondarat
 
06.10.11
11:40
(6) Результат запроса в ИТЗ.
ИТЗ.Группировать("Номенклатура :&Номенклатура", КолонкиСумм)
и будут все группы и подгруппы
8 antoneus
 
06.10.11
12:04
(7) ему не то надо. ему надо запросом выдрать скидки, которые являются реквизитом группы в подгруппах.
9 Ёпрст
 
06.10.11
12:06
ага, ему изначально нужно передать список с группами в фильтр для запроса.
на 1cpp есть решение как уложить в список с группами