Имя: Пароль:
1C
1С v8
Запросы и группировки..
0 Lesha1C
 
15.05.12
15:01
написал запрос, но после в выборке нужно в первой группировке чтобы создался документ, а во второй заолнилась его табличная часть..
но получается так что создаются три документа..группировка на первом уровне не срабатывает по клиента...подскажи в чем причина...

   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    РегистрСведенийДляОбзвона.Клиент КАК Клиент,
       |    РегистрСведенийДляОбзвона.ДокументОбзвона КАК ДокументОбзвона,
       |    Звонки.СтатусЗвонка,
       |    РегистрСведенийДляОбзвона.ТранспортноеСредство
       |ИЗ
       |    РегистрСведений.ДляОбзвона КАК РегистрСведенийДляОбзвона
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Звонки КАК Звонки
       |        ПО РегистрСведенийДляОбзвона.ДокументОбзвона = Звонки.ДокументОбзвона
       |ГДЕ
       |    Звонки.СтатусЗвонка ЕСТЬ NULL
       |    И РегистрСведенийДляОбзвона.ТранспортноеСредство = &ТранспортноеСредство
       |    И РегистрСведенийДляОбзвона.Клиент = &Клиент
       |
       |СГРУППИРОВАТЬ ПО
       |    РегистрСведенийДляОбзвона.Клиент,
       |    РегистрСведенийДляОбзвона.ДокументОбзвона,
       |    РегистрСведенийДляОбзвона.ТранспортноеСредство,
       |    Звонки.СтатусЗвонка";

   Запрос.УстановитьПараметр("ТранспортноеСредство", ТранспортноеСредство);
   Запрос.УстановитьПараметр("Клиент", Клиент);


   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       //Создаем документ
       НовыйДокумент = Документы.CRM_ТелефонныйЗвонок.СоздатьДокумент();
       НовыйДокумент.Дата = ТекущаяДата();
       НовыйДокумент.СтатусЗвонка=Перечисления.СтатусЗвонка.вработе;
       НовыйДокумент.ТипЗвонка=Перечисления.ТипЗвонка.исходящий;
       НовыйДокумент.Клиент=ВыборкаДетальныеЗаписи.Клиент;
       НовыйДокумент.ТранспортноеСредство=ВыборкаДетальныеЗаписи.ТранспортноеСредство;
       ПоДоку=ВыборкаДетальныеЗаписи.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
       
       Пока ПоДоку.Следующий() Цикл
           //заполним заказ нарядами табличную часть
           новаяСтрока=НовыйДокумент.ДокументыОбзвона.Добавить();
           новаяСтрока.ДокументОбзвона=ПоДоку.ДокументОбзвона;
       КонецЦикла;  
        НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);

   КонецЦикла;
1 hhhh
 
15.05.12
15:10
(0) ты не поверишь, группировки в запросе называются словом "ИТОГИ".
2 Lesha1C
 
15.05.12
15:29
вау...спасибо огромное..получилось!!!!=)

тогда зачем же там
       
|СГРУППИРОВАТЬ ПО
       |    РегистрСведенийДляОбзвона.Клиент,
       |    РегистрСведенийДляОбзвона.ДокументОбзвона,
       |    РегистрСведенийДляОбзвона.ТранспортноеСредство,
       |    Звонки.СтатусЗвонка";
3 proger2011
 
15.05.12
15:33
(2) Мдя... Ойтишники.... А зачем в SQL Group by?
4 Defender aka LINN
 
15.05.12
15:33
(2) В данном конкретном случае - низачем.
Независимо от того, куда вы едете — это в гору и против ветра!