Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Группировать (Индексированная таблица) (число прочтений - 7361 )
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Группировать (Индексированная таблица)
30. Декабря 2008 :: 09:19
Печать  
Привет. Начинаю работать с ней. Есть вопрос.
У меня в результате запроса в ТЗ есть элементы спр. Номенклатура. Я хочу чтобы мне ИТЗ подсчитала и добавила группы номенклатуры. Делаю так:

ИТЗ.Загрузить(ТЗ);
ИТЗ.Группировать("Номенклатура:&Номенклатура","ШтКол",1);  

Потом чтобы проверить делаю Выбрать строку() . В итоге у меня получается одна строка с самой верхней группой справочника. Хотя элменты находятся ниже (есть 2 группы перед самой верхней группой) и элементы не выводит. Если убираю &, то выводит только элементы. Как можно сделать так, чтобы выводил все группы и их элементы? Смотрел в описании к ИТЗ, там не нашел.
Также тут http://infostart.ru/blogs/193/?clear_cache=Y .
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: Группировать (Индексированная таблица)
Ответ #1 - 30. Декабря 2008 :: 09:37
Печать  
читай доку
http://www.1cpp.ru/docum/icpp/html/IndexedTable.html#group

группируем её:

ТЗ.Группировать("Фамилия: Фамилия; Имя: Имя", "Сумма");

и получаем таблицу такого вида (в колонке тзПотомки показано содержимое таблицы тзПотомки):
  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #2 - 30. Декабря 2008 :: 09:43
Печать  
А, т.е вся структура находится во вложенных колонках ТЗПотомки?
Т.е у меня не будет одной таблицы вида?

Группа 1         10
  Группа2         5
    Элемент1     2
    Элемент2     3
  Группа3         10
   Элемент3      10
  
Наверх
 
IP записан
 
noxxx
Full Member
***
Отсутствует


1c++ rocks 8)

Сообщений: 239
Местоположение: Москва
Зарегистрирован: 24. Августа 2007
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #3 - 30. Декабря 2008 :: 09:54
Печать  
sanches писал(а) 30. Декабря 2008 :: 09:43:
А, т.е вся структура находится во вложенных колонках ТЗПотомки?
Т.е у меня не будет одной таблицы вида?

Группа 1         10
 Группа2         5
   Элемент1     2
   Элемент2     3
 Группа3         10
  Элемент3      10


Судя по всему не будет. Я делал вывод рекурсивной функцией самописной.
  
Наверх
ICQ  
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #4 - 30. Декабря 2008 :: 10:24
Печать  
Ясно. Видимо я пока плохо понимаю для чего так сделано. Буду разбираться. Спасибо
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Группировать (Индексированная таблица)
Ответ #5 - 31. Декабря 2008 :: 10:08
Печать  
Не забывай про модификатор * - без него большие тормоза - для каждой строки идет запрос к базе.
См например http://www.1cpp.ru/forum/YaBB.pl?num=1196866345/0

Код
Выбрать все
ИТЗ.Группировать("Номенклатура:*&Номенклатура","ШтКол",1);  

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


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #6 - 05. Января 2009 :: 11:00
Печать  
kiruha писал(а) 31. Декабря 2008 :: 10:08:
Не забывай про модификатор * - без него большие тормоза - для каждой строки идет запрос к базе.
См например http://www.1cpp.ru/forum/YaBB.pl?num=1196866345/0

Код
Выбрать все
ИТЗ.Группировать("Номенклатура:*&Номенклатура","ШтКол",1);  


Спасибо
  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #7 - 05. Января 2009 :: 12:20
Печать  
Привет.
Вот код:

Код
Выбрать все
ИТЗ.Группировать("Номенклатура:*&Номенклатура","ШтКол",1);

Процедура ВывестиГруппировку(ИТЗ, Ном)
Если ИТЗ.НомерКолонки("Контрагент_Родитель") > 0 Тогда
	НазваниеГруппировки = "Контрагент";
	ЕстьГруппы = 1;
Иначе
	НазваниеГруппировки = СписокГруппировок.ПолучитьЗначение(Ном);
КонецЕсли;

ИТЗ.ВыбратьСтроки();
Пока ИТЗ.ПолучитьСтроку()=1 Цикл
	ПечТекстСтроки = ИТЗ.ПолучитьЗначение(,НазваниеГруппировки);
	ТекРасшифровка = ПечТекстСтроки;

	НазваниеСекции = "Строка" + Ном;

	Прибавить = 1;
	Если ЕстьГруппы = 1 Тогда
		Если ИТЗ.__ЭтоГруппа__ = 1 Тогда
			НазваниеСекции = НазваниеСекции + "Г";
			Прибавить = 0;
		КонецЕсли;    
	КонецЕсли;

	Если ПустоеЗначение(ПечТекстСтроки) = 1 Тогда
		ПечТекстСтроки = "Не выбран";
	КонецЕсли;

	 //Тут ничего сложного, см. типовые отчеты
	ровка);

	Если ИТЗ.НомерКолонки("тзПотомки") > 0 Тогда
	     Если ПустоеЗначение(ИТЗ.тзПотомки) = 0 Тогда
			 ВывестиГруппировку(ИТЗ.тзПотомки, Ном + Прибавить);
	     КонецЕсли;
	КонецЕсли;
КонецЦикла;
КонецПроцедуры //ВывестиГруппировку() 




Делаю вывод отчета по примеру http://infostart.ru/blogs/193/?clear_cache=Y
У меня вопрос.  У меня тоже самое только Номенклатура. Когда он доходит до элементов, то в ИТЗ только колонки Номенклатура и ШтКол - функция. У меня соотв. вываливается с ошибкой в
Код
Выбрать все
Если ИТЗ.__ЭтоГруппа__ = 1 Тогда
	НазваниеСекции = НазваниеСекции + "Г";
	Прибавить = 0;
КонецЕсли; 


В описании написано что для элементов добавляется пусто, а у меня там вообще колонок нет. Что-то наверно не так делаю
Есть ли еще где-нибудь примеры по работе с ИТЗ?
« Последняя редакция: 06. Января 2009 :: 04:11 - sanches »  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #8 - 11. Января 2009 :: 06:23
Печать  
Люди, вы где?
Хватит пить уже  Смех
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Группировать (Индексированная таблица)
Ответ #9 - 12. Января 2009 :: 11:55
Печать  
sanches писал(а) 11. Января 2009 :: 06:23:
Люди, вы где?
Хватит пить уже  Смех


Приведи свой код в двух строках.
Первая - группировка, вторая строка - на которой ошибка.
  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #10 - 14. Января 2009 :: 08:13
Печать  
Вот такая ошибка вываливатеся когда доходит до элментов
Если ИТЗ.__ЭтоГруппа__ = 1 Тогда
: Поле агрегатного объекта не обнаружено (__ЭтоГруппа__)
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #11 - 14. Января 2009 :: 08:30
Печать  
Делай проверку на присутствие колонки "__ЭтоГруппа__".

Если колонка существует то
Если ИТЗ.__ЭтоГруппа__ = 1 Тогда
  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #12 - 14. Января 2009 :: 08:37
Печать  
Это понятно, просто может в примере что-то недопонял. Но там нет проверки. Спасибо. Буду проверку делать
  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #13 - 14. Января 2009 :: 08:57
Печать  
Подскажите пожалуйста. Как сделать сортировку по иерархии справочника?
Делаю Сортировать("Номенклатура*") , но не по иерархии сортирует
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Группировать (Индексированная таблица)
Ответ #14 - 14. Января 2009 :: 09:25
Печать  
пробная реализация такой сортировки:
http://www.1cpp.ru/forum/YaBB.pl?num=1210427348
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать