Имя: Пароль:
1C
1C 7.7
v7: Помогите с запросом.
, ,
0 Andreyyy
 
03.05.12
11:32
Нужно вывести группировки по проектам и номенклатуре, но выводит только верхний уровень (пробовал местами менять группировки, не помогает).

ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Номенклатура    = Регистр.ПартииНаличие.Номенклатура;
   |Проект            = Регистр.ПартииНаличие.ТекущийДокумент.Реализация.Проект,
   |                  Регистр.ПартииНаличие.ТекущийДокумент.ВозвратОтПокупателя.Проект;
   |КодОперации    = Регистр.ПартииНаличие.КодОперации;
   |Док            = Регистр.ПартииНаличие.ТекущийДокумент;
   |Оборот            = Регистр.ПартииНаличие.ПродСтоимость;
   |Функция ОборотСумма = Сумма(Оборот)Когда(КодОперации в КодыОборота);
   |Функция ОборотВозврат = Сумма(Оборот)Когда(КодОперации в КодыВозвратов);
   |Условие (НЕ(КодОперации в КодыПеремещений));
   |Условие (Номенклатура.ВидНоменклатуры <> ВидНоменклатурыУслуга);";
                     
   ТекстЗапроса = ТекстЗапроса+"
   |Группировка Номенклатура;
   |Группировка Проект;";
1 viktor_vv
 
03.05.12
11:36
Если оставить только группировку Проект, выводит ?
2 Andreyyy
 
03.05.12
11:40
(1) В том то и дело, что да, выводит.
Конфигурация типовая комплексная.
3 viktor_vv
 
03.05.12
11:41
Покажи как выводишь с двумя группировками.
4 Ёпрст
 
03.05.12
11:41
(0) и не должен
5 povar
 
03.05.12
11:41
|Номенклатура    = Регистр.ПартииНаличие.ТекущийДокумент.Реализация.Номенклатура;
6 Ёпрст
 
03.05.12
11:43
(5) зачетная трава
7 ДенисЧ
 
03.05.12
11:45
Хм... А в конфигураторе если посмотреть на тип Регистр.ПартииНаличие.Номенклатура?
Что написано? Ставлю дайм, что справочник нетипизированный...
8 Andreyyy
 
03.05.12
11:45
(4) Он и группировку по документам не выводит, как выйти из положения ?
9 Andreyyy
 
03.05.12
11:46
(7) Типизированный
10 Ёпрст
 
03.05.12
11:48
(8) взять продажный регистр - самое простое, и не применять Сумма к остатковому (хоть и по реквизиту регистра суммироемому)
11 Andreyyy
 
03.05.12
11:49
Что я конкретно где-то затупил, вот так не выводит группировку по документам:

ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Номенклатура    = Регистр.ПартииНаличие.Номенклатура;
   |КодОперации    = Регистр.ПартииНаличие.КодОперации;
   |Док            = Регистр.ПартииНаличие.ТекущийДокумент;
   |Оборот            = Регистр.ПартииНаличие.ПродСтоимость;
   |Функция ОборотСумма = Сумма(Оборот)Когда(КодОперации в КодыОборота);
   |Функция ОборотВозврат = Сумма(Оборот)Когда(КодОперации в КодыВозвратов);
   |Условие (НЕ(КодОперации в КодыПеремещений));
   |Условие (Номенклатура.ВидНоменклатуры <> ВидНоменклатурыУслуга);";
                     
   ТекстЗапроса = ТекстЗапроса+"
   |Группировка Номенклатура;
   |Группировка Док;";
12 Ёпрст
 
03.05.12
11:49
+10 точнее, взять оборотный регистр Продажи
13 Ёпрст
 
03.05.12
11:50
а вот за такие условия
Условие (Номенклатура.ВидНоменклатуры

нужно тапком
14 Волесвет
 
03.05.12
11:50
(0) гламурненько так - номенклатуру тянем из регистра, проект из докатекущего причем его вид прописываем
мдэ
15 Andreyyy
 
03.05.12
11:52
(13) Без этого условия тоже не хочет.
Не погу понять что не так делаю.
16 viktor_vv
 
03.05.12
11:53
(11) Ты таки замени функцию Сумма на Расход например. У меня как в (0) с Расход получилось. По крайней мере группировки есть, правда к достоверности сумм при таком соединении возникает вопрос.
17 Ёпрст
 
03.05.12
11:53
ну и проект, как бэ так должен быть:

|Проект            = Регистр.ПартииНаличие.ТекущийДокумент.Проект;
18 Ёпрст
 
03.05.12
11:54
+17 це же общий реквизит дока
19 Andreyyy
 
03.05.12
11:58
Жесть !!! Я же потом обход делаю только по верхним группам !
Зачетные праздники вышли.

   Пока Запрос.Группировка("Номенклатура") > 0 Цикл
       Если (Запрос.Номенклатура.ЭтоГруппа() = 0) Тогда
           Продолжить;
       КонецЕсли;
       Если Запрос.Номенклатура.Уровень() = 1 Тогда
           ВерхняяНоменклатура = Запрос.Номенклатура;
       КонецЕсли;
       ТаблицаОтчета.НоваяСтрока();
       НомПоследнейСтроки = НомПоследнейСтроки + 1;
       Пока Запрос.Группировка("Док") > 0 Цикл
20 Andreyyy
 
03.05.12
12:06
+(19) Извиняюсь за тупой вброс.
21 Волесвет
 
03.05.12
12:08
(20) ну почему сразу и вброс, запрос твой доделать, а местами и переделать надо, так что считай оптимизация)