| 
    
            
         
         | 
    
  | 
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* забыл дописать     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |