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