|
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
|
Среди предопределенных группировок, используемых в языке запросов, группировки по движению регистра - нету.
Если тебе нужно по каждому движению получить данные - откажись от запроса и работай с объектом "Регистр" (см.методы "УстановитьФильтр", "ВыбратьДвижения", "ПолучитьДвижение" и атрибуты "Приход","Расход"). При грамотном использовании фильтров такая работа будет даже быстрее запроса (доп.бонус - возможность развлекать юзера строкой состояния). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |