Имя: Пароль:
1C
1С v8
v8: Не могу написать запрос с выбором процента скидки исходя из суммы покупки! =(
0 Pingwin
 
26.06.12
13:55
Есть Регистр.Продажи в нём измерение Контрагент и ресурс Сумма.
Есть Справочник.СистемаСкидок в нём у каждого элемента Табличная часть Скидки с Реквизитами Сумма и Процент.
Каждый Справочник.Контрагент имеет реквизит .СистемаСкидок .
Нужно построить отчёт, в кот. войдёт Контрагент и ПроцентСкидки.
Написал запрос:
Выбрать
| РегПродажи.Контрагент,
| РегПродажи.Сумма,
| Контрагент.СистемаСкидок.Скидки. (
|   СистемаСкидок.Скидки.Сумма,
|   СистемаСкидок.Скидки.Процент) как СистемаСкидки
| Из РегистрНакопления.Продажи.Остатки КАК РегПродажи

И тут затуп, как внутри запроса перебрать строки системы скидок и выудить от туда процент!? Никак? Только в выборке?
1 Ненавижу 1С
 
гуру
26.06.12
13:56
не надо так ТЧ в запросе делать

| Контрагент.СистемаСкидок.Скидки. (
|   СистемаСкидок.Скидки.Сумма,
|   СистемаСкидок.Скидки.Процент) как СистемаСкидки

даже в 1С перестали так писать запросы
2 aleks-id
 
26.06.12
14:00
использовать МАКСИМУМ и условие соединения суммарегистра <= сумматабчасти
3 andrewks
 
26.06.12
14:00
(1) неужели когда-то это было модно?
4 andrewks
 
26.06.12
14:02
(0) про соединения слышал?
5 aleks-id
 
26.06.12
14:05
(3) в типовых 8.0 нет-нет да проскакивало
6 Pingwin
 
27.06.12
13:22
(1) А как надо? И что изменится?!
(2) Не понял кого с кем соединяем?! СистемаСкидки получается всегда Результатом Запроса, т.к. содержит 3 строки и более! Если не сложно, хотябы примерный текст вашей идеи!
7 Pingwin
 
04.07.12
01:44
Люди, как получить таблицу вида:
Контрагент | СуммаПродажи | СуммаСкидки | ПроцентСкидки
Вася       |   2000       | 1000        | 2%
Вася       |   2000       | 1500        | 3%
Вася       |   2000       | 2000        | 5%
Петя       |   3800       | 1000        | 2%
Петя       |   3800       | 1500        | 3%
Петя       |   3800       | 2000        | 5%
Хелп ми!!!
8 Ненавижу 1С
 
гуру
04.07.12
08:35
РегистрНакопления.Продажи содержит как сумму со скидкой, так и без, посчитать процент сможете?
9 JeyRico
 
04.07.12
09:13
Это самописка?
В регистр продажи так то неплохо бы писать еще и предоставленную скидку по этой продаже.
10 LAAry
 
04.07.12
09:25
Выбрать
РегПродажи.Контрагент,
Максимум(РегПродажи.Сумма) КАК Сумма,
Максимум(Скидки.Сумма) КАК БазаСкидки
Из РегистрНакопления.Продажи.Остатки КАК РегПродажи
ЛевоеСоединение Справочник.СистемаСкидок.Скидки как скидки
по РегПродажи.Контрагент.СистемаСкидок = Скидки.Ссылка и РегПродажи.Сумма>Скидки.Сумма
Группировать по РегПродажи.Контрагент

Потом Еще раз соединяешь со таб. частью справочника системы скидок по ссылке и сумме и получаешь нужный процент. Если проценты ВСЕГДА растут от базы скидки, можно 2-й раз не соединять и брать максимум от процента.
11 sinisterfrag
 
04.07.12
09:32
Разжевал. осталось только проглатить.

ВЫБРАТЬ
   ПродажиОбороты.Контрагент КАК Контрагент,
   ЕСТЬNULL(ПродажиОбороты.СуммаОборот, 0) КАК СуммаПродажи
ПОМЕСТИТЬ ВтПродажи
ИЗ
   РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

ИНДЕКСИРОВАТЬ ПО
   Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Контрагенты.Ссылка КАК Контрагент,
   СистемаСкидокСкидки.Сумма,
   СистемаСкидокСкидки.Процент
ПОМЕСТИТЬ ВтСкидки
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СистемаСкидок.Скидки КАК СистемаСкидокСкидки
       ПО Контрагенты.СистемаСкидок = СистемаСкидокСкидки.Ссылка

ИНДЕКСИРОВАТЬ ПО
   Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВтПродажи.Контрагент,
   ВтПродажи.СуммаПродажи,
   МАКСИМУМ(ВтСкидки.Процент) КАК Процент
ИЗ
   ВтПродажи КАК ВтПродажи
       ЛЕВОЕ СОЕДИНЕНИЕ ВтСкидки КАК ВтСкидки
       ПО ВтПродажи.Контрагент = ВтСкидки.Контрагент
           И ВтПродажи.СуммаПродажи >= ВтСкидки.Сумма

СГРУППИРОВАТЬ ПО
   ВтПродажи.Контрагент,
   ВтПродажи.СуммаПродажи
12 sinisterfrag
 
04.07.12
09:41
PS aleks-id
использовать МАКСИМУМ и условие соединения суммарегистра <= сумматабчасти
если перевести на язык логики то у тебя получается
"выбираем из справочники.скидки макс процент из больших или равных процентов"
(т.е. ты выберешь не тот процент)
т.е. если сумма продаж то по твоей логике ты выберишь 3 строку.

Контрагент | СуммаПродажи | СуммаСкидки | ПроцентСкидки
Вася       |   2000       | 1000          | 2%
Вася       |   2000       | 1500        | 3%
Вася       |   2000       | 2000        | 5%

думаю это не правильно
нужно использовать максимум при условии что суммарегистра >= сумматабчасти
13 sinisterfrag
 
04.07.12
09:42
сумма продаж 1700* забыл дописать