|
Разгруппировать в запросе | ☑ | ||
---|---|---|---|---|
0
shira84
17.05.19
✎
10:33
|
В регистре Продажи есть запись:
Бананы 5 шт на сумму 50 руб. Простой запрос ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, Продажи.Количество КАК Количество, Продажи.Сумма КАК Сумма ИЗ РегистрНакопления.Продажи КАК Продажи Как перестроить запрос, так чтобы на выходе получить пять строк, а не одну? Бананы 1шт на сумму 10 руб. Бананы 1шт на сумму 10 руб. Бананы 1шт на сумму 10 руб. Бананы 1шт на сумму 10 руб. Бананы 1шт на сумму 10 руб. |
|||
1
shira84
17.05.19
✎
10:43
|
Надеюсь понятно написал, так чтобы было столько же строк сколько продано по количеству со средней ценой. Нужно для расчета з/п в УНФ (там только запросом), руководитель решил премировать сотрудников при превышении количественного плана продаж.
|
|||
2
palsergeich
17.05.19
✎
10:49
|
Тебе нужны не остатки, а обороты.
Ну сгруппировать приходы и расходы, я думаю сможешь |
|||
3
palsergeich
17.05.19
✎
10:51
|
А все понял, у тебя физически одна строка
|
|||
4
palsergeich
17.05.19
✎
10:52
|
Ну, вопрос зачем? такие вещи делаются в постобработке обычно
|
|||
5
los_hooliganos
17.05.19
✎
10:54
|
Соедини строку с самой собой и подели на "Количество штук продано"
|
|||
6
shira84
17.05.19
✎
10:55
|
Постобработкой никак это в УНФ показатель расчета з/п, там только запрос
|
|||
7
los_hooliganos
17.05.19
✎
10:55
|
Чуть сложнее это сделать таблицу агрегированной. И в ней делать уже деление, соединяя саму с собой
|
|||
8
shadow_sw
17.05.19
✎
10:55
|
если нужно контролировать по продажам сотрудников, сделай вывод по регистратору, там будет понятно все
|
|||
9
palsergeich
17.05.19
✎
10:56
|
(7) Не надо студентам про такие вещи рассказывать.
|
|||
10
shira84
17.05.19
✎
10:56
|
(5) это как?
|
|||
11
los_hooliganos
17.05.19
✎
10:57
|
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура, Продажи.Количество/Делитель.Количество КАК Количество, Продажи.Сумма/Делитель.Количество КАК Сумма ИЗ РегистрНакопления.Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, Продажи.Количество КАК Количество, Продажи.Сумма КАК Сумма ИЗ РегистрНакопления.Продажи КАК Продажи) КАК Делитель ПО Номенклатура = Номенклатура |
|||
12
los_hooliganos
17.05.19
✎
10:58
|
(11) Да вот только строка будет 1 вместо 5 :)
|
|||
13
palsergeich
17.05.19
✎
10:58
|
(5) Но так не получишь 5 строк из одной.
(10) В запросе из строки можно получить среднее значение, то есть цена этой строки банана = 50/5 = среднее 10 И дальше использовать в алгоритмах |
|||
14
RomanYS
17.05.19
✎
10:58
|
(11) Эээ... если была одна запись, то она и останется в результате
|
|||
15
RomanYS
17.05.19
✎
11:00
|
(0) Получить можно, соединив с таблицей-счетчиком. Но зачем - не понятно.
(6) Зачем там 10 записей. Продажи и количество - это реальный пример? |
|||
16
los_hooliganos
17.05.19
✎
11:01
|
(13) Да, для пяти/n- строк нужно будет сделать вспомогательную таблицу с числом максимальное количество проданных.
|
|||
17
shadow_sw
17.05.19
✎
11:03
|
коллеги, вы слишком глубоко копаете...ТС сам не понимает, что ему надо..ну есть агрегат - добавь детализацию и получишь, что хочется
|
|||
18
shira84
17.05.19
✎
11:03
|
(16) да я тож в эту сторону думаю
|
|||
19
Zmich
17.05.19
✎
11:03
|
Создать последовательность натуральных чисел 1, 2, 3, ... (обрубить на максимальном возможном значении), запихать во временную таблицу, соединить твои записи с этой ВТ по условию Продажи.Количество >= числа из ВТ.
|
|||
20
los_hooliganos
17.05.19
✎
11:08
|
(19) Кросс джин, условие в ГДЕ и "<="
|
|||
21
palsergeich
17.05.19
✎
11:13
|
(20) Ставлю сотку, среднего в этой задаче будет достаточно
|
|||
22
shira84
17.05.19
✎
11:19
|
(19) пытаюсь сделать так
|
|||
23
Zmich
17.05.19
✎
11:28
|
(20). Соединение левое, условие не в ГДЕ, а в условии соединения, не "<=", а ">=".
ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 0))); ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5, 2))); СтрТЗ = ТЗ.Добавить(); СтрТЗ.Количество = 10; СтрТЗ.Сумма = 500; НР = Новый ТаблицаЗначений; НР.Колонки.Добавить("Счетчик", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 0))); Для Счетчик = 1 По 100 Цикл СтрНР = НР.Добавить(); СтрНР.Счетчик = Счетчик; КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ТЗ.Количество КАК Количество, | ТЗ.Сумма КАК Сумма |ПОМЕСТИТЬ ВремТЗ |ИЗ &ТЗ КАК ТЗ; | |ВЫБРАТЬ | НР.Счетчик КАК Счетчик |ПОМЕСТИТЬ ВремНР |ИЗ &НР КАК НР; | |ВЫБРАТЬ | 1 КАК Количество1, | ВремТЗ.Сумма/ВремТЗ.Количество КАК СуммаСредняя |ИЗ | ВремТЗ | ЛЕВОЕ СОЕДИНЕНИЕ | ВремНР | ПО | ВремТЗ.Количество >= ВремНР.Счетчик"; Запрос.УстановитьПараметр("ТЗ", ТЗ); Запрос.УстановитьПараметр("НР", НР); Результат: 1 50 1 50 1 50 1 50 1 50 1 50 1 50 1 50 1 50 1 50 |
|||
24
Вася Теркин
17.05.19
✎
11:41
|
(11) Чем отличается от
ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, Продажи.Количество/Продажи.Количество КАК Количество, Продажи.Сумма/Продажи.Количество КАК Сумма ИЗ РегистрНакопления.Продажи КАК Продажи ? |
|||
25
shira84
17.05.19
✎
12:06
|
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура, Продажи.Количество КАК Количество, Продажи.Сумма КАК Сумма ПОМЕСТИТЬ ВРТЗ ИЗ РегистрНакопления.Продажи КАК Продажи; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 10 * t1.a + t2.b КАК Поле1 ПОМЕСТИТЬ ВРНР ИЗ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК t1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 1 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ОБЪЕДИНИТЬ ВЫБРАТЬ 10) КАК t2 ПО (ИСТИНА) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 1 КАК Количество, ВРТЗ.Номенклатура КАК Номенклатура, ВРТЗ.Сумма / ВРТЗ.Количество КАК Цена ИЗ ВРТЗ КАК ВРТЗ ЛЕВОЕ СОЕДИНЕНИЕ ВРНР КАК ВРНР ПО (ВРТЗ.Количество >= ВРНР.Поле1) |
|||
26
shira84
17.05.19
✎
12:06
|
(23) Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |