![]() |
|
Запрос ищет недостающие цены по остаткам в УТ | ☑ | ||
---|---|---|---|---|
0
AndreykO_38
10.07.14
✎
11:33
|
Комрады, помогите, пожалуйста.
УТ немножко не типовая рел.: 10.3.18.4 Есть запрос, выдает табличку типа: [url=http://tempfile.ru][img]http://img6.tempfile.ru/13190/11f1bbdde6/9fb1a19b3a9f19c228a12f7d.png[/img][/url] В результате тыщщи строк, в том числе "хорошие" ("хорошие" - это когда есть как минимум три типа цен: "закупочные", "розничные 1" и "розничные 2"). Задача состоит в том, чтобы убрать "хорошие" из результата. Вообще это для того, чтобы отобразить список товаров, имеющихся на остатках, но у которых не все типы цен установлены из минимально регламентированного списка типов цен (см. определение "хороших"). Такая ситуация получилась после свёртки базы, если кому интересно. |
|||
1
AndreykO_38
10.07.14
✎
11:36
|
что-то картинка "как-то криво вставилась", вот ссылка:
http://img6.tempfile.ru/13190/11f1bbdde6/9fb1a19b3a9f19c228a12f7d.png или так: [url=http://tempfile.ru/view/13190/11f1bbdde6/9fb1a19b3a9f19c228a12f7d.png][img]http://img1.tempfile.ru/13190/11f1bbdde6/9fb1a19b3a9f19c228a12f7d.pngt.jpg[/img][/url] |
|||
2
floody
10.07.14
✎
12:51
|
переделать запрос, чтобы возвращал:
ном1 цена1 цена2 цена3 ном2 цена1 цена3 ном3 цена2 цена3 ном4 цена1 |
|||
3
braynt
10.07.14
✎
12:54
|
запросом ты можешь получить количество типов цен. если больше двух значит норм.
|
|||
4
AndreykO_38
10.07.14
✎
15:18
|
(2) хм! а вот это мысль! пусть и получится не совсем универсально, но зато по одной строчке на товар... ща попробую
|
|||
5
AndreykO_38
10.07.14
✎
15:20
|
(3) тут ведь ещё важно какие именно это типы цен...
|
|||
6
braynt
10.07.14
✎
16:51
|
список цен вы передаете в качестве параметра?
|
|||
7
AndreykO_38
10.07.14
✎
17:38
|
да, изначально был такой параметр - список типов цен для универсальности, а ну как пользователь пожелает изменить его... но я голову сломал, пытаясь заставить запрос фильтровать результаты именно по минимально достаточному списку типов цен из этого параметра.
А т.к. пользователю наплевать на такой отчет и он(и) начинают паниковать только когда покупатель хочет купить товар, который есть на остатках, но без цены :), можно наплевать и на универсальность. Поэтому я переделал запрос по совету floody, могу привести пример, если интересно. |
|||
8
AndreykO_38
10.07.14
✎
17:55
|
ой, товарищи, не совсем работает.
сам запрос действительно выдает результат типа: ном1 цена1 цена2 цена3 ном2 цена1 цена3 ном3 цена2 цена3 ном4 цена1 но потом для того, чтобы избавиться от "хороших" строчек, ставлю условие: ГДЕ ЦеныЗакупочные.Цена = 0 или ЦеныРозничные1.Цена = 0 или ЦеныРозничные2.Цена = 0 и таблица результата вообще пустая, даже если натравить ЕСТЬNULL на цены... ((( ЧЯДНТ? |
|||
9
mehfk
10.07.14
✎
17:59
|
а где текст запроса?
|
|||
10
МихаилМ
10.07.14
✎
18:07
|
неправильно.
сгруппируйте или отберите различные затем еже раз сгруппируйте с проверкой на количество. перемножение таблиц ненужно. |
|||
11
AndreykO_38
11.07.14
✎
02:01
|
вот текст:
ВЫБРАТЬ
|
|||
12
AndreykO_38
11.07.14
✎
02:19
|
(10) ммм... идея такая: берем таблицу с остатками (уже с ненулевым количеством) и соединяем с тремя одинаковыми таблицами с ценами (с разными параметрами), потому всю эту кашу естественно группируем единственно по товару и суммируем по ценам... и конечно же получается результат, где есть всё - и "хорошие" и плохие, сюда бы условие красиво воткнуть было, вот и воткнул, а оно мне всю малину портит... хм, пока писал, мысль посетила о запихивании всего запроса во вложенный и на выборку из него уже накладывании нужного условия, проверил - работает! :)
|
|||
13
mehfk
11.07.14
✎
05:46
|
Видишь разницу? А она есть
СУММА(ЕСТЬNULL(ЦеныРозничные1.Цена,0)) КАК Розничные1, СУММА(ЕСТЬNULL(ЦеныРозничные2.Цена,0)) КАК Розничные2, СУММА(ЕСТЬNULL(ЦеныЗакупочные.Цена,0)) КАК Закупочные ... ... ... ГДЕ ЦеныЗакупочные.Цена = 0 или ЦеныРозничные1.Цена = 0 или ЦеныРозничные2.Цена = 0 Делай так "ВЫБРАТЬ | Остатки.Номенклатура, | СУММА(Остатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(СУММА(ЦеныРозничные1.Цена), 0) КАК Розничные1, | ЕСТЬNULL(СУММА(ЦеныРозничные2.Цена), 0) КАК Розничные2, | ЕСТЬNULL(СУММА(ЦеныЗакупочные.Цена), 0) КАК Закупочные |ИЗ | (ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток | ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ТоварыНаСкладахОстатки | ГДЕ | ТоварыНаСкладахОстатки.КоличествоОстаток > 0) КАК Остатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦенЗакупочные) КАК ЦеныЗакупочные | ПО Остатки.Номенклатура = ЦеныЗакупочные.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦенРозничные1) КАК ЦеныРозничные1 | ПО Остатки.Номенклатура = ЦеныРозничные1.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦенРозничные2) КАК ЦеныРозничные2 | ПО Остатки.Номенклатура = ЦеныРозничные2.Номенклатура |ГДЕ | (ЕСТЬNULL(ЦеныЗакупочные.Цена, 0) = 0 | ИЛИ ЕСТЬNULL(ЦеныРозничные1.Цена, 0) = 0 | ИЛИ ЕСТЬNULL(ЦеныРозничные2.Цена, 0) = 0) | |СГРУППИРОВАТЬ ПО | Остатки.Номенклатура | |УПОРЯДОЧИТЬ ПО | Остатки.Номенклатура.Наименование" |
|||
14
AndreykO_38
11.07.14
✎
16:14
|
(13) интересно...вообще логично, надо бы запомнить. Спасибо!
|
|||
15
mehfk
11.07.14
✎
16:57
|
Лови еще один запрос в помощь
ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток ПОМЕСТИТЬ ВТ_Остатки ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ТоварыНаСкладахОстатки ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Таб1.Номенклатура, Таб1.ХарактеристикаНоменклатуры, МИНИМУМ(Таб1.КоличествоОстаток) КАК КоличествоОстаток, Таб1.ТипЦен ИЗ (ВЫБРАТЬ ВТ_Остатки.Номенклатура КАК Номенклатура, ВТ_Остатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ВТ_Остатки.КоличествоОстаток КАК КоличествоОстаток, ТипыЦенНоменклатуры.Ссылка КАК ТипЦен ИЗ Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры, ВТ_Остатки КАК ВТ_Остатки ГДЕ ТипыЦенНоменклатуры.Ссылка В(&сзТипЦенНоменклатуры)) КАК Таб1 ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ПО Таб1.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И Таб1.ТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен И Таб1.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры ГДЕ ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) = 0 СГРУППИРОВАТЬ ПО Таб1.Номенклатура, Таб1.ХарактеристикаНоменклатуры, Таб1.КоличествоОстаток, Таб1.ТипЦен УПОРЯДОЧИТЬ ПО Таб1.Номенклатура АВТОУПОРЯДОЧИВАНИЕ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |