Имя: Пароль:
1C
1C 7.7
v7: Помогите переделать запрос
,
0 DeMi4
 
01.02.12
09:50
Есть запрос но он суммирует записи а надо чтобы выводил все


Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |ИсхНомер = Регистр.Вызовы.ИсхНомер;
   |Адресат = Регистр.Вызовы.Адресат;
   |ДатаВызова = Регистр.Вызовы.ДатаВызова;
   |ВремяВызова = Регистр.Вызовы.ВремяВызова;
   |Тариф = Регистр.Вызовы.Тариф;
   |Продолжительность = Регистр.Вызовы.Продолжительность;
   |Сумма = Регистр.Вызовы.Сумма;
   |Функция СуммаПриход = Приход(Сумма);
   |Функция ПродолжительностьПриход = Приход(Продолжительность);
   |Группировка ДатаВызова;
   |Группировка ИсхНомер;    
   |Группировка ВремяВызова;
   |Группировка Адресат;
   |Условие(ИсхНомер в ВыбНомер);
   |"//}}ЗАПРОС
1 povar
 
01.02.12
09:51
все
2 1Сергей
 
01.02.12
09:52
мде...
3 DeMi4
 
01.02.12
09:53
что все
4 povar
 
01.02.12
09:54
(3) все, приехали...
5 DeMi4
 
01.02.12
09:54
Перем Запрос, ТекстЗапроса;
   //Создание объекта типа Запрос
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |ИсхНомер = Регистр.Вызовы.ИсхНомер;
   |Адресат = Регистр.Вызовы.Адресат;
   |ДатаВызова = Регистр.Вызовы.ДатаВызова;
   |ВремяВызова = Регистр.Вызовы.ВремяВызова;
   |Тариф = Регистр.Вызовы.Тариф;
   |Продолжительность = Регистр.Вызовы.Продолжительность;
   |Сумма = Регистр.Вызовы.Сумма;
   |Функция СуммаПриход = Приход(Сумма);
   |Функция ПродолжительностьПриход = Приход(Продолжительность);
   |Группировка ДатаВызова;
   |Группировка ИсхНомер;    
   |Группировка ВремяВызова;
   |Группировка Адресат;
   |Условие(ИсхНомер в ВыбНомер);
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;

   Таб=СоздатьОбъект("Таблица");
//    Таб.ИсходящаяТаблица("Таблица");
   Таб.ВывестиСекцию("Шапка");
   ВсегоПродолж=0;
   ВсегоСумма=0;
   Для Ном=1 По ВыбНомер.РазмерСписка() Цикл
       ИтогоПродолж=0;
       ИтогоСумма=0;
       Пока Запрос.Группировка(1) = 1 Цикл
           Пока Запрос.Группировка(2) = 1 Цикл
               //Пока Запрос.Группировка(3) = 1 Цикл
                   Пока Запрос.Группировка(4) = 1 Цикл
                       Если Запрос.ИсхНомер.Родитель<>ВыбНомер.ПолучитьЗначение(Ном) Тогда Продолжить; КонецЕсли;
                       ПечДата=Запрос.ДатаВызова;
                       ПечВремя=Запрос.ВремяВызова;
                       ПечПродолжительность=Запрос.ПродолжительностьПриход;
                       ПечНомер=Запрос.ИсхНомер.Номер;
                       ПечНаправление=Запрос.Адресат;
                       ПечСумма=Запрос.СуммаПриход;
                       Направление=Запрос.Тариф;
                       ИтогоПродолж=ИтогоПродолж+Запрос.ПродолжительностьПриход;
                       ИтогоСумма=ИтогоСумма+Запрос.СуммаПриход;
                       Таб.ВывестиСекцию("Строка");
                   КонецЦикла;
               //КонецЦикла;
           КонецЦикла;
       КонецЦикла;
       ВсегоПродолж=ВсегоПродолж+ИтогоПродолж;
       ВсегоСумма=ВсегоСумма+ИтогоСумма;
       Группа=ВыбНомер.ПолучитьЗначение(Ном);
       //Если ИтогоСумма=0 Тогда Продолжить; КонецЕсли;
       Таб.ВывестиСекцию("Итого");
   КонецЦикла;
   Таб.ВывестиСекцию("Всего");
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Отчет по подразделениям");
6 DeMi4
 
01.02.12
09:55
Перем Запрос, ТекстЗапроса;
   //Создание объекта типа Запрос
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |ИсхНомер = Регистр.Вызовы.ИсхНомер;
   |Адресат = Регистр.Вызовы.Адресат;
   |ДатаВызова = Регистр.Вызовы.ДатаВызова;
   |ВремяВызова = Регистр.Вызовы.ВремяВызова;
   |Тариф = Регистр.Вызовы.Тариф;
   |Продолжительность = Регистр.Вызовы.Продолжительность;
   |Сумма = Регистр.Вызовы.Сумма;
   |Функция СуммаПриход = Приход(Сумма);
   |Функция ПродолжительностьПриход = Приход(Продолжительность);
   |Группировка ДатаВызова;
   |Группировка ИсхНомер;    
   |Группировка ВремяВызова;
   |Группировка Адресат;
   |Условие(ИсхНомер в ВыбНомер);
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;

   Таб=СоздатьОбъект("Таблица");
//    Таб.ИсходящаяТаблица("Таблица");
   Таб.ВывестиСекцию("Шапка");
   ВсегоПродолж=0;
   ВсегоСумма=0;
   Для Ном=1 По ВыбНомер.РазмерСписка() Цикл
       ИтогоПродолж=0;
       ИтогоСумма=0;
       Пока Запрос.Группировка(1) = 1 Цикл
           Пока Запрос.Группировка(2) = 1 Цикл
               Пока Запрос.Группировка(3) = 1 Цикл
                   Пока Запрос.Группировка(4) = 1 Цикл
                       Если Запрос.ИсхНомер.Родитель<>ВыбНомер.ПолучитьЗначение(Ном) Тогда Продолжить; КонецЕсли;
                       ПечДата=Запрос.ДатаВызова;
                       ПечВремя=Запрос.ВремяВызова;
                       ПечПродолжительность=Запрос.ПродолжительностьПриход;
                       ПечНомер=Запрос.ИсхНомер.Номер;
                       ПечНаправление=Запрос.Адресат;
                       ПечСумма=Запрос.СуммаПриход;
                       Направление=Запрос.Тариф;
                       ИтогоПродолж=ИтогоПродолж+Запрос.ПродолжительностьПриход;
                       ИтогоСумма=ИтогоСумма+Запрос.СуммаПриход;
                       Таб.ВывестиСекцию("Строка");
                   КонецЦикла;
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
       ВсегоПродолж=ВсегоПродолж+ИтогоПродолж;
       ВсегоСумма=ВсегоСумма+ИтогоСумма;
       Группа=ВыбНомер.ПолучитьЗначение(Ном);
       //Если ИтогоСумма=0 Тогда Продолжить; КонецЕсли;
       Таб.ВывестиСекцию("Итого");
   КонецЦикла;
   Таб.ВывестиСекцию("Всего");
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Отчет по подразделениям");
7 DeMi4
 
01.02.12
10:08
Добавление все толку не дало
8 DeMi4
 
01.02.12
10:08
Единственное может ставил не туда
9 DeMi4
 
01.02.12
11:09
Как сделать чтобы группровка не группировала
10 KishMish
 
01.02.12
11:11
(9) не группируй группировкой
11 DeMi4
 
01.02.12
11:13
Блин тогда не корректные значения
12 KishMish
 
01.02.12
11:14
(11) откорректируй на этапе вывода на печать
13 Simod
 
01.02.12
11:15
(0) Нет данных о структуре регистра.
После

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
КонецЕсли;

Добавь

тз_Запрос = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(тз_Запрос);
тз_Запрос.ВыбратьСтроку();

и посмотри что у тебя там получилось.
14 DeMi4
 
01.02.12
11:26
Посмотрел такая же группировка получилась. ну или что я там должен увидеть
15 Ёпрст
 
01.02.12
11:59
(0) а че хотел то от запроса ?
ЗЫ: что попросил - то он и выдал, никакого чуда
16 Morphius
 
01.02.12
12:17
(0)Убери все группировки, оставь только "Группировка СтрокаДокумента"
17 ЧеловекДуши
 
01.02.12
12:20
Однозначно, ДНК :)

Автор, а регистор то какой, либо остаток, либо оборот?
Какие есть измерения, ресурсы, реквизиты?
Опиши нам их, или сделай скрин :)
18 Morphius
 
01.02.12
12:22
(17) Регистр остатков, ибо в запросе функция "Приход"
19 ЧеловекДуши
 
01.02.12
12:22
+ (6) А это что "Для Ном=1 По ВыбНомер.РазмерСписка() Цикл" ?

Зачем нн-ое раз пытаться вывести отчет?
20 ЧеловекДуши
 
01.02.12
12:22
(18)А остальное?
21 Morphius
 
01.02.12
12:23
А+(18) а по логике должен быть оборотный...
22 ЧеловекДуши
 
01.02.12
12:23
+ Хотя все это в (17) неважно, автор не знает, что хочет от запроса :)
23 Morphius
 
01.02.12
12:25
(20) А зачем? Насколько я понял, человеку требуется обойти детальные записи, если я правильно его понял
24 ЧеловекДуши
 
01.02.12
12:27
(23)А для чего?
Может все дело в том, что регистр так настроен, что некогда не даст нужный, автору, результат.
Мы же не знаем его структуру. :)
И автор так и не соизволил объяснить, Зачем это? :)
Мы тут сидим и в телепатов играем :)
25 Cthulhu
 
01.02.12
13:03
Среди предопределенных группировок, используемых в языке запросов, группировки по движению регистра - нету.
Если тебе нужно по каждому движению получить данные - откажись от запроса и работай с объектом "Регистр" (см.методы "УстановитьФильтр", "ВыбратьДвижения", "ПолучитьДвижение" и атрибуты "Приход","Расход"). При грамотном использовании фильтров такая работа будет даже быстрее запроса (доп.бонус - возможность развлекать юзера строкой состояния).