|   |   | 
| 
 | Помогите объединить два запроса по номенклатуре | ☑ | ||
|---|---|---|---|---|
| 0
    
        Владимир1С 11.06.14✎ 13:15 | 
        Суть: есть индивидуальные цены для разных контрагентов,
 в прайс для конкретных контрагентов нужно выводить цены с учётом индивидуальных скидок. Пытаюсь сделать это через объединение, а система принудительно группирует по полям цен, которые должны у меня располагаться в одной строке, и вместо одной строки(как надо) делает две. Запрос = новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура, | МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * (1 + ЦеныНоменклатурыСрезПоследних.ТипЦен.ПроцентСкидкиНаценки / 100)) КАК ЦенаШтуки, | МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаДляОтчетов.Коэффициент * (1 + ЦеныНоменклатурыСрезПоследних.ТипЦен.ПроцентСкидкиНаценки / 100)) КАК ЦенаКороба |ИЗ | РегистрНакопления.ТоварыНаСкладах.Обороты( | &НачПериода, | &ТекущийПериод, | , | Склад В ИЕРАРХИИ (&Склад) | И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ТоварыНаСкладахОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | &ТекущийПериод, | ТипЦен = &ТипЦен | И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | ТоварыНаСкладахОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура) | И ТоварыНаСкладахОбороты.КоличествоОборот <> 0 | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОбороты.Номенклатура | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура, | МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * (1 + ЦеныНоменклатурыСрезПоследних.ТипЦен.ПроцентСкидкиНаценки / 100)), | МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаДляОтчетов.Коэффициент * (1 + ЦеныНоменклатурыСрезПоследних.ТипЦен.ПроцентСкидкиНаценки / 100)) |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущийПериод, ) КАК ЦеныНоменклатурыСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей.СрезПоследних(&ТекущийПериод, Контрагент = &ВходКонтр) КАК ТипыЦенПоГруппамНоменклатурыДляПокупателейСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты | ПО ТипыЦенПоГруппамНоменклатурыДляПокупателейСрезПоследних.Контрагент = Контрагенты.Ссылка | ПО ЦеныНоменклатурыСрезПоследних.ТипЦен = ТипыЦенПоГруппамНоменклатурыДляПокупателейСрезПоследних.ТипЦен |ГДЕ | Контрагенты.Ссылка = &ВходКонтр | |СГРУППИРОВАТЬ ПО | ЦеныНоменклатурыСрезПоследних.Номенклатура | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Номенклатура" ,Номенклатура ); Запрос.УстановитьПараметр("ТипЦен" ,ТипЦен ); Запрос.УстановитьПараметр("ВходКонтр" ,Контрагент ); Запрос.УстановитьПараметр("НачПериода" ,НачалоПериода); Запрос.УстановитьПараметр("ТекущийПериод",ТекущийПериод); Запрос.УстановитьПараметр("Склад" ,Склад ); ТаблВых = Запрос.Выполнить().Выгрузить(); ТаблВых.ВыбратьСтроку("Проверка результата запроса"); | |||
| 1
    
        Ёпрст гуру 11.06.14✎ 13:21 | 
        упорядочивание там не имеет никакого смысла     | |||
| 2
    
        Ёпрст гуру 11.06.14✎ 13:21 | 
        а что вам надо - не ясно     | |||
| 3
    
        Владимир1С 11.06.14✎ 13:23 | 
        Нужно получить цены: либо обычную, либо спецЦену, если есть на то указание в ТипыЦенПоГруппамНоменклатурыДляПокупателейСрезПоследних     | |||
| 4
    
        Ёпрст гуру 11.06.14✎ 13:24 | 
        А нафига для этих целей выгребать номенклатуру из регистра ?     | |||
| 5
    
        Ёпрст гуру 11.06.14✎ 13:24 | 
        Зачем вообще первый запрос сдался ?!     | |||
| 6
    
        Владимир1С 11.06.14✎ 13:25 | 
        (5)не все товары имеют спец цены.     | |||
| 7
    
        Ёпрст гуру 11.06.14✎ 13:27 | 
        (6) Хорошо. Зачем нужен запрос к регистру, а не к регистру сведений, из которого достаём все цены ?     | |||
| 8
    
        Владимир1С 11.06.14✎ 13:29 | 
        (7) Чтобы вытащить только те товары, у которых были обороты за какой-то предыдущий период.     | |||
| 9
    
        Ёпрст гуру 11.06.14✎ 13:29 | 
        Или вам нужны все цены, только того товара, который продали за определенный период ?
 Если да, то зачем вам нужен второй запрос ? Получить цену для этого же товара конкретного клиентоса ? Если да, то делать надо так: выбрать Товар как Товар, Цена как Цена, 0 как ЦенаДляКлиентоса ИЗ.... Объединить всё выбрать Товар как Товар, 0, ЦенаДляКлиентоса т.е на выходе иметь 2 цены | |||
| 10
    
        Ёпрст гуру 11.06.14✎ 13:30 | 
        если надо в одной строке, то делать фулл джоин.     | |||
| 11
    
        Ёпрст гуру 11.06.14✎ 13:30 | 
        а не объединение     | |||
| 12
    
        Владимир1С 11.06.14✎ 13:34 | 
        (10) в терминах 1С можно? чтобы понять однозначно     | |||
| 13
    
        Владимир1С 11.06.14✎ 13:40 | 
        (11) Из регистра цен нужно выбрать цену другого типа, не того, что задан в форме настройки отчёта, а того, что получается из ТипыЦенПоГруппамНоменклатурыДляПокупателей     | |||
| 14
    
        Ёпрст гуру 11.06.14✎ 14:21 | 
        (10) полное соединение     | |||
| 15
    
        Владимир1С 11.06.14✎ 14:26 | 
        (14) Спасибо.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |