Имя: Пароль:
1C
1С v8
Вопрос по запросу с подсчетом количества документов
0 AnisaL
 
15.03.13
14:41
Добрый день! Имеется запрос:
запрос.Текст = "Выбрать рег.статус КАК статус, рег.Номер как Номер, Сумма(1) КАК КолВо из документ.ЗаявкаНаряд как рег где &Условие1 и &Условие2 и &Условие3 и &Условие4 и &Условие5 и &Условие6 СГРУППИРОВАТЬ ПО рег.Статус";
Выдает ошибку по группировке, как правильно написать такой запрос?
1 lxndr
 
15.03.13
14:42
рег.Номер добавь в группируемые поля
2 MSII
 
15.03.13
14:43
рег.Номер в группировку не попал
3 AnisaL
 
15.03.13
14:44
(1) а, то есть сначала по рег.номеру группировку сделать, а потом по статусу?
4 salvator
 
15.03.13
14:46
(0) "как правильно написать такой запрос?"
Пользоваться конструктором
5 AnisaL
 
15.03.13
14:48
(4) у меня условий много с заменой текста, вряд ли получится
6 cw014
 
15.03.13
14:50
(5) ВЫБРАТЬ КОЛИЧЕСТВО РАЗЛИЧНЫЕ(Ссылка) ИЗ Документ.ЗаявкаНаряд ГДЕ &Условие


А вот &Условие составляй текстом полностью, потом заменяй через СтрЗаменить
7 AnisaL
 
15.03.13
14:52
УРАА! Взлетело)) Спасибо, ребят:)))
8 AnisaL
 
15.03.13
14:57
(6) ну я почти так делаю ))
9 AnisaL
 
18.03.13
08:45
Доброе утро) Запрос работает, но возникла проблема с выводом результатов:
"Выбрать рег.статус КАК статус, рег.Номер как Номер, Сумма(1) КАК КолВо из документ.ЗаявкаНаряд как рег где &Условие1 и &Условие2 и &Условие3 и &Условие4 и &Условие5 и &Условие6 и &Условие7 и &Условие8 и &Условие9 СГРУППИРОВАТЬ ПО рег.Номер, рег.Статус";
Как правильно вывести КолВо по разным статусам?
10 Галахад
 
гуру
18.03.13
08:47
(9) Аниса, не усложняй. Сделай для каждого условия отдельный запрос.
11 Defender aka LINN
 
18.03.13
08:55
(3) Они не "с начала" и не с конца. Группировка делается по набору полей
12 AnisaL
 
18.03.13
08:56
(10) не могу, нужно все условия чтоб были
13 AnisaL
 
18.03.13
08:57
(10) а,  то есть для каждого статуса свой запрос, чтоб кол-во посчитать?
14 Галахад
 
гуру
18.03.13
09:04
(13) Ну да.
15 cw014
 
18.03.13
09:06
Я не понимаю вот эту конструкцию СГРУППИРОВАТЬ ПО рег.Номер

Если номер уникален у документа (допустим) то в результате в каждой записи поле КолВо будет равно 1?
16 cw014
 
18.03.13
09:07
(15) Если так, то "телепатирую"... Скорее всего ты берешь ТаблицаДоков.Итог("КолВо");

Делай как я тебе в (6) написал, да группируй по статусу. У тебя будет результат:

Статус        КолВо
Статус1       10
Статус2       15
Статус4       7
и т.д.
17 AnisaL
 
18.03.13
09:07
(15) без этой конструкции запрос не работает
18 cw014
 
18.03.13
09:09
(17) А ты выкинь поле "Номер" из запроса вообще
19 Галахад
 
гуру
18.03.13
09:09
Выбрать рег.статус КАК статус, Сумма(1) КАК КолВо из документ.ЗаявкаНаряд как рег где &Условие1 и &Условие2 и &Условие3 и &Условие4 и &Условие5 и &Условие6 и &Условие7 и &Условие8 и &Условие9 СГРУППИРОВАТЬ ПО рег.Статус
20 cw014
 
18.03.13
09:12
(19) ВЫБРАТЬ Статус, КОЛИЧЕСТВО РАЗЛИЧНЫЕ(Ссылка) КАК КолВо ИЗ Документ.ЗаявкаНаряд ГДЕ &Условие
21 cw014
 
18.03.13
09:12
(19) Упс, не так
22 cw014
 
18.03.13
09:12
ВЫБРАТЬ Статус, КОЛИЧЕСТВО РАЗЛИЧНЫЕ(Ссылка) КАК КолВо ИЗ Документ.ЗаявкаНаряд ГДЕ &Условие СГРУППИРОВАТЬ ПО Статус
23 AnisaL
 
18.03.13
09:13
(22) а номер заявки отдельно получать тогда? а этот запрос только для подсчета количества
24 AnisaL
 
18.03.13
09:14
(22) запрос работает) а с номером как быть тогда?
25 cw014
 
18.03.13
09:15
(24) А нафига он тебе?
26 cw014
 
18.03.13
09:16
(24)

ВЫБРАТЬ Статус, Номер, КОЛИЧЕСТВО РАЗЛИЧНЫЕ(Ссылка) КАК КолВо ИЗ Документ.ЗаявкаНаряд ГДЕ &Условие СГРУППИРОВАТЬ ПО Статус, Номер ИТОГИ КолВо ПО Статус
27 AnisaL
 
18.03.13
09:17
(25) это же журнал документов, чтоб вывести эти доки
28 cw014
 
18.03.13
09:18
(27) см (26)
29 AnisaL
 
18.03.13
09:21
(28) окей) щас попробую
30 cw014
 
18.03.13
09:21
(29) Только выборку после этого по группировкам делай. Или выгрузку в Дерево значений
31 AnisaL
 
18.03.13
09:22
(30) а как? что-то я пыталась, и у меня не получилось
32 cw014
 
18.03.13
09:46
(31)

1. Выборка:
Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка.Следующий() Цикл // 1 группировка
   ВыборкаДетали = Выборка.Выбрать();
   Пока ВыборкаДетали.Следующий() Цикл // 2 группировка
   КонецЦикла;
КонецЦикла;

2. Выгрузка в дерево:
ДеревоЗнч = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
33 AnisaL
 
18.03.13
09:54
{Документ.ЗаявкаНаряд.Форма.ФормаСписка1(127)}: Ошибка при вызове метода контекста (Выполнить): {(1, 64)}: Синтаксическая ошибка "РАЗЛИЧНЫЕ"
Выбрать рег.статус КАК статус, рег.Номер как Номер, КОЛИЧЕСТВО <<?>>РАЗЛИЧНЫЕ (рег.Ссылка) КАК КолВо из документ.ЗаявкаНаряд как рег где ИСТИНА и ИСТИНА и ИСТИНА и ИСТИНА и  рег.ДатаСоздания<=&ДатаКон и рег.ДатаСоздания>=&датаНач и ИСТИНА и ИСТИНА и ИСТИНА и ИСТИНА СГРУППИРОВАТЬ ПО Статус, Номер ИТОГИ КолВо ПО Статус
   списокСмет.ЗагрузитьЗначения(запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номер"));
34 cw014
 
18.03.13
09:56
(33) Попробуй: КОЛИЧЕСТВО (РАЗЛИЧНЫЕ Ссылка)
35 cw014
 
18.03.13
09:57
(33) Ну и вообще, посмотри синтаксис КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ...)

Я на мысль натолкнул, а корректный синтаксис сейчас посмотреть не могу - база обновляется
36 cw014
 
18.03.13
09:58
(33) Думай, пробуй...
37 AnisaL
 
18.03.13
09:59
(35) {Документ.ЗаявкаНаряд.Форма.ФормаСписка1(127)}: Ошибка при вызове метода контекста (Выполнить): {(1, 299)}: Поле итогов должно либо присутствовать в списке группировок итогов, либо находиться в агрегатной функции итога
Выбрать рег.статус КАК статус, рег.Номер как Номер, КОЛИЧЕСТВО (РАЗЛИЧНЫЕ рег.Ссылка) КАК КолВо из документ.ЗаявкаНаряд как рег где ИСТИНА и ИСТИНА и ИСТИНА и ИСТИНА и  рег.ДатаСоздания<=&ДатаКон и рег.ДатаСоздания>=&датаНач и ИСТИНА и ИСТИНА и ИСТИНА и ИСТИНА СГРУППИРОВАТЬ ПО Статус, Номер ИТОГИ <<?>>КолВо ПО Статус
   списокСмет.ЗагрузитьЗначения(запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номер"));
38 Галахад
 
гуру
18.03.13
10:02
КОЛИЧЕСТВО (РАЗЛИЧНЫЕ рег.Ссылка)
39 cw014
 
18.03.13
10:03
ИТОГИ СУММА(КолВо) ПО Статус

(37) Не выспался сегодня
40 AnisaL
 
18.03.13
10:03
(38) да) сейчас ошибка в другом
41 Галахад
 
гуру
18.03.13
10:04
ИТОГИ по КОЛИЧЕСТВО (РАЗЛИЧНЫЕ рег.Ссылка)
42 cw014
 
18.03.13
10:04
Простите, сегодня вообще не спал, так что торможу слегка
43 AnisaL
 
18.03.13
10:05
(42) да ладно) нормально все
44 cw014
 
18.03.13
10:05
(41) Вот ты загнул
45 AnisaL
 
18.03.13
10:06
Сегодня многие не выспались (и я в том числе)
46 Галахад
 
гуру
18.03.13
10:07
(44) Ага.
ИТОГИ КОЛИЧЕСТВО (РАЗЛИЧНЫЕ рег.Ссылка)

(45) Аниса открой свой запрос хоть раз в конструкторе.
Он хоть читабельный вид примет.
47 cw014
 
18.03.13
10:08
(46) Тогда уже ИТОГИ КОЛИЧЕСТВО (РАЗЛИЧНЫЕ рег.Ссылка) КАК КолВо
что эквивалентно ИТОГИ СУММА(КолВо)
48 Галахад
 
гуру
18.03.13
10:10
(47) Ага. Чо-то я офигел.
49 AnisaL
 
18.03.13
10:23
результат1 = запрос.Выполнить().Выбрать(ОбходРезультатаЗАпроса.ПоГруппировкам);
   
   пока результат1.Следующий() цикл
       Если результат1.статус = перечисления.СтатусЗаявки.ВРаботе тогда
           враб =  результат1.КолВо;
       КонецЕсли;
       Если результат1.статус = перечисления.СтатусЗаявки.Выполнена тогда
           вып = результат1.Колво;
       КонецЕсли;
       Если результат1.статус = перечисления.СтатусЗаявки.НеПрисвоенна тогда
           непр = результат1.Колво;
       КонецЕсли;
   конецЦикла;
50 cw014
 
18.03.13
10:28
(49) И?
51 AnisaL
 
18.03.13
10:29
(50) все работает)) спасибо!!
52 AnisaL
 
18.03.13
10:32
(51) ну для понятности еще вот:
   списокСмет = новый списокЗначений;
   списоксмет.ЗагрузитьЗначения(запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номер"));
   документСписок.Отбор.номер.видСравнения = ВидСравнения.ВСписке;
   документСписок.Отбор.номер.значение = списокСмет;
   документСписок.Отбор.номер.использование = истина;
53 AnisaL
 
18.03.13
10:39
Спасибо еще раз - все работает очень быстро !(по сравнению как было)