Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема вопросы по ИндексированнаяТаблица (число прочтений - 3922 )
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
вопросы по ИндексированнаяТаблица
27. Декабря 2007 :: 08:52
Печать  
структура таблицы:
группа                  ;товар            ;      количество

данные:
группа1                  ;                  ;

подгруппа1            ;группа1      ; 
подгруппа1            ;товар1            ;  10
подгруппа1            ;товар2            ;  20
подгруппа2            ;группа1      ; 
подгруппа2            ;товар3            ;  1
подгруппа2            ;товар4            ;  2

возможно ли сгруппировать таблицу так чтобы
получить:

группа                  ;товар            ;      количество
группа1                  ;                  ;  33
подгруппа1            ;группа1      ;  30
подгруппа2            ;группа1      ;  3

тоесть суммирование с учетом иерархии?
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: вопросы по ИндексированнаяТаблица
Ответ #1 - 27. Декабря 2007 :: 09:44
Печать  
Поставим вопрос по другому:
Цитата:
Если в таблице есть колонка с именем '<ИмяКолонкиСправочника>_Родитель', то родитель для элемента будет браться из этой колонки - это уменьшает количество обращений к базе, и заметно увеличивает производительность. Итоговая таблица будет организована в виде дерева, в точности повторяющего структуру справочника. Следующий уровень группировки располагается в листьях этого дерева (т.е. в строках, не являющихся группами). Для удобства работы с полученным деревом в таблицу добавляется колонка '__ЭтоГруппа__', в которую записывается 1 для всех групп, и ПустоеЗначение для элементов. Также добавляется колонка '__Уровень__', которая заполняется значением уровня групп справочника (нумерация начинается с 1). Для элементов в колонку '__Уровень__' записывается ПустоеЗначение.


Можно пример в студию...
  
Наверх
 
IP записан
 
phsin
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 27. Декабря 2007
Re: вопросы по ИндексированнаяТаблица
Ответ #2 - 27. Декабря 2007 :: 12:48
Печать  
У меня тоже вопрос по ИндексированнаяТаблица:
Пытаюсь объединить со 2й Индексированной таблицей (индексы одинаковы = Номенклатура, уникальный), но почему-то вся вторая таблица добавляется в конец????
Код:

[code]      ТЗ=СоздатьОбъект("ИндексированнаяТаблица");
     Тз.НоваяКолонка("Номенклатура_Родитель");
     Тз.НоваяКолонка("Номенклатура");
     Тз.НоваяКолонка("Выручка");
     Тз.НоваяКолонка("КоличествоПродали");
           
     Пока Запрос.Группировка("Номенклатура")=1 Цикл  
           
        ТЗ.НоваяСтрока();
       ТЗ.Номенклатура = Запрос.Номенклатура;  
       ТЗ.Номенклатура_Родитель = Запрос.Номенклатура.Родитель;
       Колво = Запрос.Количество-Запрос.КоличествоВозврат;
       ТЗ.Выручка = Запрос.Выручка - Запрос.ВыручкаВозврат;
       ТЗ.КоличествоПродали = Колво;
     КонецЦикла;

     Док = СоздатьОбъект("Документ.ПланПродажМенеджера");
     Док.ВыбратьДокументы();
     Пока Док.ПолучитьДокумент() = 1 Цикл
           Если Док.Менеджер = ВыбМенеджер Тогда
                 ТЗплан = СоздатьОбъект("ИндексированнаяТаблица");
                 ТЗплан.Загрузить(Док);
                 ТЗ.ДобавитьИндекс("Номенклатура", "Номенклатура",1);                  КонецЕсли;
     КонецЦикла;
     
     ТЗплан.ДобавитьИндекс("Номенклатура", "Номенклатура",1);                      
     ТЗплан.УдалитьКолонку(1); //номер строки
     ТЗ.Объединить(ТЗплан,2);
[/code]

ТЗ1 =
товар1  колво1
товар2   колво2

ТЗ2 =
товар1  колво3
товар2   колво4

Получаем:
товар1  колво1
товар2   колво2
товар1  колво3
товар2   колво4

Почему? что я сделал неправильно?

/me [i]map.samtel.ru[/i]
  
Наверх
 
IP записан
 
phsin
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 27. Декабря 2007
Re: вопросы по ИндексированнаяТаблица
Ответ #3 - 27. Декабря 2007 :: 14:44
Печать  
Еще один вопрос - пытаюсь Сгруппировать по группам справочника Номенклатура
ТЗ:ИндексированнаяТаблица
Номенклатура_Родитель
Номенклатура
Колво

Код
Выбрать все
	ТЗ.Группировать("Номенклатура_Родитель: Номенклатура_Родитель&; Номенклатура: Номенклатура","ПланКоличество,ПланЦена,ПланСумма, КоличествоПродали, Выручка");

 



выводит:
Группа1
     Группа11
     Группа12
     Группа13
     ....

хотелось бы:
Группа1
     Группа11
           товар111
           Товар112
           ...
     Группа12
           товар121
           Товар122
           ...
     Группа13
     ....

Как это можно сделать, подскажите пожалуйста.
Очень бы хотелось посмотреть на пример реализации.

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


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: вопросы по ИндексированнаяТаблица
Ответ #4 - 27. Декабря 2007 :: 15:43
Печать  
А куда по вашему она должна добавляться?
Тем более что после объединения их нену сгрупировать и все
  
Наверх
 
IP записан
 
phsin
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 27. Декабря 2007
Re: вопросы по ИндексированнаяТаблица
Ответ #5 - 27. Декабря 2007 :: 16:52
Печать  
я всегда думал что объединение происходит по определнному полю, т.е. если в ТЗ1 есть товар1 то реквизиты строки в ТЗ2 с таким же полем товар1 присоединятся к ТЗ1,
если такого поля в ТЗ1 нет, значит добавиться новая строка

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


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: вопросы по ИндексированнаяТаблица
Ответ #6 - 27. Декабря 2007 :: 18:23
Печать  
kriblya писал(а) 27. Декабря 2007 :: 08:52:
структура таблицы:
группа                  ;товар            ;      количество

данные:
группа1                  ;                  ;

подгруппа1            ;группа1      ;  
подгруппа1            ;товар1            ;  10
подгруппа1            ;товар2            ;  20
подгруппа2            ;группа1      ;  
подгруппа2            ;товар3            ;  1
подгруппа2            ;товар4            ;  2

возможно ли сгруппировать таблицу так чтобы
получить:

группа                  ;товар            ;      количество
группа1                  ;                  ;  33
подгруппа1            ;группа1      ;  30
подгруппа2            ;группа1      ;  3

тоесть суммирование с учетом иерархии?


Колонку "Группа" убираешь, строки с нулевыми количествами убираешь.
После этого делаешь .Группировать("&Товар", "Количество")

Всё.
  
Наверх
www  
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: вопросы по ИндексированнаяТаблица
Ответ #7 - 27. Декабря 2007 :: 20:28
Печать  
1. тоесть ит сама поймет, что в колонке товар элементы номенклатуры?
2. доп поле период тоды .Группировать("&Товар;период", "Количество") ?
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: вопросы по ИндексированнаяТаблица
Ответ #8 - 28. Декабря 2007 :: 09:17
Печать  
kriblya писал(а) 27. Декабря 2007 :: 20:28:
1. тоесть ит сама поймет, что в колонке товар элементы номенклатуры?

Да. RTFM на метод Группировать().

kriblya писал(а) 27. Декабря 2007 :: 20:28:
2. доп поле период тоды .Группировать("&Товар;период", "Количество") ?

Да.

Если не нужна сортировка по товарам, то для увеличения скорости можно написать  .Группировать("&*Товар;период", "Количество")
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: вопросы по ИндексированнаяТаблица
Ответ #9 - 28. Декабря 2007 :: 09:21
Печать  
[quote author=phsin link=1198745575/0#2 date=1198759681]У меня тоже вопрос по ИндексированнаяТаблица:
Пытаюсь объединить со 2й Индексированной таблицей (индексы одинаковы = Номенклатура, уникальный), но почему-то вся вторая таблица добавляется в конец????
[/quote]
Уникальность индекса не препятствует добавлению строк с повторяющимся значением индекса.
Индекс нужен для поиска. Не уверен точно, но предполагаю, что если ты сначала обеспечил уникальность значений, то построение именно уникального индекса может немного ускорить поиск.

А вообще знающие люди подозревают, что уникальные индексы вообще не нужны.
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать