Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема группировка иерархического справочника (число прочтений - 1833 )
OnePrg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 66
Зарегистрирован: 07. Октября 2019
группировка иерархического справочника
08. Июня 2020 :: 14:17
Печать  
Был у меня запрос к документам реализации. Выгружал я его в индексированную таблицу и группировал с итогами по группам справочника. Всё работало.

Теперь нужно выводит весь справочник в иерархии, а к нему левым соединением данные о реализации

Код (SQL)
Выбрать все
SELECT
     сТовар2.ParentID as [Товар $Справочник.Товар],
     T2.Период as [Период $Дата],
     T2.Склад as [Склад $Справочник.МестаХранения],
     T2.СуммаРеализ as Сумма,
     T2.СуммаУчетная as СуммаУчетная
FROM $Справочник.Товар as сТовар2
LEFT JOIN
(....) as T2
     ON сТовар2.ID = T2.Товар


RS.ВыполнитьИнструкцию(ТекстЗапроса,тб,1);


тб.Группировать("Товар:&Товар,Период,Склад","Сумма,СуммаУчетная");
 



теперь при результате запроса лишние пустые строки

  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: группировка иерархического справочника
Ответ #1 - 08. Июня 2020 :: 14:45
Печать  
OnePrg писал(а) 08. Июня 2020 :: 14:17:
теперь при результате запроса лишние пустые строки
http://imagizer.imageshack.com/img924/2670/VeyMS5.png



Убери это
     сТовар2.ParentID as [Товар $Справочник.Товар],

При группировке по иерархии в ИТ в ней не должно быть групп, вернее могут быть, но только как <ИмяКолонкиСправочника>_Родитель.
Иначе у тебя неизбежны дубли групп - родителей.

Т.е. так должно быть
сТовар2.ID as [Товар $Справочник.Товар],
сТовар2.ParentID as [Товар_Родитель $Справочник.Товар],

P.S. Возможно свертка в ИТ должна и с группами так работать, но я не уверен что такой вариант кто-то вообще проверял.
  
Наверх
www  
IP записан
 
OnePrg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 66
Зарегистрирован: 07. Октября 2019
Re: группировка иерархического справочника
Ответ #2 - 08. Июня 2020 :: 16:10
Печать  
Спасибо.Буду знать.

Уточняю, что выводить информацию по реализации товаров, нужно только по двум верхним группам в иерархии. Детализация по самим товарам не нужна.

Если я вместо ParentID ставлю  ID, время формирования отчёта увеличивается в разы - оч-ч-ч-ч-ень долго, даже не дожидаюсь - убиваю процесс 1С.

Что я сделал:
Добавил условие WHERE   сТовар2.IsFolder = 2, пустые строки исчезли кроме самой верхней, её удалил костылём

           Если (тб.Сумма = 0) и (тб.СуммаУчетная = 0) Тогда
                 Продолжить;
           КонецЕсли;


А ещё в столбцах у меня склады, и там тоже склад пустой. Его тоже аналогичным костылём удалил.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: группировка иерархического справочника
Ответ #3 - 09. Июня 2020 :: 06:36
Печать  
OnePrg писал(а) 08. Июня 2020 :: 16:10:
Если я вместо ParentID ставлю  ID, время формирования отчёта увеличивается в разы - оч-ч-ч-ч-ень долго, даже не дожидаюсь - убиваю процесс 1С.

На этапе свертки?

Звездочки добавь
тб.Группировать("Товар:&*Товар,*Период,*Склад","Сумма,СуммаУчетная");
И Товар_Родитель в запрос тоже

Примерно так по времени получается:

Товар+Товар_Родитель, группировка &*Товар 93мс
Товар, группировка &*Товар 467мс
Товар+Товар_Родитель, группировка &Товар 757мс
Товар, группировка &Товар 1114мс
« Последняя редакция: 09. Июня 2020 :: 07:47 - Djelf »  
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: группировка иерархического справочника
Ответ #4 - 09. Июня 2020 :: 06:44
Печать  
OnePrg писал(а) 08. Июня 2020 :: 16:10:
Что я сделал:
Добавил условие WHERE   сТовар2.IsFolder = 2, пустые строки исчезли кроме самой верхней, её удалил костылём

           Если (тб.Сумма = 0) и (тб.СуммаУчетная = 0) Тогда
                 Продолжить;
           КонецЕсли;


А ещё в столбцах у меня склады, и там тоже склад пустой. Его тоже аналогичным костылём удалил.


Плохие костыли у тебя  Очень довольный
Достаточно после свертки, при выводе строки проверять __ЭтоГруппа__=1

Хотя нет, если группировать по parentid все равно хрень получается.
  
Наверх
www  
IP записан
 
OnePrg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 66
Зарегистрирован: 07. Октября 2019
Re: группировка иерархического справочника
Ответ #5 - 11. Июня 2020 :: 16:31
Печать  
Djelf писал(а) 09. Июня 2020 :: 06:36:
Звездочки добавь
тб.Группировать("Товар:&*Товар,*Период,*Склад","Сумма,СуммаУчетная");
И Товар_Родитель в запрос тоже



Спасибо. Помогло.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать