![]() |
![]() |
![]() |
|
СКД: Группировка в запросе | ☑ | ||
---|---|---|---|---|
0
ПаDонаG
21.07.09
✎
08:25
|
в конфе ТиС: есть необходимость выбрать приходные накладные - > из них выбрать товары, принадлежащие определенной группе и вывести все товары, удовлетворяющие условию (т.е. из выбранной группы) построчно с количеством. что-то неправильно группировки работают:
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ПриходнаяНакл = Документ.ПриходнаяНакл.ТекущийДокумент; |ДатаДок = Документ.ПриходнаяНакл.ДатаДок; |НомерДок = Документ.ПриходнаяНакл.НомерДок; |Наименование = Документ.ПриходнаяНакл.Товар.Наименование; |Страна = Документ.ПриходнаяНакл.Товар.СтранаИзготовитель; |Артикул = Документ.ПриходнаяНакл.Товар.Артикул; |Количество = Документ.ПриходнаяНакл.Количество; |Товар = Документ.ПриходнаяНакл.Товар; |Клиент = Документ.ПриходнаяНакл.Клиент; |Функция ЛитровСумма = Сумма(Количество*Артикул); |Группировка Товар без групп; |Группировка ПриходнаяНакл; |Условие(Товар в ВыбГруппа); |"//}}ЗАПРОС если это возможно - как правильно сделать группировки? |
|||
1
Vitello
21.07.09
✎
08:27
|
|Группировка ПриходнаяНакл;
убери. |
|||
2
Ёпрст
гуру
21.07.09
✎
08:27
|
(0) в чем выражается "неправильность" ?
|
|||
3
dk
21.07.09
✎
08:27
|
добавь группировку товар
или строка документа |
|||
4
dk
21.07.09
✎
08:27
|
хотя торможу
|
|||
5
ПаDонаG
21.07.09
✎
08:28
|
(1) тогда останутся только последние значения количеств
|
|||
6
ПаDонаG
21.07.09
✎
08:29
|
(2) не всё количество выбирает, сейчас на маленьком периоде смотрю что именно не берет
|
|||
7
Vitello
21.07.09
✎
08:29
|
(5)Так, а ты что хочешь получить то?
|
|||
8
ПаDонаG
21.07.09
✎
08:32
|
все приходные накладные, а из них все товары с количеством
приход. накладная | товар | количество в группировке по приходной накладной |
|||
9
Ёпрст
гуру
21.07.09
✎
08:32
|
(6) Не верю.. получаешь ровно то, что просишь.. А по-поводу количества, поди смотришь его как Запрос.Количество ? :))))))))))))))))))))))
Тогда не удивительно...Функцию добавь , чтоб количество суммировал. |
|||
10
Valery
21.07.09
✎
08:33
|
Я бы выкинул из запроса такие позиции как
|Наименование = Документ.ПриходнаяНакл.Товар.Наименование; |Страна = Документ.ПриходнаяНакл.Товар.СтранаИзготовитель; |Артикул = Документ.ПриходнаяНакл.Товар.Артикул; невижу в них смысла ели есть |Товар = Документ.ПриходнаяНакл.Товар; К решению сути вопроса это не относится, так для оптимизации. (6) чудес не бывает, значит может по условию не проходит. |
|||
11
ПаDонаG
21.07.09
✎
08:35
|
(9) в том то всё и дело, что не надо мне функцию!! с ней правильно считает, а надо прямо построчно
|
|||
12
ПаDонаG
21.07.09
✎
08:36
|
(9) чтобы все строки вывел выбранные, не объединяя и не суммирую кол-во
|
|||
13
Darych
21.07.09
✎
08:36
|
мне вот это понравилось: "Сумма(Количество*Артикул)"
|
|||
14
Ёпрст
гуру
21.07.09
✎
08:36
|
(11) Тогда выкини |Группировка Товар и заместо неё |Группировка СтрокаДокумента;
|
|||
15
Ёпрст
гуру
21.07.09
✎
08:36
|
(13) Чем ?
|
|||
16
ПаDонаG
21.07.09
✎
08:37
|
(13) ну тут свои заморочки, там другие данные, просто поле с таким наименованием осталось
|
|||
17
Darych
21.07.09
✎
08:37
|
зачем их перемножать?
|
|||
18
Valery
21.07.09
✎
08:38
|
(17) там литраж у нах забит.
|
|||
19
Ёпрст
гуру
21.07.09
✎
08:38
|
(17) Ну мало ли, что человек в артикуле хранит, например, ёмкость или доп. коэффициент.
|
|||
20
ПаDонаG
21.07.09
✎
08:39
|
(18) а ты откуда знаешь? )))
|
|||
21
Darych
21.07.09
✎
08:39
|
аа... типа название реквизита оставил, чтоб никто не догодалсо
|
|||
22
ПаDонаG
21.07.09
✎
08:39
|
(14) а как объявить строкуДокумента в запросе?
|
|||
23
Vitello
21.07.09
✎
08:40
|
(22)Просто сделай как в (14)
|
|||
24
Ёпрст
гуру
21.07.09
✎
08:40
|
(22) Вот прям так как в (14) и копипасти.. СтрокаДокумента - предопределенная группировка в запросе.
|
|||
25
Ёпрст
гуру
21.07.09
✎
08:43
|
Да.. еще |Группировка ПриходнаяНакл; либо сдвинь наверх, либо вообще выкинь..
|
|||
26
ПаDонаG
21.07.09
✎
08:45
|
(22) выкидывал - не то, сдвигал - опять не то показывает :-(
чёт я запутался - должно ж работать |
|||
27
Ёпрст
гуру
21.07.09
✎
08:48
|
Ё...
|Группировка ПриходнаяНакл; |Группировка СтрокаДокумента; |Условие(Товар в ВыбГруппа); Запрос.Выполнить(ТекстЗапроса); Запрос.Выгрузить(ТЗ,1,0); |
|||
28
Ёпрст
гуру
21.07.09
✎
08:48
|
+27 ТЗ.ВыбратьСтроку()...
|
|||
29
ПаDонаG
21.07.09
✎
08:49
|
(27) ну да, только я сразу в печ.форму вывожу
|
|||
30
DrZombi
гуру
21.07.09
✎
08:50
|
(26)Если тебе нужен из документа строчки, то пишешь такой запрос:
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ПриходнаяНакл = Документ.ПриходнаяНакл.ТекущийДокумент; |Группировка ПриходнаяНакл; |"//}}ЗАПРОС А ужо в цикле делаешь след ТЗ_Строк=СоздатьОбъект("ТаблицаЗначений"); Пока Запрос.Группировка(1)=1 цикл Док=Запрос.ПриходнаяНакл; ТЗ_Строк.Очистить(); Док.ВыгрузитьТабличнуюЧасть(ТЗ_Строк); ТЗ_Строк.ВыбратьСтроки(); ... И в цикле перебираешь нужный тебе товар ;) КонецЦикла; |
|||
31
Ёпрст
гуру
21.07.09
✎
08:51
|
(30) П...ц
|
|||
32
Ёпрст
гуру
21.07.09
✎
08:51
|
(29) и... есть какая то разница ?
|
|||
33
Darych
21.07.09
✎
08:51
|
(30) а зачем запрос тогда)))))))))))))))))))))))?
|
|||
34
DrZombi
гуру
21.07.09
✎
08:52
|
(31)Человеку надо построчно без группировок ;)
Вот пусчай перебирает по циклу ;) |
|||
35
DrZombi
гуру
21.07.09
✎
08:52
|
(33)А вот тут ты правельно заметил, но заметит ли аВтор?
|
|||
36
ПаDонаG
21.07.09
✎
08:53
|
(34) группировка только по приходной накладной
но без запроса много дольше будет, об этом я уже думал |
|||
37
DrZombi
гуру
21.07.09
✎
08:54
|
(36)А счего ты решил?
Но и в запросе можно добавить: Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ПриходнаяНакл = Документ.ПриходнаяНакл.ТекущийДокумент; |Товар = Документ.ПриходнаяНакл.Товар; |Группировка ПриходнаяНакл; |Условие(Товар в ВыбГруппа); |"//}}ЗАПРОС |
|||
38
DrZombi
гуру
21.07.09
✎
08:55
|
(36)И будут у тебя накладные только с нужным товаром, но и все ровно тебе нужно в цикле обрабатывать условие
|
|||
39
DrZombi
гуру
21.07.09
✎
08:56
|
(36)Если бы у тебя была SQL база, то это можно было бы сделать одним запросом.
|
|||
40
Ёпрст
гуру
21.07.09
✎
08:58
|
(39) Ипать.. а в файловом варианте ужо нельзя ? Я что-то пропустил в этой жизни ?
|
|||
41
ПаDонаG
21.07.09
✎
08:58
|
(37) да я понял это, но хотел всё запросом выбрать
вот о том и речь! в вопросе как раз и написано "ЕСЛИ ЭТО ВОЗМОЖНО - как...." |
|||
42
Darych
21.07.09
✎
08:58
|
(39) а чем джет или фокс плох для дбы?
|
|||
43
Ёпрст
гуру
21.07.09
✎
08:58
|
(38) какое условие ? Какой нах цикл ?
|
|||
44
Ёпрст
гуру
21.07.09
✎
08:59
|
(41) Пилять.. как в (27)
|
|||
45
Darych
21.07.09
✎
08:59
|
блн.. прс-ка все написал.. аавтор клюет
|
|||
46
ПаDонаG
21.07.09
✎
09:01
|
(32) разницы нет (44) НЕ РАБОТАЕТ! - (26)
|
|||
47
Darych
21.07.09
✎
09:02
|
точно птица
|
|||
48
Ёпрст
гуру
21.07.09
✎
09:03
|
(46) показывай весь текст запроса и его вывод..
ВСЁ работает, если что. |
|||
49
ПаDонаG
21.07.09
✎
09:04
|
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ПриходнаяНакл = Документ.ПриходнаяНакл.ТекущийДокумент; |ДатаДок = Документ.ПриходнаяНакл.ДатаДок; |НомерДок = Документ.ПриходнаяНакл.НомерДок; |Наименование = Документ.ПриходнаяНакл.Товар.Наименование; |Страна = Документ.ПриходнаяНакл.Товар.СтранаИзготовитель; |Артикул = Документ.ПриходнаяНакл.Товар.Артикул; |Количество = Документ.ПриходнаяНакл.Количество; |Товар = Документ.ПриходнаяНакл.Товар; |Клиент = Документ.ПриходнаяНакл.Клиент; //|Функция КоличествоСумма = Сумма(Количество); |Функция ЛитровСумма = Сумма(Количество*Артикул); |Группировка ПриходнаяНакл; |Группировка СтрокаДокумента; |Условие(Товар в ВыбГруппа); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Товар Таб.ВывестиСекцию("ПриходнаяНакл"); КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); |
|||
50
ПаDонаG
21.07.09
✎
09:05
|
(47) точно, только не та! зае..ся повторять одно и тоже по неск-ко раз
|
|||
51
Valery
21.07.09
✎
09:05
|
Группировку товар первой надо добавить.
Я бы конечно через регистры слепил. |
|||
52
Ёпрст
гуру
21.07.09
✎
09:05
|
(49) Это пять..
И где Обход 2-ой Группировки запроса ??????????????????????? |
|||
53
ПаDонаG
21.07.09
✎
09:07
|
(52) бляяя... сорри! говорю ж запутался уже
|
|||
54
Ёпрст
гуру
21.07.09
✎
09:07
|
(51) Зачем ? Он же хочет видеть так :
Приход Товар1 Товар2 Приход2 Товар1 Товар2 .... Автор так надо ? Или наеборот? Товар1 Приход1 Приход2 Товар2 Приход1 Приход2 |
|||
55
Valery
21.07.09
✎
09:07
|
Я предполагал 2 вариант
|
|||
56
Valery
21.07.09
✎
09:09
|
У него так в (0) указано
|
|||
57
ПаDонаG
21.07.09
✎
09:09
|
(54) в (8) написал как вывод происходит
|
|||
58
Ёпрст
гуру
21.07.09
✎
09:10
|
(57) значит, оставляй как есть..и всё там работает..Обходи первую группировку - имей документ, обходи 2-ую группировку по строкам - имей свой товар и количество.
|
|||
59
ПаDонаG
21.07.09
✎
09:12
|
(58) спасибо дружище! всё работает
тупанул немного, извини |
|||
60
ПаDонаG
21.07.09
✎
09:12
|
всем спасибо!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |