|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
Джон Тирби
21.05.13
✎
18:52
|
Необходимо выбрать первые 3 записи из регистра Продажи по каждому контрагенту и номенклатуре(массив контрагентов и номенклатуры передать в параметры). То есть в результате получить выборку сколько каждый контрагент покупал каждой номенклатуры последние 3 раза. Мыслей "нуль", пните в нужном направлении плиз. Заранее спасибо.
|
|||
1
ИсчадиеADO
21.05.13
✎
19:18
|
СП почитать?
|
|||
2
ИсчадиеADO
21.05.13
✎
19:21
|
В сп открой "Работа с запросами" - "Синтаксис текста запросов" и наслаждайся
|
|||
3
rotting
21.05.13
✎
19:22
|
Работу за тебя делать не будут, что уже сделал?
|
|||
4
Джон Тирби
21.05.13
✎
19:23
|
Синтаксис примерно знаю, не соображу как запрос логически построить
|
|||
5
Allexe
21.05.13
✎
19:25
|
ВЫБРАТЬ ПЕРВЫЕ 3
Продажи.Клиент, Продажи.Номенклатура, Продажи.Регистратор ИЗ РегистрНакопления.Продажи КАК Продажи |
|||
6
Allexe
21.05.13
✎
19:25
|
(5) Ссори не то :)
|
|||
7
zak555
21.05.13
✎
19:27
|
(5) надо же с конца -- сортировку
|
|||
8
Джон Тирби
21.05.13
✎
19:28
|
(3)Сделал вот что, но как выбрать первые 3 не соображу
ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ПродажиОбороты.Контрагент КАК Контрагент, ПродажиОбороты.КоличествоОборот КАК КоличествоОборот, ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот, ПродажиОбороты.ДокументПродажи.ТорговаяТочка КАК ТорговаяТочка ИЗ РегистрНакопления.Продажи.Обороты( &НачалоПериода, &ОкончаниеПериода, Авто, Номенклатура В (&Ассортимент) И ДокументПродажи.ТорговаяТочка В (&СписокПартнеров)) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Контрагент, ПродажиОбороты.Номенклатура, ПродажиОбороты.ДокументПродажи, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.ДокументПродажи.ТорговаяТочка УПОРЯДОЧИТЬ ПО ТорговаяТочка, Номенклатура, ПродажиОбороты.ДокументПродажи.Дата УБЫВ ИТОГИ ПО ТорговаяТочка, Номенклатура, ДокументПродажи, КоличествоОборот, СтоимостьОборот |
|||
9
Allexe
21.05.13
✎
19:37
|
ВЫБРАТЬ ПЕРВЫЕ 3
Продажи.Регистратор КАК Регистратор ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Номенклатура = &Номенклатура УПОРЯДОЧИТЬ ПО Продажи.Регистратор.Дата УБЫВ |
|||
10
Джон Тирби
21.05.13
✎
19:40
|
Данный запрос вернет 3 записи а мне нужно Первые 3 по каждой номенклатуре и контрагенту...из списка номенклатуры и списка контрагентов
|
|||
11
ИсчадиеADO
21.05.13
✎
19:56
|
а выбрать первые 3 с внутренним соединением не работает?
|
|||
12
Fragster
гуру
21.05.13
✎
20:00
|
||||
13
Fragster
гуру
21.05.13
✎
20:00
|
ВЫБРАТЬ
1 КАК Период, "А" КАК Товар ПОМЕСТИТЬ Данные ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2, "А" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3, "А" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2, "Б" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3, "Б" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4, "Б" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Данные.Период, Данные.Товар ИЗ Данные КАК Данные ГДЕ Данные.Период В (ВЫБРАТЬ ПЕРВЫЕ 2 Вложенный.Период ИЗ Данные КАК Вложенный ГДЕ Вложенный.Товар = Данные.Товар УПОРЯДОЧИТЬ ПО Вложенный.Период УБЫВ) |
|||
14
RomanYS
21.05.13
✎
20:59
|
(0) нужны по 3 записи по каждой паре номенклатура-контрагент, я правильно понял?
|
|||
15
RomanYS
21.05.13
✎
21:51
|
Если нужно то, что в (14) получить чистым запросом
"ВЫБРАТЬ РАЗЛИЧНЫЕ Продажи.Регистратор, Продажи.Регистратор.МоментВремени КАК РегистраторМоментВремени, Продажи.Номенклатура КАК Номенклатура, Продажи.Контрагент КАК Контрагент ПОМЕСТИТЬ ВТ ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Номенклатура В(&СписокНоменклатура) И Продажи.Контрагент В(&СписокКонтрагент) ИНДЕКСИРОВАТЬ ПО Контрагент, Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Регистратор, ВТ.Номенклатура, ВТ.Контрагент, СУММА(1) КАК НомерПП ИЗ ВТ КАК ВТ ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ1 ПО ВТ.Номенклатура = ВТ1.Номенклатура И ВТ.Контрагент = ВТ1.Контрагент И ВТ.РегистраторМоментВремени <= ВТ1.РегистраторМоментВремени СГРУППИРОВАТЬ ПО ВТ.Регистратор, ВТ.Номенклатура, ВТ.Контрагент ИМЕЮЩИЕ СУММА(1) <= 3" Но на больших объемах лучше наверное постобработка результата запроса. А может быть и СКД, там должны быть системные поля типа "НомерВГруппе". |
|||
16
Allexe
21.05.13
✎
21:59
|
А коррелированный запрос не пойдет?
ВЫБРАТЬ Прод.Номенклатура КАК Номенклатура, Прод.Регистратор ИЗ РегистрНакопления.Продажи КАК Прод ГДЕ Прод.Регистратор В (ВЫБРАТЬ ПЕРВЫЕ 3 Продажи.Регистратор ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Номенклатура = Прод.Номенклатура) УПОРЯДОЧИТЬ ПО Номенклатура |
|||
17
RomanYS
21.05.13
✎
22:02
|
(16) попробуй))
Вряд ли внутренний запрос знает про Прод.Номенклатура |
|||
18
Allexe
21.05.13
✎
22:03
|
(17) Попробовал работает вроде
http://akim-off.blogspot.ru/2013/02/1c8.html вот пример |
|||
19
RomanYS
21.05.13
✎
22:16
|
(18) Да - действительно работает, не ожидал такого от 1С
|
|||
20
Джон Тирби
22.05.13
✎
17:52
|
чето не отрабатывает первые 3, тянет все продажи за весь период
ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.ДокументПродажи КАК ДокументПродажи, ПродажиОбороты.КоличествоОборот КАК КоличествоОборот, ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот, ПродажиОбороты.ДокументПродажи.ТорговаяТочка КАК ТорговаяТочка ИЗ РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты ГДЕ ПродажиОбороты.ДокументПродажи В (ВЫБРАТЬ ПЕРВЫЕ 3 ПродажиОбороты.ДокументПродажи КАК ДокументПродажи ИЗ РегистрНакопления.Продажи.Обороты(, , Авто, Номенклатура В (&Ассортимент) И ДокументПродажи.ТорговаяТочка В (&СписокПартнеров)) КАК ПродажиОбороты) СГРУППИРОВАТЬ ПО ПродажиОбороты.ДокументПродажи.ТорговаяТочка, ПродажиОбороты.Номенклатура, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.ДокументПродажи УПОРЯДОЧИТЬ ПО ТорговаяТочка, Номенклатура, ПродажиОбороты.ДокументПродажи.Дата УБЫВ ИТОГИ ПО ТорговаяТочка, Номенклатура, ДокументПродажи, КоличествоОборот, СтоимостьОборот |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |