Имя: Пароль:
1C
1C 7.7
v7: Группировка в запросе по группам справочника
,
0 Анатоль
 
05.10.11
13:18
Есть у меня иерархический справочник 4-х уровневый (уникальность кода в пределах справочника)
В документах есть выбор элементов этого справочника

Есть запрос по документам:
   ТекстЗапроса = "
   |Период с НачДата по КонДата;
   |ОбрабатыватьДокументы Проведенные;
   |ТекДок           = Документ.РасходныйКассовый.ТекущийДокумент, Документ.ПриходныйКассовый.ТекущийДокумент,
   |                 Документ.БанковскаяВыписка.ТекущийДокумент, Документ.Бюджет.ТекущийДокумент, Документ.ВыплатаЗП.ТекущийДокумент;
   |СтатьяБюджета = Документ.РасходныйКассовый.СтатьяБюджета, Документ.ПриходныйКассовый.СтатьяБюджета,
   |                 Документ.БанковскаяВыписка.СтатьяБюджета, Документ.Бюджет.СтатьяБюджета, Документ.ВыплатаЗП.СтатьяБюджета;
   |СуммаЗатратПл = Документ.Бюджет.СуммаПлан;
   |СуммаЗатратФКасса = Документ.РасходныйКассовый.СуммаВал, Документ.ПриходныйКассовый.СуммаВал, Документ.ВыплатаЗП.Сумма;
   |СуммаЗатратФБанк  = Документ.БанковскаяВыписка.СуммаСНДС;
   |
   |Функция СуммаЗатратПлан      = Сумма(СуммаЗатратПл);
   |Функция СуммаЗатратФактКасса = Сумма(СуммаЗатратФКасса);
   |Функция СуммаЗатратФактБанк  = Сумма(СуммаЗатратФБанк);
   |
   |Функция СуммаЗатратПланРасход        = Сумма(СуммаЗатратПл)        Когда (Число(СтатьяКод) >= 2000);
   |Функция СуммаЗатратФактКассаРасход = Сумма(СуммаЗатратФКасса)    Когда (Число(СтатьяКод) >= 2000);
   |Функция СуммаЗатратФактБанкРасход  = Сумма(СуммаЗатратФБанк)    Когда (Число(СтатьяКод) >= 2000);
   |
   |Группировка СтатьяБюджета Упорядочить по СтатьяБюджета.Код;";

ВОПРОС: почему в результате запроса я получаю итоги только по элементам справочника и нет итогов по группам этого справочника?
1 Ёпрст
 
05.10.11
13:21
(0) и как ты это узнал ?
И нафига при одной группировке СтатьяБюджета  еще и переменная
ТекДок  в тексте запроса ?
2 Анатоль
 
05.10.11
13:23
(1) это только часть запроса - он больше и там всё используется.
Узнал я это в отладчике при обходе описанной группировки
3 Ёпрст
 
05.10.11
13:35
(2) то что в этом куске- работает верно, и суммы по группам тоже будут..
А что там еще у тебя есть - нам отсюда не видно.
4 Анатоль
 
05.10.11
13:47
Весь текст запроса:

   ТекстЗапроса = "
   |Период с НачДата по КонДата;
   |ОбрабатыватьДокументы Проведенные;
   |ТекДок           = Документ.РасходныйКассовый.ТекущийДокумент, Документ.ПриходныйКассовый.ТекущийДокумент,
   |                 Документ.БанковскаяВыписка.ТекущийДокумент, Документ.Бюджет.ТекущийДокумент, Документ.ВыплатаЗП.ТекущийДокумент;
   |СтатьяКод       = Документ.РасходныйКассовый.СтатьяБюджета.Код, Документ.ПриходныйКассовый.СтатьяБюджета.Код,
   |                 Документ.БанковскаяВыписка.СтатьяБюджета.Код, Документ.Бюджет.СтатьяБюджета.Код, Документ.ВыплатаЗП.СтатьяБюджета.Код;
   |СтатьяБюджета = Документ.РасходныйКассовый.СтатьяБюджета, Документ.ПриходныйКассовый.СтатьяБюджета,
   |                 Документ.БанковскаяВыписка.СтатьяБюджета, Документ.Бюджет.СтатьяБюджета, Документ.ВыплатаЗП.СтатьяБюджета;
   |Подразделение = Документ.РасходныйКассовый.Подразделение, Документ.ПриходныйКассовый.Подразделение,
   |                 Документ.БанковскаяВыписка.Подразделение, Документ.Бюджет.Подразделение, Документ.ВыплатаЗП.ПодразделениеБюждет;
   |СуммаЗатратПл = Документ.Бюджет.СуммаПлан;
   |СуммаЗатратФКасса = Документ.РасходныйКассовый.СуммаВал, Документ.ПриходныйКассовый.СуммаВал, Документ.ВыплатаЗП.Сумма;
   |СуммаЗатратФБанк  = Документ.БанковскаяВыписка.СуммаСНДС;
   |
   |Функция СуммаЗатратПлан      = Сумма(СуммаЗатратПл);
   |Функция СуммаЗатратФактКасса = Сумма(СуммаЗатратФКасса);
   |Функция СуммаЗатратФактБанк  = Сумма(СуммаЗатратФБанк);
   |
   |Функция СуммаЗатратПланРасход        = Сумма(СуммаЗатратПл)        Когда (Число(СтатьяКод) >= 2000);
   |Функция СуммаЗатратФактКассаРасход = Сумма(СуммаЗатратФКасса)    Когда (Число(СтатьяКод) >= 2000);
   |Функция СуммаЗатратФактБанкРасход  = Сумма(СуммаЗатратФБанк)    Когда (Число(СтатьяКод) >= 2000);
   |
   |Группировка СтатьяБюджета Упорядочить по СтатьяБюджета.Код;";
   Если флПоДокументам = 1 Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Группировка ТекДок;";
   КонецЕсли;
   Если флБезПодразделений = 0 Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Группировка Подразделение Без Групп Все ВошедшиеВЗапрос;";
   КонецЕсли;
   ТекстЗапроса = ТекстЗапроса + "
   |Условие (СтатьяБюджета в ВыбСтатьяБюджета);
   |Условие (Подразделение в ВыбПодразделение);";
5 Анатоль
 
05.10.11
13:59
(3) по запросу я тоже считаю что всё должно работать
6 Ёпрст
 
05.10.11
13:59
ну и ? сами группы справочника есть на выходе ?
Если есть, то и суммы по ним тоже есть.
7 Анатоль
 
05.10.11
14:08
групп справочника на выходе нет, ну соответсвенно итогов по ним тоже
8 Анатоль
 
05.10.11
14:13
Обход группировки самый банальный:
   Пока Запрос.Группировка(1) = 1 Цикл // проходим по статьям бюджета
   КонецЦикла;
9 Ёпрст
 
05.10.11
14:15
>>>>групп справочника на выходе нет

ЗАЧЕТ!
:)))))))))))
10 Lexxxxx
 
05.10.11
14:16
(7) А что, у вас дана возможность в документы впиндюривать группы справочника?!
11 Lexxxxx
 
05.10.11
14:17
СтатьяБюджета =
Документ.РасходныйКассовый.СтатьяБюджета, Документ.ПриходныйКассовый.СтатьяБюджета,
Документ.БанковскаяВыписка.СтатьяБюджета, Документ.Бюджет.СтатьяБюджета, Документ.ВыплатаЗП.СтатьяБюджета;

В каком из документов можно выбрать группу?
12 Ёпрст
 
05.10.11
14:19
(10) а почему бы и нет ? Это раз, запрос сам строит иерархию на выходе, это два.

(0) Проверяй типы реквизитов документа, 100% у тебя там стоит тип <Справочник> без вида - вот групп справочника в таком случае, ты не увидишь никогда на выходе запроса.
13 Ёпрст
 
05.10.11
14:19
(11) в любом, если что.
Да и вопрос тут не об этом, не путай автора.
14 Анатоль
 
05.10.11
16:19
(12) Спасибо. Реально одно из обновлений убило тип справочника в выплате ЗП.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший