Имя: Пароль:
1C
1C 7.7
v7: Для чего необходима группировка в запросе
0 Kapystin
 
09.09.14
18:14
Добрый вечер народ!

я новичок!
в гугле естессно искал информацию, но ... так и не понял!

расскажите простыми словами необходимость ГРУППИРОВОК в запросе?

Если я пишу запрос и указываю группировать по АГЕНТАМ я также получаю инфу по КПК и Количеству, НО не по по ТекДок!
Для того чтобы получить ТекДок нужно по нему группировать!!!

не пойму почему для КПК не нужно создавать ГРУППИРОВКУ а для ТекДок нужно.



    Дата1 = '01.01.10';
    Дата2 = ПолучитьТА();
    ТекстЗапроса = "
    |Период С Дата1 По Дата2;
    |КПК                 =     Регистр.ОстаткиКПК.КПК;
    |Количество         =     Регистр.ОстаткиКПК.ОстаткиКоличество;
    |Агент                 =     Регистр.ОстаткиКПК.Агент;
    |ТекДок             =     Регистр.ОстаткиКПК.ТекущийДокумент;
//  |Функция НачОст =         НачОст(ОстаткиКПК);
    |Функция КО =             КонОст(Количество);
    |Функция ПР =              Приход(Количество);
//    |Функция Расход =          Расход(Количество);
//    |Функция НО =              НачОст(Количество);
//  |Группировка Все;  
    |Группировка Агент;
    |Группировка ТекДок;
    |
    |
    |";
    
    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
        Возврат;
    КонецЕсли;
    
  ТЗ = СоздатьОбъект("ТаблицаЗначений");
  Запрос.Выгрузить(ТЗ, 1);
  ТЗ.ВыбратьСтроку();  
    
    НомСтроки = 0;
    Пока Запрос.Группировка("Агент") = 1 Цикл
        Пока Запрос.Группировка("ТекДок") = 1 Цикл
            
        
        КпкИмеиТаб = Запрос.КПК;
        АгентТаб = Запрос.Агент;
        МодельКпкТаб = КпкИмеиТаб.МаркаКПК;
        ТекДокТаб = Запрос.ТекДок;  
        
            НомСтроки = НомСтроки +1;  
        Таблица.ВывестиСекцию("Строка1");
      КонецЦикла;
    КонецЦикла;
    Таблица.ТолькоПросмотр(1);
    Таблица.Показать();
1 Ювелир
 
09.09.14
18:26
(0). Есть же примеры. Посмотри. с группировкой - без группировки. Сам сделай пример. Лучше один раз увидеть...
2 Ювелир
 
09.09.14
18:29
(0) А так ответ-то группировка нужна, чтобы сгруппировать значения по определенному полю(лям).  Это может быть нужно чтобы посчитать количество категорий, количество в категории, сумму по категории, максимум по категории, ну и т.д.
3 Ювелир
 
09.09.14
18:30
(0) Вопрос исчерпан?
4 Kapystin
 
09.09.14
18:33
честно нет.))
вот я выложил код, если не сложно расскажи на моем примере.
если я убираю ГРУППИРОВКУ по ТекДок, то я и не получи инфу в отчете!
но я ведь не ставлю Группировку по КПК а в отчет инфа(по кпк) попадает.

ну как так то?
5 Злопчинский
 
09.09.14
18:38
(4)
1. Пиши кратко и ясно.
2. уважай язык общения - телпатов тут нет а излишне безвозмездно твой поток сознания расшифровывать никто не обязан.
3. Что ты хочешь посчитать в рамках одного ТекущегоДокумента?
6 Kapystin
 
09.09.14
18:46
Код приложил выше.

3. необходимо получить наименование док в отчете

если не создаю группировку по ТекДок(в моем коде, который приложен выше), то в отчете данных не получаю.

Группировку по КПК не создаю, но в отчете информация появляется!

и вот вопрос!
почему для получения одних данных в отчет нужна ГРУППИРОВКА, а для некоторых НЕТ?
7 Ювелир
 
09.09.14
18:50
(4) По постановке тебе не нужна группировка, что ты от нас хочешь?
(5) Вот, присоединяюсь, по всем пунктам.

Немного юмора: "Наташа Ростова хотела что-то сказать, но открывшаяся дверь закрыла ей рот."

То же у тебя с группировками как в этом опусе (что с Наташей).
8 Ювелир
 
09.09.14
18:50
)))
9 Злопчинский
 
09.09.14
18:52
(6) "наименование док" - это ты сильно выступил, но насколко я понял - тебе нужно получить документ для чего? - посчитать итоговую сумму по документу? перечень КПК в документе?
.
ТекущийДокумент в регистре - это "атрибут" _движения_ регистра.
.
КонОст для ТекущегоДокумента - не работает
.
сделай после выполнения запроса:
ТЗ = "";
Запрос.Выгрузить(почитайпромараметры) - потом посмотри ТЗ в вариантах двух группировок и одной группировки
10 Kapystin
 
09.09.14
19:06
видимо не мой день)))
свою задачку я выполнил, просто хотел разобраться в тонкостях.

Всем спасибо и за критику, без нее нет прогресса(в моем случае шажка).
11 Ювелир
 
09.09.14
19:16
Хм. В твоем случае - это чистой воды ситуация.

"Если я пишу запрос и указываю группировать по АГЕНТАМ я также получаю инфу по КПК и Количеству, НО не по по ТекДок!
Для того чтобы получить ТекДок нужно по нему группировать!!!

не пойму почему для КПК не нужно создавать ГРУППИРОВКУ а для ТекДок нужно. "

группировка - укрупнение данных. При группировке по любому полю мелкость остальных полей - не измерений, снижается. И как бы тот эффект - для тех надо - для тех не надо - зависит чисто от фактического наполнения твоей базы. Чтобы не потерять масштаб нужно группировать по всем полям являющимся измерением. Как то так.
12 Kapystin
 
09.09.14
19:26
От души спасибо!
+ крупинка в мое понимание
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.