|
Получить последнюю цену номенклатуры контрагента | ☑ | ||
---|---|---|---|---|
0
Lancer666
05.01.13
✎
01:58
|
Здравствуйте, уважаемые специалисты. Проблема такая: необходимо получить последнюю цену, также дату и контрагента закупа номенклатуры (конфигурация УПП). Эта информация хранится в регистре ЦеныНоменклатурыКонтрагентов. Я одним вложенным запросом получил Срез последних из этого регистра, сделал группировку по номенклатуре, а период получил максимальный. Потом соединил тот же регистр срез последних с подзапросом по номенклатуре и периоду (запрос привожу ниже). Всё было бы хорошо, но если одна и таже номенклатура имеет напривет два поступления от 30.11.12 23.59.59 от разных контрагентов и соответственно 2 записи с этим периодом в регистре, то в результате номенклатура задваивается, подскажите как этого можно избежать, учитывая, что если есть два поступления одним максимальным периодом, взять можно любой из них..
Мой запрос: ВЫБРАТЬ ЦеныНоменклатурыКонтрагентовСрезПоследних.Период КАК Период, ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена, ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен.Владелец КАК Контрагент ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ТекДата, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура, МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ТекДата, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) КАК МаксПериод ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Период = МаксПериод.Период И ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура = МаксПериод.Номенклатура |
|||
1
1C-band
05.01.13
✎
02:13
|
||||
2
Lancer666
05.01.13
✎
02:41
|
Спасибо, но если честно, не очень понял, как мне может помочь эта статья.
|
|||
3
Нуф-Нуф
05.01.13
✎
04:11
|
Сгруппируй с максимумом по контрагенту, будь мужиком, блеать!
|
|||
4
Lancer666
06.01.13
✎
01:55
|
Всем спасибо за помощь. Решил вопрос с помощью следующего запроса:
ВЫБРАТЬ ЦеныНоменклатурыКонтрагентовСрезПоследних.Период КАК Период, ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена, ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен.Владелец КАК Контрагент ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ДатаСреза, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период, ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура, МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен) КАК ТипЦен ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ДатаСреза, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период, ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ДатаСреза, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) КАК ГруппировкаНоменклатура ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Период = ГруппировкаНоменклатура.Период И ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура = ГруппировкаНоменклатура.Номенклатура СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) КАК МаксПериод ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура = МаксПериод.Номенклатура И ЦеныНоменклатурыКонтрагентовСрезПоследних.Период = МаксПериод.Период И ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен = МаксПериод.ТипЦен |
|||
5
Рэйв
06.01.13
✎
02:00
|
Я бы сказал жестче.
Пригласи специалиста блеать! |
|||
6
Lancer666
06.01.13
✎
02:31
|
Ну а что не так? Задача решена полностью. Для каждой номенклатуры найдена дата последней установленной цены с указанием контрагента и периода. В случае если на максимальный период выпадает не одна запись, то отбирается случайная запись (по максимальному контрагенту). Что не так то?
|
|||
7
IOL
06.01.13
✎
02:33
|
К ста, очень хорошие примеры в КЗ, для понимания, первый запрос: нужно выбрать разрез и максимумы, второй запрос, присоединить к максимум(период, дата), то, что есть. Все пристрастно обрежется.
|
|||
8
IOL
06.01.13
✎
02:34
|
(6) Если из периодического регистра, то да, а если из набора, к примеру, накладных - фиаско
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |