Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) ИТЗ Суммы по группам справочников (число прочтений - 10222 )
Looking
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 33
Зарегистрирован: 11. Апреля 2007
ИТЗ Суммы по группам справочников
18. Ноября 2008 :: 08:35
Печать  
Доброго дня, в ИТЗ имеется удобный для меня функционал - суммирование по группам справочников. Только вот у меня не получается сгруппировать по двум индексам. То есть например
ИТЗ.Группировать("ИндНоменклатура: &Номенклатура; ИндМестоХранения: МестоХранения","КоличествоПродаж");

Мне нужно получить структуру
"Группа Товаров 1-го уровня" - "Склад 1" - "КоличествоПродаж"
"Группа Товаров 1-го уровня" - "Склад 2" - "КоличествоПродаж"
"Группа Товаров 1-го уровня" - "Склад 3" - "КоличествоПродаж"

"Группа Товаров 2-го уровня" - "Склад 1" - "КоличествоПродаж"
"Группа Товаров 2-го уровня" - "Склад 2" - "КоличествоПродаж"
"Группа Товаров 2-го уровня" - "Склад 3" - "КоличествоПродаж"

"Товар 3-го уровня" - "Склад 1" - "КоличествоПродаж"
"Товар 3-го уровня" - "Склад 2" - "КоличествоПродаж"
"Товар 3-го уровня" - "Склад 3" - "КоличествоПродаж"

Вместо этого я получаю следующую структуру

"Группа Товаров 1-го уровня" - "Склад 1" - "КоличествоПродажПоВсемСкладам"

"Группа Товаров 2-го уровня" - "Склад 1" - "КоличествоПродажПоВсемСкладам"

"Товар 3-го уровня" - "Склад 1" - "КоличествоПродаж"
"Товар 3-го уровня" - "Склад 2" - "КоличествоПродаж"
"Товар 3-го уровня" - "Склад 3" - "КоличествоПродаж"

Подскажите пожалуйста в чём моя ошибка  Смущённый
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #1 - 18. Ноября 2008 :: 10:13
Печать  
Не надо использовать метод "Группировать". Надо добавлять колонки с теми значениями, по которым ты хочешь суммировать, и пользоваться методом Итог() с наложенным фильтром.
  
Наверх
www  
IP записан
 
Looking
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 33
Зарегистрирован: 11. Апреля 2007
Re: ИТЗ Суммы по группам справочников
Ответ #2 - 18. Ноября 2008 :: 10:23
Печать  
Цитата:
Не надо использовать метод "Группировать". Надо добавлять колонки с теми значениями, по которым ты хочешь суммировать, и пользоваться методом Итог() с наложенным фильтром.


Но ведь у меня изначально в ИТЗ нет вышестоящих групп, а только элементы, поэтому я и использую метод "Группировать", чтобы в ИТЗ появились все вышестоящие группы с упорядочиванием по иерархичности Справочника, то есть изначально у меня есть ИТЗ с данными следующей структуры

"Товар 3-го уровня" - "Склад 1" - "КоличествоПродаж"
"Товар 3-го уровня" - "Склад 2" - "КоличествоПродаж"
"Товар 3-го уровня" - "Склад 3" - "КоличествоПродаж"

а мне нужно чтобы в ней добавились данные с итогами по группам всех вышестоящих уровней с упорядочиванием по иерархичности Справочника, то есть

"Группа Товаров 1-го уровня" - "Склад 1" - "КоличествоПродаж"
"Группа Товаров 1-го уровня" - "Склад 2" - "КоличествоПродаж"
"Группа Товаров 1-го уровня" - "Склад 3" - "КоличествоПродаж"

"Группа Товаров 2-го уровня" - "Склад 1" - "КоличествоПродаж"
"Группа Товаров 2-го уровня" - "Склад 2" - "КоличествоПродаж"
"Группа Товаров 2-го уровня" - "Склад 3" - "КоличествоПродаж"

"Товар 3-го уровня" - "Склад 1" - "КоличествоПродаж"
"Товар 3-го уровня" - "Склад 2" - "КоличествоПродаж"
"Товар 3-го уровня" - "Склад 3" - "КоличествоПродаж"

Разве могу я как-то иначе добавить в ИТЗ такие итоги чем используя метод "Группировать"?
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #3 - 18. Ноября 2008 :: 10:27
Печать  
Looking писал(а) 18. Ноября 2008 :: 10:23:
Но ведь у меня изначально в ИТЗ нет вышестоящих групп

Ну так добавь

Цитата:
Разве могу я как-то иначе добавить в ИТЗ такие итоги чем используя метод "Группировать"?

Тебе не нужно хранить итоги в ИТ. У тебя есть метод Итог для того, чтобы в любой момент ты мог рассчитать итог по любому нужному тебе фильтру.
  
Наверх
www  
IP записан
 
Looking
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 33
Зарегистрирован: 11. Апреля 2007
Re: ИТЗ Суммы по группам справочников
Ответ #4 - 18. Ноября 2008 :: 10:32
Печать  
Цитата:
Looking писал(а) Сегодня :: 13:23:
Но ведь у меня изначально в ИТЗ нет вышестоящих групп

Ну так добавь


я не совсем верно написал, правильнее - у меня изначально в ИТЗ нет вышестоящих групп с упорядочиванием по иерархичности Справочника.  То есть с помощью ИТЗ я структурирую данные аналогично печатной форме, и затем достаточно простым циклом без условий сформировать печатную форму.

  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #5 - 18. Ноября 2008 :: 10:35
Печать  
Ну так добавь их Улыбка
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #6 - 18. Ноября 2008 :: 10:37
Печать  
Для твоей задачи нужно юзать именно Группировать.
Только читай доку внимательнее, после группировки все нижестоящие группировки находятся в спец.колонке тзПотомки - это спец.ИТЗ.
Для твоей задачи для каждой строки 1 уровня будет по одной ИТЗ тзПотомки. Внутри этой ИТЗ для каждой строки 2 уровня будет еще одна ИТЗ тзПотомки. И вот в этой ИТЗ уже будут итоги по конкретным товарам и далее по местам хранения.

PS Федор, ты не прав.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Looking
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 33
Зарегистрирован: 11. Апреля 2007
Re: ИТЗ Суммы по группам справочников
Ответ #7 - 18. Ноября 2008 :: 10:44
Печать  
Цитата:
Ну так добавь их Улыбка


то есть нужно добавить Группы с уже просуммированными значениями нужных мне показателей?  Но ведь суть как раз в том что в случае использования одного индекса эту работу делает за меня ИТЗ, то есть мне достаточно собрать в ИТЗ значения показателей соответсвующие элементам, а суммирование по группам и их упорядочивание по иерархической структуре справочника сделает за меня метод "Группировать". Если же это нужно реализовывать самому, то смысл ИТЗ теряется, то же самое можно сделать в обычной ТЗ. Или я не прав?  Смущённый

Суть в том что у меня запрос обрабатывает табличные части документов, поэтому в результатах выборки группы не фигурируют.
  
Наверх
 
IP записан
 
Looking
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 33
Зарегистрирован: 11. Апреля 2007
Re: ИТЗ Суммы по группам справочников
Ответ #8 - 18. Ноября 2008 :: 10:52
Печать  
Цитата:
Только читай доку внимательнее, после группировки все нижестоящие группировки находятся в спец.колонке тзПотомки - это спец.ИТЗ.
Для твоей задачи для каждой строки 1 уровня будет по одной ИТЗ тзПотомки. Внутри этой ИТЗ для каждой строки 2 уровня будет еще одна ИТЗ тзПотомки. И вот в этой ИТЗ уже будут итоги по конкретным товарам и далее по местам хранения.


этот момент я знаю, чтобы "развернуть"  тзПотомки в одну ИТЗ использую Процедуру

Код
Выбрать все
Процедура ки)

Для счКолонок=1 по ИТЗИсточник.КоличествоКолонок() Цикл
Если ТЗПриёмник.НомерКолонки(ИТЗИсточник.ИмяКолонки(счКолонок))=0 Тогда
ТЗПриёмник.НоваяКолонка(ИТЗИсточник.ИмяКолонки(счКолонок));
КонецЕсли;
КонецЦикла;

ИТЗИсточник.ВыбратьСтроки();
Пока ИТЗИсточник.ПолучитьСтроку()=1 Цикл
ТЗПриёмник.НоваяСтрока();
Сообщить("Новая строка "+" № группировки "+ПеремНомерГруппировки);
Для счКолонок=1 по ИТЗИсточник.КоличествоКолонок() Цикл
учитьЗначение(,счКолонок));
Если ИТЗИсточник.ИмяКолонки(счКолонок)="НомерГруппировки" Тогда
ировки);
КонецЕсли;
КонецЦикла;

ПеремНомерГруппировкиДляСледующегоУровняРекурсии=ПеремНомерГруппировки;

Если ИТЗИсточник.НомерКолонки("тзПотомки")>0 Тогда
Если ТипЗначенияСтр(ИТЗИсточник.тзПотомки)="ИндексированнаяТаблица" Тогда
Сообщить("Есть индексированная таблица");
Если ИТЗИсточник.НомерКолонки("__ЭтоГруппа__")>0 Тогда
Если ИТЗИсточник.__ЭтоГруппа__<>1 Тогда
егоУровняРекурсии+1;
Сообщить("1.Увеличиваю номер группировки до "+ПеремНомерГруппировкиДляСледующегоУровняРекурсии);
ТЗПриёмник.УдалитьСтроку(ТЗПриёмник.КоличествоСтрок());
КонецЕсли;
Иначе
егоУровняРекурсии+1;
Сообщить("2.Увеличиваю номер группировки до "+ПеремНомерГруппировкиДляСледующегоУровняРекурсии);
ТЗПриёмник.УдалитьСтроку(ТЗПриёмник.КоличествоСтрок());
КонецЕсли;
Сообщить("Вызываю рекурсию: "+" № группировки след.уровня "+ПеремНомерГруппировкиДляСледующегоУровняРекурсии);
рГруппировкиДляСледующегоУровняРекурсии);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры	 



Но мне для получения нужной мне структуры нужно чтобы в строке 1 уровня в ИТЗ тзПотомки шла группировка

"Группа первого уровня" - "Склад 1"
"Группа первого уровня" - "Склад 2"
"Группа первого уровня" - "Склад 3"

а уже в ИТЗ тзПотомки этих строк была группировка
"Группа второго уровня" - "Склад 1"
"Группа второго уровня" - "Склад 2"
"Группа второго уровня" - "Склад 3"

у меня же получается что в строке 1 уровня в ИТЗ тзПотомки идёт группировка
"Группа второго уровня"
"Группа второго уровня"
"Группа второго уровня"

и лишь на последнем уровне иерархии справочника идёт группировка
"Элемент третьего уровня" - "Склад 1"
"Элемент третьего уровня" - "Склад 2"
"Элемент третьего уровня" - "Склад 3"
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #9 - 18. Ноября 2008 :: 10:53
Печать  
Looking писал(а) 18. Ноября 2008 :: 10:44:
Цитата:
Ну так добавь их Улыбка

то есть нужно добавить Группы с уже просуммированными значениями нужных мне показателей?

Нет. Нужно просто добавить группы. С нулевыми значениями нужных тебе показателей.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #10 - 18. Ноября 2008 :: 10:54
Печать  
Looking писал(а) 18. Ноября 2008 :: 10:44:
то же самое можно сделать в обычной ТЗ.

"То же самое" можно сделать даже без стандартной ТЗ. С помощью только списков значений.
Вопрос в трудозатратах. С ИТ получится несколько быстрее.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #11 - 18. Ноября 2008 :: 10:55
Печать  
Looking писал(а) 18. Ноября 2008 :: 10:52:
Цитата:
Только читай доку внимательнее, после группировки все нижестоящие группировки находятся в спец.колонке тзПотомки - это спец.ИТЗ.


1. этот момент я знаю, чтобы "развернуть"  тзПотомки в одну ИТЗ использую Процедуру

2. Но мне для получения нужной мне структуры нужно чтобы

1. Не могу проверить правильность этого кода Печаль сам решай, верен он или нет.
Проверь тзПотомки без этого кода и убедись в правильности/неправильности 1С++ Улыбка

2. Не понял эту фразу
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #12 - 18. Ноября 2008 :: 10:56
Печать  
artbear писал(а) 18. Ноября 2008 :: 10:37:
PS Федор, ты не прав.

Скажем мягче: я тоже прав.

По мне, так метод Группировать можно использовать только в самых простых случаях. Поскольку этот метод добавляет много ненужной сложности.
  
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #13 - 18. Ноября 2008 :: 10:59
Печать  
Федор, а как ты в ДБФ в запросе добавляешь всех вышестоящих родителей?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ Суммы по группам справочников
Ответ #14 - 18. Ноября 2008 :: 11:05
Печать  
fez писал(а) 18. Ноября 2008 :: 10:56:
artbear писал(а) 18. Ноября 2008 :: 10:37:
PS Федор, ты не прав.

Скажем мягче: я тоже прав.

По мне, так метод Группировать можно использовать только в самых простых случаях. Поскольку этот метод добавляет много ненужной сложности.

Скажем мягче: Улыбка немного сложности, которая во многих случаях группировки полезна !

Естественно, для сложных обработок универсальный код сложно написать, и Группировать не исключение.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать